※追記などもあり、ページ量も増えてきたので目次を追加しました
GitHub Copilot枠を用いてClineが使える?
ClineというVSCode のExtensionがあり、これを使うとAIを用いたコーディング(プログラミング)が可能となる。Cline自体、現在かなり注目されているツールであり、既に解説している記事などもたくさん出ているため、ここでは説明は割愛する。
そして、今日Xを見ていたらこのような投稿が目に入った
Cline自体は各種LLMのAPI (ChatGPTやClaude、Geminiなどなど)を用いて、そこでのやりとりを元にコーディングアシストをしてくれるのだが、どうやらVSCode Language Model API というものを叩くことで、Language Modelを利用したAI を活用した機能と自然言語処理 を Visual Studio Code 拡張機能 に統合できるらしい。
code.visualstudio.com
そして、このVSCode Language Model API のなかではGitHub Copilotも指定できる。
実際のコードは上のドキュメント内にあるが、以下のような記述で利用が可能なようだ
const [ model] = await vscode. lm. selectChatModels ({ vendor : 'copilot' , family : 'gpt-4o' }) ;
というわけで、結論VSCode ユーザーのGitHub Copilot利用枠を用いた処理が可能となり、最初に上げたXの投稿内ではClineを利用する際にこの VSCode Language Model API を利用するような修正を入れているという形である。
github.com
なお、このポストを書いている現時点ではまだ上のPRはマージされていないが、clineのコミュニティからも好意的に受け取られており、このPRの作者も常に数週間という間、継続的にテストを行いつつ、このPRに取り組んでいるようだ。
(詳細はPR内部を参照)
GitHub Copilot枠を利用してClineを使うことができれば、より気軽にClineが使える?
今までClineを利用する際は別途API 提供側で利用枠のクレジットを購入して、そちらを消費しながら使うというのが主流だったと思う。
(他に方法があるかは知らない)
つまり使った分だけクレジットが消費されていき、常に残りクレジットを意識しながらコーディングを行う必要があった。
しかし、今回のようにGitHub Copilotを利用してAIコーディングが使えるのであれば、定額制というCopilotの料金プランもあって、この残りクレジットを意識することはなくなる。
(もちろんGitHub Copilotにはレートリミットはあるので、無制限に使えるわけではない。また制限に達したらCopilot自体が動かなくなるため、VSCode ではCopilotを常時利用している場合は不便を強いられる可能性もあるのでそこは注意したい)
というわけで、これは利用したいと思って今回試してみることにした。
現段階ではClineのフォーク版であるReclineを利用するのが良さそう
ちなみに今回のPRの作者によるClineのフォーク版であるReclineというのがあり、現在こちらの実装を使う際はこのReclineをVSCode 上で使うのが一番良さそうである。
というわけで試してみた。以降はReclineの導入方法の備忘録となる。
github.com
Reclineのインストール方法だが、こちらのツールはRoo-Clineなど他のClineフォークのように VSCode のMarketplaceには出されていないため、自身でビルドしていく必要がある。とはいえ、ビルド方法はとても簡単でREADMEに丁寧にセットアップ方法が書かれている。
私はこのドキュメント内の記述をさらっていただけであるが、実際に実行したコマンドを以下に記載していく。
git clone https://github.com/julesmons/recline.git
cd ./recline
ちなみにReclineでは pnpm
を用いているため、PCに入っていない場合は以下のコマンドでインストールしておく必要がある。
(他のインストール方法もあるので気になる方はpnpmの公式ドキュメント にて)
また他にはVisual Studio Code 拡張機能 のパッケージングと公開などを支援するnpmライブラリである @vscode/vsce もグローバルにインストールしておく必要があるらしい
npm install -g pnpm@latest-10
npm install -g @vscode/vsce
そしてRecline側で依存関係のインストールを実施する。
pnpm install
pnpm run package
ここまで実施すると現在のフォルダ内に recline-0.2.11.vsix
というファイルができている。これがパッケージングされたVSCode の拡張機能 となる。
(実行時期によってバージョン番号は変わると思う)
こちらをVSCode 側にインストールするためには以下のコマンドをターミナル上で実施する。
code --install-extension ./recline-0.2 .11 .vsix
ここまで実行してVSCode の画面を見ると、Reclineがインストールされている状態になっている。
試しに以下のようにGitHub Copilot枠のClaude 3.5 Sonnetを試して実行してみる。
GitHub Copilot枠のClaude 3.5 Sonnetを選択しているところ
これで実行してみる。最初にこのような確認ダイアログが出てくるので、Allow
を選択
これであとは利用するだけ。
実際に簡単なコードで試してみたところ、問題なく動いている。このまま色々と試していってみようと思う。
一応Copilotのレートリミットは気になるので、事前に調べておこうとは思う。
(ドキュメントを見るとGPT-4oで64kという理解で良いのかな?)
Reclineでは日本語が使えない問題が発生している場合の対応方法
これはXで教えていただいたのだが、Reclineで日本語でのやり取りができない問題が発生しているようだ。
もしこの問題が発生した方は以下のポストを参照していただくのが良さそう
ちなみに私自身はカスタムインストラク ションにチャットは日本でやり取りしてほしい旨を伝えるだけで問題なく使えていた。
カスタムインストラク ションは上に張った画像内のとおりだが、テキストとしても以下に載せておく。
Please use Japanese in chat conversations.
Please make sure that comments on the code are in English.
チャット開始後、2回目以降の日本語の返答が抜け落ちている
と、ここまで書いたところで、実は私の環境でもこの問題が起きていることが判明した。
単に再現する作業をRecline上で行っていなかっただけで気づいていなかった模様...
(こちらもXにて教えていただいた。ありがとうございます)
実はReclineで最初の指示の日本語は問題なく通るが、やり取りの中でこちらから返答を返す場合(2度目以降の送信時)、日本語が抜け落ちるようだ。
これはReclineの表示でもそうだし、ログ内でも実際に抜け落ちているのが確認できる。
(おそらくログ上ではタグやタグが該当しているが、ここが日本語の場合空欄になっている)
ちなみに2回目以降も英語でのやり取りは問題なく送信される。
というわけで、日本語でお困りの方は上に貼らせていただいたポスト内の記事を確認していただくのが良さそう。
(というか下にも改めて貼らせていただく)
sitochablog.pages.dev
私も後ほど設定してみて、また実施した内容は追記すると思う。
実際の対応ログ
上の問題に対応した際のログを残しておく
ちなみにReclineの日本語問題については対応するPRを出してくれている方がいたので、それがマージされればそのバージョン以降は今回のような対応は不要になる
github.com
で、実際の対応方法だが、まずはコードを最新化しておく。
git pull origin main
次に src/extension/utils/sanitize.ts
内のコードを以下のリンク先のように書き換えればOK。
(最初は自身のコードを記載しようと思ったが、そもそも既にPRに出ているコードを参考にすれば確実だと思ったので省略)
https://github.com/julesmons/recline/pull/1/files
コードを変更したら、
pnpm install
pnpm run package
すると本日2025/1/14の夜時点で、 recline-0.2.2.vsix
というのがパッケージングされるのでこれを適用する。
ちなみにローカルの拡張機能 ってそのまま適用できるのかよく分からなかったので、もとの拡張機能 は一旦uninstallしておいた。必須かは分からない。
Extensionsタブで検索してuninstallを実施
あとは前回同様インストール
code --install-extension ./recline-0.2 .2 .vsix
ちなみにインストール後は以前設定したカスタムインストラク ションなどの設定は復元されていました。たぶんVSCode 側で設定情報は持っているのかな?
あとReclineのバージョン番号が減っていない?と思ったら、どうやらtypo しているようで、以下のようなPRが出されていた。
typo 、あるある。
github.com
Reclineでフォルダ構造読めない問題の対応方法
こちらについても上にリンクを貼らせていただいた、しとちゃ!さんのブログを参考にさせていただいた。
どうやらReclineではフォルダ構造を読む際にfdを利用しているらしい。
(fdはRust製のfindコマンドで、一時期に話題になっていた気がする)
github.com
この fd
はmac の場合、brew
でインストールできるので、以下のコマンドを実行すればOK。自動的にパスも通せるので、このコマンドを実行するだけでフォルダ構造読めない問題は対応完了となる。
brew install fd
Windows 環境の場合、しとちゃ!さんのブログが参考になると思うのでそちらを読んでみてください。
ちなみにRecline的には今は別途 fd
を入れる必要があるが、後々はバンドルすることを目指しているらしい。
ReclineのREADMEをブラウザ翻訳で表示したもののスクリーンショット となります