マイクロソフトはAIエージェントを使用して、GitHub Copilotの実行環境をTypeScriptからRustに完全移行し、このプロセスには約12万ドルのトークンコストと、エンジニアが3週間かかった。
この実行環境は、多くのユーザーが想像するよりも重要である:GitHub Copilot CLI、Copilot App、SDK、およびCopilotクラウドエージェントをサポートしており、VS Code、Visual Studio、Excel、Outlook、PowerPoint、そして多数のマイクロソフトクラウドサービスにも含まれている。元々はTypeScriptとNode.jsで構築されていたが、開発が速いという利点があったが、スケーラビリティが問題となり、起動速度やサーバー密度がボトルネックとなった。
性能テスト結果:1秒間に7.55回から120回へ、メモリ使用量は9割減
マイクロソフトの優れたエンジニアであるステファン・トゥーブ氏は、このプロセスを詳細に記した長文を書いた。データによると、AIエージェントによって43万行のTypeScriptコードが80万行の生産用Rustコードに変換され、135個のリリース、14.5週間、平均して1日あたり1.3個のPRを作成して移行された。主なコストはトークンだった——約12万ドル、それに開発者3週間の人件費。トゥーブ氏は、「この作業を手作業でやるなら数年かかり、何百万ドルもかかるだろう」と述べた。
パフォーマンス上のメリットは実に明確である:あるベンチマークテストでは、元のTypeScript実装が1秒間に7.55回のシングルラウンド会話ライフサイクルを処理していたが、Rustではプロセス内での実行で120回に増加し、特定の負荷下では15.9倍の高速化を達成した。メモリ使用量の差はさらに顕著だった——10台のクライアントに対して、TypeScriptは1383MBを消費していたが、Rustではわずか126MBにとどまった。これはRustバージョンがすべてプロセス内で完了し、TypeScriptのように補完のために別途バックグラウンドの子プロセスを起動する必要がなかったためである。
「AIが大量にコードを吐く」様子は逆だった
面白いことに、今回の移行は「AIプログラミング」の幻想を剥ぎ取った。トゥーブ氏は、エージェントが情報を収集する時間の方が、コードを書く時間より圧倒的に多くかかっていることに気づいた。「一般的なイメージでは、AIが大量にコードを吐く様子がほぼ逆で、この規模では、作業は反復的な調査のように見える——現在の状態を確認し、仮説を立て、対応する修正を1つ行い、それを繰り返すような感じだ」と語った。
最も困難なファイルはsession.tsで、3万行を超えるTypeScriptコードであり、実行環境のあらゆる側面に関係していた。これを移行するのに25時間かかったが、ドキュメントを読むだけで56分を要し、122回のツール呼び出しを行って要件を明確にした後、15のサブセッションを生成し、それぞれが独自のworktreeとエージェントを持ち、互いに通信を開始した。一つの組み込みの調整スキルがすべてのアクティブなセッションを見つけて、タスクの重複がある場合にメッセージを送信して協力を求めた。
しかし、この移行はRustをAIで書くことの欠点も露呈した。このプロセス中に数十のリグレッションが発生した——元々正常だったものが、変更後に動作しなくなったのだ。トゥーブ氏はまとめた。「コンパイルが通れば正しいという言葉は、冗談としてしか受け入れられない」と。コンパイラは関数の順序やタスクのコストが適切かどうかを知っているわけではない。先週のモンテリオールRustConfで、アドバイザーのリサ・クロスマン氏もコンパイラを「神諭」と見做さないよう警告した。「Rustはエージェントがメモリに安全でないコードを書かないようにしているが、誤りはあるが正しいプログラムを書くことは許している。」
VIP会員