私たちの課題
アップデート: その後、 いくつか別の課題 についても書きました。
短く具体的な課題を、順不同で挙げます:
-
より良いコンテキスト: コードエディタには多くの情報ソースがあります。開いているファイル、意味的に類似したコードチャンク、シンボリックに関連するクラス、lint の出力、実行トレース、git の履歴、タイピング履歴、外部ドキュメントなどです。私たちは、モデルがユーザーの質問に対して何が最も関連するかを即座に理解できるようにしたいと考えており、現在この課題を解決するために、高速なカスタム reranker モデルを学習しています。各リクエストごとに、さまざまなソースから 50 万トークンを集約し、reranker を使って最も関連性の高い 8k トークンまで絞り込みます。これはモデルの課題であると同時に、ますますインフラの課題にもなっています。
-
「編集のための copilot」: GitHub Copilot は、新しいコードを書く際に低エントロピーなキーストロークを省くうえで非常に役立ちますが、既存のコードブロックに小さくシンプルな変更を加える必要があるときの低エントロピーなキーストロークを減らすことはできません。シンボリックな F2 リネームでは少し複雑すぎるリネームを行う際に必要になる、ナビゲーション、削除、入力のキーストロークを思い浮かべてください。これを実現するには、UX(コーディング中にさりげなく表示される diff)とモデル側(コスト、レイテンシ、インテリジェンスの問題から、単なるプロンプトでは不十分)の両方でのイノベーションが必要になります。
-
制約付き・インフロー型エージェント: 大規模なコードベース向けの、OpenAI の code interpreter をイメージしてください。あなたは制約された少数ステップのエージェントにやってほしいことを伝え、そのエージェントが検索し、コードを書き、実行します。その間、適宜あなたにフィードバックを求めてきます。これを実現するための第一歩として、私たちがいま取り組んでいるのは、数十万トークン分のフォルダ上で動作するこの種のエージェントを作ることです。これがうまくいけば、コードベース全体で動くようにスケールさせていきます。
-
バグ検出: ここには 2 つのモードがあります。(1) バックグラウンドで Cursor が常にファイルを受動的にスキャンして潜在的なバグを見つけるモードと、(2) あなたがデバッグに深く入り込んでいるときに、Cursor があなたの助けを借りながら能動的にバグを探すモードです。ここには興味深いデータ収集の余地がたくさんあります。
-
より大きな編集: Cursor は、ファイル全体、さらにはディレクトリ全体まで変更できるようになるべきです。これは、能力面と UX の両方のチャレンジです。速度の観点では、モデルはすべてを書き直すことなく、変更すべき部分だけを賢く抜き出す必要があります。よい体験にするには、その変更がパースしやすい形でリアルタイムに表示されなければなりません。
-
スケール: 2023 年 10 月 12 日時点で、私たちは 14 億のベクターと 15 万のコードベースをインデックスしています。これは年末までにおそらく 10 倍に増えるでしょう。すでに Rust で、非常に高速な Merkle-tree ベースのコードベース同期エンジンを構築しており、近いうちにカスタムのインデックスシステムも構築する必要が出てくると考えています。
将来のアイデア:
-
Time warp: 次の 15 分間であなたが行う、ファイルをまたぐコード変更を予測して表示します。すべての挿入/削除を一括で受け入れるためのキー操作は 1 つだけです。
-
Understanding: 任意のコードベース内のあらゆる概念を、モデルの重みの中で深く理解できるようにするべきです。
-
Reader mode: 任意の詳細レベルでのドキュメントと、必要に応じて関連するコードパスを案内して説明してくれるボットによって、コード理解をほぼ労力なく行えるようにします。
-
Pseudo-code mode: コードの「アウトライン」表現を編集し、その変更がソースレベルへ自動的に反映されるようにします。
-
スタックトレースを二度と心配しない: IDE がただ理解して、コードを自動的に修正してくれるようにします。
いま考えている課題をすべて集約しようとしましたが — そしてこれは、1 日 12 時間自分たちで使うプロダクトを作ることの素晴らしさの 1 つなのですが — 私たちは常に新しいアイデアを思いつき、優先順位を入れ替えているため、これを最終的なロードマップとみなすべきではありません。それでも、私たちが毎日どんなことに頭を使っているのか、その感触は伝わるのではないかと思います。
ここまで読んでくださったということは、私たちが関心を持っているこれらの課題に、あなたも何らかの関心をお持ちである可能性が高そうです :) もしそうなら、ぜひ私たちに加わることを検討してみてください! 私たちと一緒に働くことをきっと気に入っていただけると思う理由が、ほかにもいくつかあります:
-
みんなCursorを気に入って使ってくれています。 これまでの成長にはとても満足しています。
-
ここでは本当に優秀な人たちと働けます。 私たちは「タレント密度」の高さをとても重視しています。一緒に働くメンバーは全員、本当に本当に優秀です。
-
AIによるコーディングは非常に大きな市場です。 そして私たちはそこで勝ちにいけると考えています。
-
楽しいです。 これは私たちにとってとても重要です! 好きな仲間と働くのは楽しいですし、自分自身がコーディングしているときのターゲットユーザーでもあるからこそ、Cmd-Shift-Rを押すとすぐにユーザーフィードバックが得られるようなプロダクトを作るのも楽しいですし、プログラミングの退屈な部分をすべて自動化するというゴールに向かって、毎日少しずつ前進していくのも楽しいのです。
-
私たちは本気で働きます。 こうした課題に取り組めることを幸運だと感じており、その解決に全力を注ぐことを楽しんでいます。