OSSになったvscode-copilot-chatを読む

昨日VS Code Meetup x GitHub dockyardのコラボイベントの懇親会で、copilot-releaseのIssueはあまり見てくれなそうで、かつIssueが溜まっていてだいぶ見られることなさそうみたいな話を懇親会で行なった。(実際にVS CodeのIssueからrefしないと、開発者に見られなかったという経験がある)
そんな状況でCopilotをOSSにするとしたらどこになるんだろうと思っていたら、なんと数日前にpublicリポジトリで公開されていることに気づいた。
これは以前Microsoft Build 2025にて宣言した、GitHub Copilot ChatをOSSにするという宣言のものだろう。

リポジトリのコードリーディングをしてみようと思う。
流石にドッグフーディングしているだろうと、.github以下を見てみると、バッチリコードの全体図がわかるcopilot-instructions.mdが配置されている。
読み進めるのはこのあたりのヒントを元に見るとよいだろう。
ちなみに .github/copilot-instructions.md
はGitHub Copilot Chatにおいて常に追加される指示が記されるファイルで、リポジトリのコードの読み方だったり構造、守ってほしいルールなどを書いておくと良いファイルのことを指す。

上記のinstructions.mdを見て興味深いのは
Tech Stack
- TSX: Prompts are built using the @vscode/prompt-tsx library
やはりここではないだろうか。
約1年ほど前からリリースされていた、TSXファイルでLLMのプロンプトを記述できる @vscode/prompt-tsx。
これがこの拡張機能では多用されている。
例えばリポジトリに含まれる.tsxファイルを探すと利用例が出てくる。
Agentを構成しているプロンプトは以下のファイルで定義されているようだ。

実際にビルドして動かしてみると、無事動いていることが確認できる。
動かし方もcopilot-instructions.mdに書いてあるので便利だった。
$ npm install
$ npm run compile
を実行した後、VS CodeのDebugタスクから「Launch Copilot Extension - Watch Mode」を実行すると動作する(その前に自分はGitHub Copilot Chatの拡張をdisabledした)。

自前でビルドすると、例えばこんなことが出来そうだなという妄想が捗る。
例えばBYOKは利用できるプランが決まっているが、その設定を有効にしたり、変更できないbaseURLを変更するみたいのが出来るのではないか、とか。
自作のCopilot Chat Extensionに双方向通信の機構を組み込んで、例えばCopilot CLI(Agent)みたいのもVS Code Serverと組合せて出来そうだなみたいな妄想が捗る。

実際VS Code Copilot Chatに関するいくつかのベースのUIなどの機能は、VS Code本家のリポジトリに多く実装されている。
明確な差分はどの辺りにあるのか、再度読み進めて理解していきたい。