🐕

Copilot Agent Modeのレートリミットを超えるための拡張機能 ~ Copilot Boost Mode

に公開

Agent modeでGroqを使う

Copilot Boost Mode とは

https://marketplace.visualstudio.com/items?itemName=HikaruEgashira.copilot-boost-mode

Copilot agent modeはとても遅いです。明らかにはされてませんがRPMとDailyのtoken制限が設けられています。
そこでagent modeの欠点であるGitHubのprovider依存を解決する拡張機能を開発しました。
この拡張機能はAnthropic, Groq, Geminiに対応しており、APIキーを入力することでGitHub Copilotに依存せずにagent modeを利用することができるようになります。

導入方法

技術の話の前にどのように使うのかについて軽く触れます。
VSCode proposal APIを利用するためにはVSCodeのInsiders版である必要があります。
また、Insidersの設定でProposal APIを有効にする必要があります。

Preferences: Configure Runtime Argumentsで検索して .vscode-insiders/argv.json を開き以下を追記してください。

{
  "enable-proposed-api": [
    "HikaruEgashira.copilot-boost-mode"
  ]
}

Chat Provider API

今回利用したAPIはChat Provider APIです。
VSCodeにはLanguage Model APIが存在しますが、これはGitHub CopilotのProviderしか利用できませんでした。
registerChatProviderを利用することで、任意のProviderを登録することができます。

Agent modeでGroqを使う

このProposal APIを利用したVSCode forkにflexpilotというものがありますが、最近は開発されていないようです。
やっていることはとてもシンプルでvscode.LanguageModelChatProviderに合うようにmessageの変換を行なっているだけです。

https://github.com/HikaruEgashira/copilot-boost-mode/blob/main/src/providers/groq.ts

Should I use a webview?

これはChat Provider APIの議論の一つに出てきた意見です。

https://github.com/microsoft/vscode/issues/234447

VSCodeの思想として、独自UIを持つものは作らず、APIとして提供することが望ましいとされています。ローカルモデルの利用など活用の幅の広いAPIなのでぜひともGAされて欲しいものです。

Webviews は非常に素晴らしいものですが、VS Code のネイティブ API が不十分な場合にのみ、控えめに使用する必要があります。Webviews はリソースを大量に消費し、通常の拡張機能とは別のコンテキストで実行されます。また、設計が不十分な Webview は、VS Code 内で違和感を感じることもよくあります。

Webview を使用する前に、次の点を考慮してください。

この機能は本当に VS Code 内に存在する必要があるのでしょうか? 別のアプリケーションまたは Web サイトとしての方が適しているでしょうか?

機能を実装するには WebView が唯一の方法ですか? 代わりに通常の VS Code API を使用できますか?

WebView は、高いリソースコストを正当化するだけの十分なユーザー価値を追加しますか?

覚えておいてください: Web ビューで何かできるからといって、必ずしもそうすべきというわけではありません。ただし、Web ビューを使用する必要があると確信している場合は、このドキュメントが役立ちます。さっそく始めましょう。

https://code.visualstudio.com/api/extension-guides/webview#should-i-use-a-webview

スターしてね

OSS活動の励みになります

https://github.com/HikaruEgashira/copilot-boost-mode

Discussion