𝗜 𝗕𝘂𝗶𝗹𝘁 𝗔 𝗟𝗼𝗰𝗮𝗹 𝗖𝗼𝗻𝘁𝗿𝗼𝗹 𝗣𝗹𝗮𝗻𝗲 𝗙𝗼𝗿 𝗠𝘆 𝗖𝗼𝗱𝗶𝗻𝗴 𝗔𝗴𝗲𝗻𝘁𝘀

異なるAIエージェントを使い分けるのは、かつては非常に厄介なことでした。

私はCopilot、Claude Code、OpenCodeを使用していました。それぞれのツールに独自のホームディレクトリ、設定、メモリがありました。新しいスキルやルールを追加するたびに、「このツールはどこにそれを期待しているのか?」と自問しなければなりませんでした。

私のホームディレクトリは、AIフォルダが詰め込まれたガラクタ入れのようになってしまいました。

エージェント間でプランを引き継ぐためにMarkdownファイルを使うことも試みました。多少の助けにはなりましたが、うまくいきませんでした。あるエージェントが前提条件を見落とすと、次のエージェントが誤った結果を出力してしまうのです。ファイルはデータを提供してくれますが、共有されたコンテキスト(文脈)までは提供してくれませんでした。

私は以下のことを実現する方法を必要としていました:

  • 高レベルなルールを一度だけ記述する。
  • 権限ルールを一箇所にまとめて管理する。
  • スキルを手動でコピーする手間をなくす。
  • 異なるプロジェクトやセッション間でメモリを共有する。

これを解決するために、ローカル・コントロールプレーンを構築しました。

私のセットアップの核となるのは、単一のディレクトリ ~/.ai です。

バラバラのフォルダを作る代わりに、シンボリックリンク(symlinks)を使用しています。ツール側は自分自身のスペースにいると思い込んでいますが、実際の構造は一箇所に集約されています。また、すべてのモデルのトラフィックをローカルプロキシ経由でルーティングし、MCPを介してメモリ用に共有SQLiteデータベースを使用しています。

これにより、2つの異なる役割を分離できます:

  1. ルーティング:モデルのリクエストは、プロバイダーに届く前にローカルプロキシを経由します。
  2. メモリ:長期的に保持すべき事実は、ローカルストアに保存されます。

モデルの挙動がおかしい場合はプロキシを確認し、エージェントが詳細を忘れた場合はメモリを確認します。これにより、デバッグが容易になります。

私の共有メモリには、再発見するのにコストがかかるものが保存されています:

  • プロジェクトの決定事項
  • アーキテクチャに関するメモ
  • ワークフローの好み
  • 再発するバグ

また、セキュリティも一元化しました。コーディング標準や禁止コマンドには共有ファイルを使用しています。これにより、エージェントを切り替えても環境の安全性に変化が生じないようにしています。

これは、一つの完璧なエージェントを見つけるための話ではありません。エージェント間で十分なコンテキストを共有させることで、エージェントを切り替えても「最初からやり直し」だと感じさせないようにするためのものです。

Source: https://dev.to/sperekrestova/i-built-a-local-control-plane-for-my-coding-agents-1bf7

Optional learning community: https://t.me/GyaanSetuAi