
9,953 文字

みなさん、こんにちは。私はKevinといいます。これは私たちWindsurfの初めてのプレゼンテーションです。言ってみれば初めて私たちのアイデアの全容をお話しする機会となります。皆さんお越しいただきありがとうございます。今日は、Windsurfについて、最初のAIエージェントを搭載したエディタについてお話しします。
私はKevin Houです。サンフランシスコを拠点とする私たちのプロダクトエンジニアリングチームをリードしています。SwixとBen、そしてAIエンジニアリングサミットの皆さんには、私たちをここに招待していただき本当にありがとうございます。会場の皆さんとブースでお話したり、AIについて一般的にお話しするのは本当に楽しかったです。
それでは本題に入りましょう。Windsurfはエージェンティックエディタであり、このような製品を構築する際に私たちが使用しているいくつかの原則についてお話しします。私たちは、エージェントがソフトウェア開発の未来だと信じています。皆さんはここにいるので、エージェントがソフトウェアエンジニアリングやその他の分野で何ができるかという力をある程度理解していることでしょう。
まず、記憶の旅に連れて行きましょう。2022年に戻ってみましょう。当時、Copilotは最先端でした。ベータ版からリリースされたばかりで、人々はゴーストテキストを体験し、補完を見て、AIが開発者のために何ができるかの魔法を実際に見る最初の機会の一つでした。開発者の生産性を向上させていました。私たちCodiumは、オートコンプリート製品を立ち上げる最初の企業の一つになることを決めました。VS Code、JetBrains、Vim、Emacsの拡張機能で数百万のユーザーを獲得しました。Codiumユーザーだった方は手を挙げてください。いいですね。
しかし私たちは常に、インテリジェンスが向上していくことを知っていました。当時は短い補完、関数の終わりを補完するようなものでしたが、より良いモデル、より大きなモデル、より良いトレーニングパラダイム、全く新しい強化学習、新しいツールの使用など、すべてが向上していくことを知っていました。そして、開発者に可能な限り最高の体験を提供したいと考えていました。当時からエージェントについて検討し始め、モデルがより大きくなった場合のソフトウェア開発の未来がどうなるか考え始めました。
当時可能な最高の体験を構築しました。それはチャットオートコンプリート製品でしたが、常にChat GPTからのコピーペーストは過去のものになるとわかっていました。また、人々はタブを使用する頻度が減り、より多くのコードを生成できるLLMを持つようになるだろうと知っていました。今はエージェントが最高だと思っていますが、企業として常に未来を考えています。私たちは技術の楽観主義者です。将来のIDEでは、IDEの中でコードを書くことすらないかもしれません。私たちはただそこにいて、ユーザーのために最高の製品を構築するだけです。
そして2025年、ついにソフトウェア開発におけるエージェントの力を皆が認識している年になりました。エージェントは定着し、Windsurfはその技術の最先端を押し進めていることを誇りに思います。これからそれらの機能についていくつか話し、エージェント技術の未来を推進し続けていきます。なぜなら、エージェントが過去のどのLLMも実現できなかった方向にソフトウェアエンジニアリングを進化させると信じているからです。
このスライドは「Windsurfでのバイブコーディング」または「Windsurfでのコーディング」というタイトルです。Windsurfの製品の簡単なデモをご紹介します。ここにバーがあり、これが私たちのエージェントです。Pythonのウェブスクレイパーを構築しているのが見えます。これはPythonのウェブクローラーを構築し、ウェブサイトに関する統計情報を提供するものです。実際にターミナル内でpipから依存関係をインストールしているのがわかります。ユーザーが操作できるターミナル内で実行し、編集を提案し、仮想環境をセットアップしています。ユーザーには非常に役立つ「承認」と「拒否」のオプションを提供しているので、生成されるコードがユーザーとそのコードベースにとって適切かどうかを確認できます。
もちろん、まだまだ多くの機能があります。ユーザーが好むことの一つはドキュメントを検索することです。ウェブ検索はデフォルトで有効になっています。常にコードベースを見て、コードベース全体を検索できます。コミットメッセージを生成することも、画像をドラッグ&ドロップすることもできます。可能性は本当に無限大です。これらの機能がどのように動いているかについて、私たちがエンジニアリングチームとして製品を構築する際に守るいくつかの原則、一貫したラインについてお話しします。
チームとして、私たちは常に同じミッションに立ち返ります。それは「フローを維持し、あなたの無限の可能性を解き放つ」ということです。私たちは地道な作業を処理したいと考えています。デバッグスタックトレースの確認、元のソースコードの修正、正しいバージョンのドキュメントの取得など、あなたが心配する必要のないことを処理したいのです。これらは私たちが解決しようとしている問題です。そして、あなたには得意なことに時間を使ってほしいのです。製品の出荷、素晴らしい機能の構築、コードの配信など、私たち全員を興奮させるものに集中してほしいのです。
そのゴールを念頭に置いて、何に取り組むべきかをどのように判断するのでしょうか?それは入力と出力のゲームです。ユーザーができるだけ少ない明示的な入力で、最も正確で本番環境に対応したコードを生成できるようにしたいのです。ユーザーにはより少なく貢献してもらい、エージェントにはより多く貢献してもらいたいと考えています。これを実現するために、バックグラウンドリサーチのような人間のループの必要性を減らし、常に次のステップを予測し、ユーザーに代わって決定を下します。これによりユーザーはより速く作業を進めることができます。
これはすべて空想のように思えるかもしれませんが、Windsurfは3ヶ月前の11月13日にローンチしました。その日付は私の記憶に永遠に刻まれています。そして、これが既に見ている結果です。3ヶ月で45億行のコードを生成しています。これは途方もない数字です。そして、このプレゼンテーションを始めてから、ユーザーはコードのリファクタリング、新機能の作成、ウェブサイトの新しいページの構築などのために、Cascadeに何千ものメッセージを送っていることでしょう。
また、ここには技術者がたくさんいるので面白い統計をお伝えします。過去90日間で16回、キャパシティを超えて信頼性の問題が発生したために夜中にページャーデューティのオンコールで起こされました。これらの問題は、プラットフォームに多くの人を乗せることに大きな成功を収めた結果です。AnthropicとOpenAIの最大の消費者の一部となれたことは非常に幸運でした。
これらのミッションとメトリクスを念頭に置いて、このエージェンティックエディタを構築する際に使用するいくつかの原則について見ていきましょう。Windsurfを使用したことがある方は、製品の新しい使い方について学ぶかもしれません。また、私自身の好奇心から、Windsurfについて聞いたことがある方はどれくらいいるでしょうか?素晴らしい!Windsurfを使用している方は?手を下ろした方全員、そこにいる方々ですね。
さて、本題に入りましょう。最初の原則は「軌跡(トラジェクトリー)」です。軌跡とは何でしょうか?私たちは軌跡を使ってあなたの心を読みます。Cursorのような他のエディタとは異なり、私たちのエージェントはエディタに深く統合されています。これが正確に何を意味するかについてお話しします。一方では、エージェントはあなたが何をしているかを理解する必要があり、もう一方では、あなたに代わって物事を理解し実行できる必要があります。これにより「私の作業を続ける」のような私のお気に入りの機能が生まれました。
コードを書いたり、ターミナルコマンドを実行したりするときにユーザーの理解を構築し、エージェントサイドバーに行って「私の作業を続ける」と言うだけで、実際にそれを続けて実行し、完全なプルリクエストや完全なコミットを提供することさえあります。また、ターミナル実行モードのような機能もあります。LLMを使用して何が安全か安全でないかを自動的に判断できるため、gitのようなものを実行している場合は単に動作しますし、rmrfのようなものがある場合はおそらくユーザーに確認を促します。これらは、人間をループに入れながらも、できるだけ最小限にする方法のいくつかです。
そして最後に、これらの最先端の機能を製品に統合し、ユーザーが制御できていると感じられるように、優れたUXと素晴らしいデザインチームが取り組んでいます。変更を承認したり拒否したりできるようにすることで、本番環境にプッシュするコードに自信を持てるようにしています。
軌跡がどのように機能するかを説明します。私たちには「統一されたタイムライン」という概念があります。エージェントはバックグラウンドで動作し、ユーザーが暗黙的に行っていることを理解しようとしています。これには、ファイルの表示、コードベース内の移動などが含まれます。例えば、ファイルを編集し、そしてエージェントがファイルを編集すると、これらすべてが共有されたアクションのタイムラインに組み込まれます。検索、grepの実行、編集の作成、コミットの作成などもこれに含まれます。ユーザーには全体的な理解があり、この体験全体はこの共有タイムラインによって統一されています。あなたも貢献でき、エージェントも貢献できるので、エージェントと会話していて、あなたが行った変更を元に戻したり、ファイルの状態について古い概念を持っているという問題には決して遭遇しません。
これは私たちの第一級の原則であり、エディタを構築することにしたとき、エージェントと共有タイムラインという概念を中心に構築することにしました。ここでは、この機能の実例を紹介します。新しい関数を追加し、オートコンプリートやその機能の様々な特徴が見えます。右側では「私の作業を続ける」と依頼しています。これは新しい関数で、おそらくフォームハンドラーがこの新しい関数を使用することを望んでいるのでしょう。編集を行うことで提供されたコンテキストに基づいて、このファイルの変更、おそらく他のファイルにも変更が必要だと推測しています。最後には「npm run dev」を実行するだけで、バックグラウンドでコマンドJターミナルポップアップのようなものでターミナルコマンドを実行できます。
このようにして、私たちはあなたをフローの中に保っています。数分かかっていたことが数秒で済むようになるのです。もう一つの例として、ターミナルがエージェンティックタイムラインに深く統合されています。ここでコマンドを入力すると、例えば「npm install」で新しいパッケージをインストールしたり、「pip install」で新しいパッケージをインストールしたりすると、エージェントはあなたが今このパッケージをインストールしたことを認識し、プロジェクトに実装する提案をします。コードベース周辺から得られるコンテキストに基づいて、その作業ラインを継続できます。
私たちは「コピー&ペーストなし」の未来を強く信じています。ターミナルにいるとき、ドキュメントにいるとき、あるいはウェブサイトにいるときに、テキストをエージェントにコピー&ペーストするような状況はあるべきではありません。それは世界の仕組みではないのです。同様に、未来はターミナルではないと強く信じています。
ここでは、ターミナル内で実行されるコマンドの別の例を示します。少し話してきましたが、この軌跡の概念により、できるだけ実際にコマンドを実行する方法に近いサンドボックス内で自動的に実行できます。バックグラウンドでシェルスクリプトを実行する代わりに、実際にターミナルコマンドを書く場所に直接これを配置しています。「pip install」を実行したり、エージェントが「pip install」を実行したりすると、同じ環境に入るので、一種の奇妙さのインスタンスが発生することはありません。
これはすべて、エージェント側と人間側という2つの側面をできるだけ近づけようとする私たちの努力の一部です。これは統一された製品を構築することで実現します。私たちは開発者は残ると信じており、開発者とシームレスに協力したい場合、エージェントは彼らが考えていることを理解する必要があります。Windsurfはユビキタスであるべきで、エージェントはますますあなたの心を読み、あなたが知らないかもしれないことさえ行うようになるでしょう。将来的には、1から5ステップ先だけでなく、10、20、30ステップ先を見るようになります。関数の定義が終わる前に単体テストを書き、変数名を編集するだけで複数のファイルにわたるコードベース全体のリファクタリングを実行するでしょう。これはすべてこの統一された軌跡という概念の一部です。
第二の原則は「メタラーニング」です。Windsurfがその瞬間にあなたが何をしているかを理解していたとしても、時間をかけて会社の上級エンジニアが構築してきたコードベース、あなたの好み、組織のガイドラインについての推測された理解があります。私たちはこの概念を「メタラーニング」と呼んでいます。Windsurfは、これらのことを学習し記憶するために最初から構築されています。
フロンティアLLM、つまり世界に存在する最高のLLMを考えてみてください。それらは非常に賢く、エンジニアは私よりも間違いなく能力が高く、おそらく皆さんのほとんどよりも能力が高いです。膨大な量のコードを書くことができ、正確に行うことができ、おそらく問題なく実行されてコンパイルされます。しかし、彼らが持っていないのはあなたが持っている経験、教育、そしてあなた個人やあなたの会社がどのようにコードを書くかを覚え、知る能力です。
これが私たちの製品にとって何を意味するのでしょうか?私たちは「自動生成されたメモリー」というコンセプトを実装しました。時間が経つにつれて、あなたが何をしているかのメモリバンクを構築します。「Tailwindのバージョン4を使用することを覚えていて」や「React 19ではなく18を使用することを覚えていて」と言うことができ、これらのことは一度言うだけで永遠に覚えられます。また、カスタムMCPサーバーの実装も可能で、お気に入りのツールに接続でき、ワークフローに適応できます。コマンドのホワイトリストとブラックリストも設定できます。
先ほどの概念に戻りますが、できるだけフローを維持したいと考えていますが、エージェントに「私の承認なしにRMコマンドを実行しないでください」と伝えることができます。このようにして、時間の経過とともにあなたの好みを学習します。開発者が効果的である理由は、あなたが伝えたことを覚えているからであり、AIがプロジェクトを書き、維持することを期待するなら、Windsurfもこの行動をモデル化する必要があります。
短期的には、同じことを何度も繰り返すようにエージェントに指示する必要がないということを意味します。しかし長期的には、AIはあなた自身のシームレスな拡張のように感じるべきです。これは明示的なコンテキストと推測されたコンテキストのアイデアであり、会社では「アイデアは安い」という言葉をよく使います。
ここでは、自動生成されたメモリーの実際の例を紹介します。ここでは「これを覚えて」と明示的に言っているわけではなく、アーキテクチャの概要を提供しているだけです。「このプロジェクトは何をするのか」と尋ね、いくつかのツールの使用に基づいて覚え、いくつかの異なるファイル、ルートを見て、今はメモリに「これはこの人が取り組んでいるプロジェクトだ」「これが利用可能なエンドポイントだ」と記憶しています。次のメッセージでそれを参照できます。次の会話では、メモリバンクの概念があるので、ワンショットで物事を行うことができます。
同様に、ドキュメントは自動的に学習されます。package.jsonやあなたが明示的に教えてくれたものを通じて、どのパッケージを使用しているかを知っており、ウェブ上でそれらのバージョンに一致するドキュメントを検索することができ、すべて暗黙的に行っています。メタラーニングの夢は、コードベースや製品の使用に基づいて、完全に推測されたコンテキストの感覚を持つことができることです。自動生成されたメモリーはその方向への一歩です。
ルールファイルについても強い考えを持っています。ユーザーがルールファイルを追加できるようにしていますが、ルールファイルは一種の杖(クラッチ)だと強く信じています。2025年末までには、ルールファイルに入れようとする事柄の99%は、コードベースや使用方法に基づいて解釈または推測されるでしょう。私たちの夢は、すべてのWindsurfインスタンス、会社のタイプや人のタイプ、開発者のスキルに関係なく、Windsurfを使用するすべてのユーザーがそのユーザーに合わせてパーソナライズされ、一つのことだけを伝えればいいようになることです。
最後に、私のお気に入りの原則である「インテリジェンスとともにスケールする」についてです。これは何を意味するのでしょうか?今、Windsurfはその瞬間にあなたが何をしているかを理解し(第一の原則)、時間とともに改善できる(第二の原則)ですが、LLMのスケールアップの速度にどのようにスケールするエージェントを構築するのでしょうか?
常に今日最高のツールを提供しようとしていますが、新しいモデルは隔週ごと、毎日のように出てきており、新しいパターンについての新しい記事があり、追いつくのは本当に難しいことを認識しています。しかし、Codiumでは常に、どうすれば最先端に立ち続けられるか、今日だけでなく3ヶ月、6ヶ月、12ヶ月、3年後の最高の製品をどう構築するかを考えています。
2021年にChat GPTが登場したとき、おそらく私と同じように、皆さんは想像力を働かせました。「よし、AGI、ポストエコノミーなどを解決しよう」と思いました。しかし明らかに、その時点とその未来の間には多くのことが起こる必要がありました。当時のモデルは正直に言って、私たちが実現したかったすべてを達成するには少し賢さが足りませんでした。
そこで私たちは多くのインフラストラクチャを構築し、おそらく皆さんも同じことをしてきました。埋め込みインデックスを構築し、検索ヒューリスティックを構築し、生成されるコードが良いものであることを確認するための出力検証システムを持っています。これらはすべて、マージンを助けるものですが、これらはすべて固定されたインテリジェンスの概念で操作しているという前提に基づいています。2021年、2022年、これらのモデルで私たちは操作し、モデルが処理できなかった領域やエッジケースを補うためのインフラストラクチャを構築していました。
Windsurfへのアプローチで非常に異なるのは、製品がモデルとともにスケールすることを望んでいるということです。モデルが良くなれば、製品も良くなります。一つの例を挙げると、ニューヨークに着いたとき、私はWindsurfからチャットを削除したとツイートしました。それは非常に、どうでしょうか、単なる思いつきでしたが、奇妙なことに多くの方々がこれを取り上げました。これは、私たちが強く感じている原則の実践例です。
この原則の実践例の一つは、チャットを削除したことです。これはどういう意味でしょうか?私たちにはエージェントだけがあり、それはWindsurf内ではCascadeと呼ばれています。チャットはレガシーパラダイムであり、私たちはそれを完全に置き換えました。ご覧のように、ユーザーはそれを楽しんでいるか、実際にはそれを知らないかもしれませんが、彼らはより高い品質を楽しんでいます。
例えば、@メンションを構築しました。おそらく皆さんもメンションを使用したことがあるでしょう。なぜなら1〜2年前はコンテキストがあまり良くなかったからです。今日、Windsurfはコードの断片とドキュメント間の関係を90%の確率で動的に推測できます。ほとんどの場合、@メンションする必要はありません。必要なのは、エージェント内の検索システムが何をする必要があるかを計画し、自動的にコンテキストを再構築できるようにすることだけです。
@fileと@webは、いわばマージンで作業する際に非常に役立つパターンですが、これらは最終的には基準点を削っています。長期的には、LLMは改善し、既に@メンションを明示的に指定する必要がないほど改善していると信じています。LLMは十分に賢くなり、それを拾い上げることができるはずです。
この例では、以前はNext.jsアプリケーション内でSupabaseを実装していました。以前は@web、@docs、@codebase、これやあれなどをしていましたが、今はただ「Supabaseを追加して」と言うだけです。エージェントはウェブを検索し、人間のように行動することを推測し計画することができます。これについて詳しく説明すると、Windsurfにはウェブ検索が組み込まれており、特別なのは人間がウェブを読むように読むということです。
ハードコードされたルールの代わりに、埋め込みインデックスを作成することもできたでしょうが、おそらく品質の低い結果になっていたでしょう。代わりに「LLMは非常に優れている」と言い、モデルに何をしたいかを決定させ、どの検索結果を読むか、ページのどの部分を読むかを決定させ、最終的に答えを出すことにしました。モデルが向上し続けるにつれて、私たちは監視されていない作業を続け、完全なプルリクエストを生成し、複雑なドキュメントを読み、可能性は本当に無限大だと信じています。
これらが私たちが話した原則のいくつかです。これをどう進めていくのか?この先には多くの道があります。Windsurfの下にあるエンジンは本当に秘密のソースであり、2025年は全く新しい世界になると信じています。ルールファイルなし、プルリクエストの生成、コミットの生成、それは素晴らしいことになるでしょう。そして既にこれを目にしています。ユーザーの90%が生成するコードはCascadeで生成されています。これは驚くべき数字です。オートコンプリートは20〜30%程度でしたが、これは信じられないことです。人々は今日、過去にできなかったはるかに多くのことを達成するためにエージェントを使用しています。
私たちは皆ソフトウェアエンジニアですので、この部屋にいる全ての人が最高のツールを手に入れることを確認したいと思います。その最高のツールはエージェントです。この街のすべての良いものと同様に、私はチケット代の25%をチップとして期待しています。かなりの額だったと聞いていますが。
これが皆さんが気になっていた実際のQRコードです。これはWindsurfのダウンロードリンクです。無料プランも提供しています。ぜひスキャンして、今日からこの魔法を使い始めてください。そして最後に、私たちのブースには素晴らしいスワッグ(グッズ)もあります。Twitterでも私とつながることができます。コミュニティとの活動を続けるよう心がけています。ご視聴いただきありがとうございました。Windsurfでの私たちの取り組みについて何か学んでいただければ幸いです。カンファレンスの残りもお楽しみください。


コメント