Make CoPilot an Interactive Programmer について
Make CoPilot an Interactive Programmer は、Copilot や Cursor などの AI コーディングエージェントに Calva の Clojure ツールを提供する VS Code 拡張機能で、Backseat Driver とも呼ばれます。Clojure 開発者を対象とし、REPL での評価と構造的編集をサポートします。MCP サーバーとしても利用できます。
主な機能
- 01接続済みの Calva REPL でのコード評価
- 02Clojure ファイルの構造的な作成と編集
- 03Parinfer による括弧のバランス調整
- 04シンボル情報と clojuredocs.org の検索
- 05読み取り可能なリソースとしてのスキル提供
活用シーン
- 01エージェントによる REPL での実装方法の調査
- 02トップレベルフォームの一括編集
- 03Clojure コア関数のドキュメントと例の検索
MCP 対応
本プロジェクトは MCP サーバーとして動作し、Calva の評価、編集、ドキュメント検索ツールとスキルのリソースを MCP クライアントに公開します。その他のハーネスではプロジェクトごとの設定が必要です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
VS Code でネイティブ AI インタラクティブプログラミングを有効にする
VS Code のエージェントハーネス向け Clojure ツール。(Copilot や Cursor など。)
Backseat Driver を使うと、VS Code の AI ハーネスから、次の方法で Calva の Clojure ツールにアクセスできます。
- Copilot:設定不要です。(VS Code LM Tools. を使用します。)
- Cursor:設定不要です。(Cursor の add-MCP-server API を使用します。)
- その他の AI ハーネス:MCP(プロジェクトごとに設定が必要です)。
機能
- ツール:コードの評価 必要に応じてコードを評価するための Clojure REPL へのアクセスです。Calva のすべてのアクティブな REPL セッションを対象にでき(shadow-cljs の場合は、ビルドとランタイムも対象にできます)。
- ツール:Clojure ファイルの編集 バッチ処理に対応した、ファイルの構造的な作成と編集です。以下が含まれます。
- Clojure ファイルの作成 括弧を自動で対応させて Clojure ファイルを作成します
- コードの追加 括弧を自動で対応させて Clojure ファイルにコードを追加します
- トップレベルフォームの置換 フォーマット、括弧の対応付け、リンティングを含む構造的な編集です
- トップレベルフォームの挿入 フォーマット、括弧の対応付け、リンティングを含む構造的な編集です
- ツール:括弧バランサー モデルが括弧のバランスを正しく取れるよう支援します(Parinfer を使用)
- ツール:ファイルの読み込み Calva の接続済み REPL を通じて Clojure ファイル全体を読み込み、評価します
- ツール:シンボル情報の検索 AI は必要なシンボルを検索でき、ドキュメント文字列、引数情報などを取得できます
- ツール:clojuredocs.org の検索 Clojure のコアに関連するシンボルのドキュメント、例、関連項目の情報です
- リソース:シンボル情報の検索(やや実験的)ツールと同じです
- リソース:clojuredocs.org の検索(やや実験的)ツールと同じです
- リソース:スキル
resources/listで検出でき、resources/readで読み取れる、専門的な指示です
編集ツールには、編集内容を確認するための UI がありませんのでご注意ください。ソース管理ツールと VS Code の タイムライン ビューを使うことをおすすめします。
エージェント向けの手引き:Backseat Driver の活用
Backseat Driver は、Clojure のインタラクティブプログラミング用ツールと、そのツールの使い方を示すスキルを AI エージェントに提供します。エージェントによる Clojure と REPL の扱い方を制御できるよう、この拡張機能では Clojure の知識や理念、REPL の方法論はあまり提供していません。
エージェントに Clojure で真に効果的な作業をさせるには、Clojure をどのように記述するのが好みか、また REPL を効果的に使う方法をエージェントに伝える必要があります。
白紙の状態から始めて、質の低い学習データや Clojure に関する幻覚で作業が台無しになるのを避けるため、Awesome Backseat Driver リポジトリから clojure やその他のプラグインをインストールすることを検討してください。
メモ
Awesome Backseat Driver には、Copilot と Cursor 用のプラグインがあります(現時点)。ただし、ほかのハーネスを使っている場合でも、そこからスキルやカスタムエージェントなどをコピーできます。(または、エージェントに代わりに作業してもらうこともできます。)
Backseat Driver の設定
評価結果のサイズ制限
大きな REPL の評価結果によってエージェントのコンテキストウィンドウが圧迫されないよう、Backseat Driver は返される結果のサイズを自動的に制限します。
calva-backseat-driver.evaluation.maxLength(デフォルト25) — コレクション内で表示する項目の最大数です。0を指定すると、長さの制限が無効になります。calva-backseat-driver.evaluation.maxDepth(デフォルト7) — ネストの最大深度です。それより深い構造は##に置き換えられます。0を指定すると、深度の制限が無効になります。
スキル
Backseat Driver は AI エージェント向けに 2 つのスキルを提供します。
calva-backseat-driver.provideBdSkill(デフォルトtrue) — エージェントに Backseat Driver スキルを提供しますcalva-backseat-driver.provideEditSkill(デフォルトtrue) — エージェントに Clojure の構造編集スキルを提供します
エディターの設定
トップレベルフォームの挿入と置換を行う構造編集ツールは、Backseat Driver の次の 2 つのエディター設定に従います。
calva-backseat-driver.editor.fuzzyLineTargetingPadding(デフォルト2) — 対象テキストの照合時に、AI が指定行の前後を検索できる行数です。大規模なリファクタリング中にフォームが移動する場合は値を増やしてください。行を厳密に指定する場合は0に設定します。トレードオフ:値を大きくすると行のずれを許容できますが、エージェントが保持しているバッファーのコピーが古い場合、近くにある類似したフォームを誤って照合するリスクが高まります。calva-backseat-driver.editor.lineContextResponsePadding(デフォルト10) — 対象指定に失敗したときに返されるトラブルシューティング用スニペットに含める、指定行の前後の行数です。応答を短くするには値を減らし、周辺のコンテキストを増やすには値を増やしてください。トレードオフ:値を大きくすると、エージェントが再試行する際の手掛かりが増えますが、焦点を絞ったスニペットを送る場合と比べて、追加のトークンや時間がかかることがあります。
MCP
参照:Backseat Driver を MCP サーバーとして設定する
はじめに
前提条件
- VS Code(またはお好みのフォーク)
- Calva
- Calva Backseat Driver
- GitHub Copilot(または MCP 準拠のアシスタント)
使い方
- AI に Clojure と REPL の作法を教えます。例:エージェントへの指示
- Calva を Clojure/ClojureScript プロジェクトに接続します
- Copilot に作業を依頼します。「調査に REPL を使ってください」と伝えれば、意図を理解します。
- 適切な REPL セッションの見つけ方と使い方を把握しています。
- Calva を設定して REPL の出力先をターミナルにし、出力ターミナルを監視して、REPL で何を試しているか確認します
サブエージェント、特に並列で動作するサブエージェントとの相性も非常に良好です。次のように試してみてください。
- 「並列で動作する 3 つのサブエージェントにタスクを割り当て、実装方法の調査に REPL を使うよう依頼してください……」
- REPL の出力には、あなたとエージェントが REPL で何を試しているかが表示されます。
- REPL のセッションに参加できます。
作業中
私たちみんなと同じように、私も AI の使い方を学びながら、一つずつ手探りしています。その間にも、この分野全体は私の学習より速く進んでいます。Backseat Driver は、設定不要ですぐ使える強力な AI ツールを Clojure 開発者に提供するための、私なりの精一杯の取り組みです。
Backseat Driver の基本設計は、時間をかけて有用であることが実証されてきました。一方、新しいことを学ぶたびに、少しずつ改善も重ねてきました。こうして学んだことの多くは、ユーザーの皆さんから教わりました。
Backseat Driver を使ってみた感想や、追加してほしい機能をぜひお聞かせください。🙏
コントリビューション
コントリビューションを歓迎します!Issue、PR など、どんな形でも構いません。PR を送る前に、解決したい問題を記載した Issue を作成していただけると助かります。作業を始める前に、Issue について相談していただいても構いません。
ライセンス 🍻🗽
オープンソースの活動をご支援ください ♥️
以下のリンクから、私の活動を応援していただけます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。