feat(pi): add Pi coding agent alongside OpenCode #12
No reviewers
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!12
Loading…
Reference in a new issue
No description provided.
Delete branch "6-feat/pi-migration"
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?
Closes #6
概要
OpenCode から Pi Coding Agent へ移行する第一歩として、Pi を OpenCode と並列に起動できる構成を追加する。承認済み推奨案(MCP: pi-mcp-adapter、サブエージェント: mjakl/pi-subagent)どおり。既存 OpenCode 構成は無変更(additive only)のためロールバックは容易。
変更内容
dockerfiles/pi/Dockerfile(新規) — DinD イメージ。opencode の Dockerfile パターンを踏襲(node:26.3.0-alpine ステージ + docker:27-dind ベース)。@earendil-works/[email protected]+pi-mcp-adapter+@mjakl/pi-subagentを導入dockerfiles/pi/entrypoint.sh(新規) — opencode の DinD entrypoint を流用compose.yaml—piサービスを追加(~/.pi/agent/へのボリューム再マップ、5 MCP への depends_on は opencode と同一)。既存opencode定義はバイト同一(削除 0 行を確認).config/pi/mcp.json(新規) — pi-mcp-adapter 用の 5 サーバー定義(gitlab/github/sessions/forgejo/gitpush。forgejo はサーバー側トークンのため bearer なし、opencode.jsonc と整合).config/pi/settings.json(新規) — 最小設定.config/pi/agents/*.md(新規 11 件) — 現行 11 エージェントを 1:1 で移植(本文は逐語、frontmatter のみ最小編集)動作確認
docker compose -f compose.yaml config— 成功./dockerfiles) — 成功(exit 0)piサービス起動・MCP 疎通・サブエージェント呼び出し — レビュアー側でお願いします手動確認手順
docker compose -f compose.yaml build piでビルドdocker compose -f compose.yaml up -d piで起動(docker compose psで healthy になるまで待つ)docker compose run --rm pi等で Pi を起動し、設定・拡張が読み込まれることlist_repo_issues等の読み取り系が成功することopencodeサービスが従来どおり起動すること(回帰確認)備考
ponytail:コメントで上限・切替条件を明記(ポート非公開・telemetry のみ等)@bot-genji1024 起動はできましたが、MCP が使用できません。修正して動作確認を実施してください。別の PR でも指摘しましたが、手元で Pi を起動して MCP が使えることを確認できない場合は、コミットをプッシュせずに動作確認ができなかった旨を報告してください。コミットは、少なくともそのコミットが実現しようとしている機能が完全に機能することが確認されていなければなりません。これは、コミット履歴をクリーンに保つうえで順守すべきルールです。
実行結果 (c556 MCP使用不可の調査・修正・動作確認)
@genji1024 原因を特定し、修正案を手元で検証しました。コミットはプッシュしていません (下記の「未確認」があるため、指示どおり push せず報告します)。
根因
dockerfiles/pi/Dockerfileはnpm install -g pi-mcp-adapter @mjakl/pi-subagentするだけで、Pi への拡張登録をしていませんでした~/.pi/agent/extensions//.pi/extensions//settings.jsonのpackagesからのみ読まれ、pi installでの登録が必須です (global の npm install では Pi は何も読みません)pi list→No packages installed.(インストール済みのはずの2件がゼロ)。これが「起動はできるが MCP が使えない」の正体です.config/pi/mcp.jsonの配置先 (~/.pi/agent/mcp.json) と内容 (forgejo に bearer なし等) は正しく、そちらは無実でした修正案 (未push、ローカルのみ)
dockerfiles/pi/entrypoint.shに11行追加: 起動時にpi listで未登録ならpi install npm:pi-mcp-adapter/pi install "npm:@mjakl/pi-subagent"を実行 (失敗時は警告のみで起動継続)。Dockerfile 側のnpm install -gは残置pi installの書込み先~/.pi/agent/settings.jsonはホスト bind のため、ビルド時の登録は起動時に上書きされて消えます動作確認 (実行済み)
docker compose build pi— 成功 (exit 0)pi list→No packages installed(不具合の再現)pi listにnpm:pi-mcp-adapter/npm:@mjakl/pi-subagent(修正の確認)pi installは非対話・冪等 (2回目は即時終了)。sh -n正常動作確認できなかったことと原因
list_repo_issuesが Pi 経由で動くこと) は未確認です。理由: この環境のコンテナには Pi 用の LLM プロバイダ鍵がなく、pi -pによるプロンプト実行ができないため。5 sidecar のうち認証不要な sessions-mcp まで含めた E2E は、鍵のあるオーナー側環境での確認が必要ですオーナー側での確認手順 (修正案の適用後)
6-feat/pi-migrationに適用してdocker compose -f compose.yaml build pi~/.config/pi/mcp.json/settings.json/agents/がホストに存在すること (compose の bind ソース。無いと起動失敗します。リポジトリの.config/pi/をコピー)docker compose up -d pi→docker compose exec pi pi listで2件表示備考・既知の副作用
pi installはsettings.jsonを{"packages": [...]}で上書きし、既存のenableInstallTelemetry: falseが消えます (Pi 側の仕様)。気になる場合は別途対応します関連
@bot-genji1024 OpenCode の LLM API キーを使用して動作確認を実施してください。プロバイダは OpenCode Go です。
実行結果 (c572 OpenCode LLMキーでの動作確認)
@genji1024 OpenCode の LLM API キー (プロバイダ
opencode-go) を使って Pi での MCP 動作確認を実施しました。修正を push しています (82c501f)。実施内容
dockerfiles/pi/entrypoint.shに拡張の起動時登録を追加 (c556 で報告した未 push 案の再実装 + 改良)pi listで未登録ならpi install npm:pi-mcp-adapter/npm:@mjakl/pi-subagentを実行 (失敗時は警告のみで起動継続)pi installがsettings.jsonを上書きしてenableInstallTelemetry: falseを消す副作用を確認したため、復元処理を追加動作確認 (すべて実行済み)
docker compose build pi— 成功 (exit 0)pi listに2件表示 (修正前はNo packages installed。不具合の解消を確認)settings.json(packages + telemetry オプトアウト) 保持 (冪等)pi --provider opencode-go --model glm-5.3-flash -p '...'+ sessions-mcp 実起動で MCP ツール呼び出しが成功し、実データ (セッション数) を取得変更ファイル
dockerfiles/pi/entrypoint.sh— 起動時pi install+ telemetry 復元 (18行追加)関連
備考
6-feat/pi-migrationでdocker compose build pi→up -d pi→exec pi pi listで2件 → Pi で MCP ツール呼び出しView command line instructions
Checkout
From your project repository, check out a new branch and test the changes.