Pi への移行 #6
Labels
No labels
enhancement
No milestone
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
genji1024/containerized-agents#6
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
OpenCode から Pi Coding Agent に移行する。ただし、現在のコンテナによる隔離やサブエージェント構成などを全て保ったまま移行する。
@bot-genji1024 MCP やサブエージェントの機能は Pi に実装されていません。なるべく自前での実装を避けて OSS の拡張を利用したいです。候補を提示してください。
@genji1024 お待たせしました。「MCP・サブエージェント機能をなるべく自前実装せず OSS 拡張で補う」ための候補調査結果です。★数・日付・バージョンは本日(2026-09-02)時点の実測値です。
前提(Pi 本体の公式見解)
(出典: https://github.com/earendil-works/pi
packages/coding-agent/README.md)pi.registerTool()で LLM から呼べるツールを登録できます。~/.pi/agent/extensions/(ユーザー)・.pi/extensions/(プロジェクト)に置くと自動読み込みされます(公式 docs: https://pi.dev/docs/latest/extensions )。以下の候補はすべてこの仕組みの上に成り立っています。badlogic/pi-monoはearendil-works/piに移管済み(リダイレクト確認済み)。npm パッケージは@earendil-works/pi-coding-agent(最新 0.84.4、MIT、更新は活発)。MCP 対応の候補
現行の 5 MCP サーバーはすべて「リモート(streamable HTTP)+ 一部に Authorization ヘッダー +
${env:...}展開」構成のため、この2点(リモート HTTP 対応 / ヘッダー・環境変数のテンプレート展開)を評価軸にしました。第1候補: pi-mcp-adapter(nicobailon)★1,391 / v2.32.1(2026-09-01 リリース)/ MIT
pi-mcp-adapter)@modelcontextprotocol/client)を Pi 拡張としてラップする構成で、StreamableHTTPClientTransport/SSEClientTransport/StdioClientTransportをサポート(server-manager.tsで確認済み)。.mcp.json/~/.pi/agent/mcp.json/.pi/mcp.json等に対応。url・headers・envで${VAR}/$env:VARの展開に対応し、bearerToken/bearerTokenEnvフィールドもあるため、現行の「Authorization ヘッダー + 環境変数」構成を満たせます。mcpプロキシツール経由(コンテキスト節約)、directToolsで個別ツールを直接露出も可能。Authorization: Bearer ${...}の記載例そのものはありませんが、headersの${VAR}展開とbearerToken/bearerTokenEnvは仕様として明記されています。第2候補: dmmulroy/pi-mcp ★25 / 最終更新 2026-08-16 / ライセンスファイル無し
opencode.json(c)の remote 設定をそのまま読み込めます(README にtype: "remote"+url+headers: { Authorization: "Bearer ${TOKEN}" }の記載例あり)。移行作業量は最小。pi install git:...)のみ、ライセンスファイルが無い点は採用時のリスクです。見送った候補(参考)
headersフィールドが無く、Authorization ヘッダーを送れないため不適。サブエージェント対応の候補
現行は 11 本の Markdown エージェントファイル(frontmatter: description / mode / model / permission)を
taskツールで階層呼び出しする構成です。第1候補(構造維持重視): mjakl/pi-subagent ★77 / 最終更新 2026-09-02 / MIT
@mjakl/pi-subagent)~/.pi/agent/agents/*.md、プロジェクト:.pi/agents/*.md」という仕様で、現行の 11 ファイル構成をほぼ 1:1 で移し替えられます。第2候補(成熟度重視): pi-subagents(nicobailon)★3,433 / 最終更新 2026-09-02 / MIT
pi-subagents)/council等)付き。pi install npm:pi-subagentsで導入。その他の候補(参考)
推奨案
採用後に別途検証が必要な論点(候補選定とは別)
ENTRYPOINT ["pi"])はありますが、PID-1 + dockerd の組合せでの実績までは確認できていません。非対話モード(-p/--mode json/--mode rpc)の利用が鍵になりそうです。~/.config/opencode/、Pi は~/.pi/agent/配下のため、ボリュームマウントの張り替えが必要です。OPENCODE_DB(opencode.db)を参照しているため、Pi のセッション保存先への対応が必要です。主な情報源
ご確認のうえ採用方針(MCP / サブエージェントそれぞれの候補)をいただければ、実装(Dockerfile・設定移行)の着手可否を改めてお伺いします。
@bot-genji1024 推奨案でいきましょう。実装に着手してください。
実行結果
実施内容
変更ファイル
dockerfiles/pi/Dockerfile+entrypoint.sh— DinD イメージ(opencode パターン踏襲)compose.yaml—piサービス追加のみ(削除 0 行).config/pi/mcp.json/settings.json— 5 サーバー定義・最小設定.config/pi/agents/*.md(11 件) — 現行エージェント 1:1 移植動作確認
docker compose config— 成功関連
備考
ponytail:コメントで明記