初めに
最近、Pi というターミナルのコーディング Agent がかなり話題になっています。
システムプロンプトは 1000 Token 程度。デフォルトのツールは read(読込)、write(書込)、edit(編集)、bash(コマンド実行)の 4 つだけ。
正直、初見は「それだけで本気で開発できるのか?」という印象でした。
そこで今回、bilibili の「Pi 大道至简,超越Codex和Claude Code的极简Agent,保姆级全攻略,一期视频精通」(約45分)を最後まで観て、内容を整理します。
Pi とは
Pi は、ゲームフレームワーク libGDX の作者で知られる Mario Zechner さんが作った minimal terminal coding harness です。
- MIT ライセンスのオープンソース
- ターミナルで動くコーディング Agent
- デフォルトツールは 4 つのみ(read / write / edit / bash)
- システムプロンプトは 1000 Token 前後
動画のキャッチコピーは「大道至简」(大きな道は極めて簡素)。つまり、システムプロンプトもツール数も極限まで削ることで、1 ターンあたりの context 消費を減らし、速度・コスト・安定性に直結させる、という思想です。
動画の中で提示されていた比較イメージは、だいたいこんな感じです。
| 項目 | Pi | Claude Code |
|---|---|---|
| システムプロンプト | 約1000 Token | 約10000 Token超 |
| デフォルトツール | 4つ | 20個超 |
| サポートするプロバイダ | 15以上 | Anthropic 中心 |
| ライセンス | MIT(オープンソース) | クローズド |
ベンチマークについても触れられていて、Terminal-Bench 2.0 などで Pi(Claude Opus 4.6 使用時)が上位に位置し、コード品質・作業速度・コストの観点で Codex CLI や Claude Code のようなメインストリーム Agent を上回る、という話でした。
1. 基礎インストール
インストールは 1 コマンドです。
npm install -g --ignore-scripts @earendil-works/pi-coding-agent
インストーラ スクリプトを使う方法もあります。
curl -fsSL https://pi.dev/install.sh | sh
認証は 2 つの方法があります。
# API キーを使う
export ANTHROPIC_API_KEY=sk-ant-...
pi
# 既存のサブスクリプションを使う
pi
/login # プロバイダを選択
/login では Anthropic Claude Pro/Max、OpenAI ChatGPT Plus/Pro(Codex)、GitHub Copilot などの既存サブスクがそのまま使えます。
動画のポイントは、ここまでの学習コストが非常に低いという点です。
インストールして、対話しただけで動き始めます。
2. モデルの設定
動画の中で最も時間を取られていたのが、ここです(約9分)。
Pi は 15 種類以上の LLM プロバイダに対応しています。主なところを挙げると。
- Anthropic
- OpenAI
- Google Gemini / Vertex
- DeepSeek
- xAI
- OpenRouter
- Amazon Bedrock
- Azure OpenAI
- Groq / Cerebras / Mistral など
セッション途中でモデルを切り替えるのが普通にできます。
/model # モデル選択画面
Ctrl+L # 同上
Shift+Tab # thinking level の切替(off〜max)
カスタムプロバイダは ~/.pi/agent/models.json で追加でき、OpenAI / Anthropic / Google 互換の API なら設定だけで動きます。
ローカルモデルの llama.cpp のような router server にも接続できます。
「プロバイダにロックされない」のは、Pi が強く打ち出している利点の一つです。
3. セッション管理
Pi のセッションは ツリー構造の JSONL ファイルとして保存されます。
保存先は ~/.pi/agent/sessions/ で、メッセージごとに id と parentId があります。
この構造があるおかげで、次のような操作が全部「ファイル 1 つ」の中で完結します。
pi -c # 直近のセッションを継続
pi -r # 過去のセッションから選択
セッション中の主要コマンドです。
| コマンド | 役割 |
|---|---|
/resume |
過去のセッションから選択して再開 |
/new |
新しいセッションを開始 |
/tree |
過去の任意の位置に飛んで、そこから続行 |
/fork |
過去の user message から新セッションを作る |
/clone |
現在のブランチを新セッションに複製 |
/compact |
context を手動で圧縮(要指定も可) |
/export |
HTML / JSONL にエクスポート |
/share |
GitHub gist として共有リンクを生成 |
特に /tree は面白いです。
会話の「どこでも」に戻れて、そこから分岐して続きを書けます。
全履歴が 1 ファイルに残るので、「あ、30 分前のやり方で進めたかった」を即座に実現できます。
/compact は古いメッセージを要約して context を詰めます。
デフォルトでは自動 compaction も有効で、context 溢出しても自動で回復してリトライします。
4. プラグイン拡張(Extensions)
ここからが Pi の本番で、動画でも約 10 分使われていました。
Pi のカスタマイズは 4 レイヤー構成になっています。
Extensions (TypeScript) → ツール・コマンド・UI・イベント処理
Skills → Markdown で書いた手順書
Prompt Templates → 再利用プロンプト
Themes → 表示テーマ
これらは Pi Packages にまとめ、npm や git 経由で共有できます。
pi install npm:@foo/pi-tools
pi install git:github.com/user/repo
pi list
pi update --all
Extension なら、次のようなことが全部できます。
- カスタムツールの追加(組み込みツールの差し替えも可)
- sub agent や plan mode の自作
- 権限制御(permission gate)やパス保護
- status line / header / footer などの UI 追加
- Git checkpoint / auto-commit
- MCP server の統合
- (待機中に Doom を動かすのすら可)
動画のポイントは、他の Agent が製品に焼き込んでいる機能(sub agent、plan mode、permission ポップアップ)を、全部 Extension で作れるという点です。
だからコアは minimal に保てている、というのが Pi の設計思想です。
5. Skills
Skills は Markdown ファイルで書かれた「能力パッケージ」です。
Agent Skills 標準に従い、SKILL.md が入ったフォルダが 1 つの skill になります。
<!-- ~/.pi/agent/skills/my-skill/SKILL.md -->
# My Skill
ユーザーが X について質問したときに使う。
## Steps
1. これをする
2. 次にあれをする
/skill:name で明示的に呼び出せるほか、タスクが合えば Agent が自動で読み込みます。
ここでのポイントは、skill は必要に応じて context に入るという設計です。
全部をシステムプロンプトに詰め込むのではなく、使うときにだけ展開する。
これが 1000 Token のシステムプロンプトを保ち続ける仕組みになっています。
6. Pi Web(ブラウザ UI)
動画ではブラウザ UI「Pi Web」の紹介もありました。
npx @agegr/pi-web@latest
主な機能です。
- セッション workspace:プロジェクト別に過去の会話を一覧・再開・リネーム・削除
- 2 系統の分岐:メッセージから新セッションを作る、現セッション内でブランチを作る
- プロジェクトファイルの閲覧、Git diff の表示
- Git worktree の切り替え
- プロバイダログイン、モデル、パッケージ、skill の Web からの設定
ターミナル版の pi と同じ ~/.pi/agent 設定とセッションファイルを共有するので、ブラウザとターミナルを来回で使い分けるのが便利です。
7. 記憶システム
動画の「記憶」に関する整理は、意外にシンプルでした。
Pi に別途の長期記憶 DB は不要、というスタンスです。
1. セッション自体が記憶
全履歴が JSONL で保存され、いつでも再開できる
2. AGENTS.md / CLAUDE.md
プロジェクトの規約・指示・コマンドをこのファイルに書いておく。
グローバル設定とディレクトリ階層から起動時に読み込まれる
3. Compaction
長いセッションは古い部分を要約して詰める。
ただし完全な履歴は JSONL に残るので /tree で戻れる
つまり、「何をやってきたか」はセッションに、「何を守ってほしいか」は AGENTS.md に、という役割分担です。
派生として、Extension で memory 機能を足すのも定番の使い方になります。
8. 安全な使い方
Pi は 組み込みサンドボックスを持っていません。
read / write / edit / bash は、pi を起動したユーザーの権限で動きます。Extension も同じです。
これは設計上の意図です。
中途半端な in-process サンドボックスは「安全に見える境界」にしかならないので、本物の隔離は OS やコンテナ / VM の層に任す、という公式スタンスです。
動画では、信頼できないリポジトリや無人実行は必ず隔離環境で、という話がありました。
# 1. pi 全体を Docker に入れる(最も単純)
# 2. ホストで pi を動かし、ツール実行だけを
# ローカル micro-VM(Gondolin)にルーティングする
pi -e ~/.pi/agent/extensions/gondolin
もう一つ、project trust という仕組みがあります。
リポジトリが pi の設定や Extension を勝手に書き換えないための「入力読み込みガード」で、デフォルトは未判定のプロジェクトに対して確認を求めます。
ただし注意点として、これは prompt injection まで防げるものではありません。
不特定のコードや文書を読む作業では、そこも踏まえて使う必要があります。
9. プラグインを自作する
動画の最後(約5分)は「自分で Extension を書く」実装編です。
最小の Extension は、TypeScript ファイル 1 つです。
export default function (pi: ExtensionAPI) {
pi.registerTool({
name: "deploy",
// ツール定義(入力 schema、実行処理)
});
pi.registerCommand("stats", {
// カスタムコマンドの定義
});
pi.on("tool_call", async (event, ctx) => {
// ツール呼び出しを拦截して処理する
});
}
このファイルを ~/.pi/agent/extensions/(ユーザー全体)か .pi/extensions/(プロジェクト単位)に置けば、pi 起動時に自動で読み込まれます。
単発で試すなら pi -e ./my-ext.ts です。
公式リポジトリには auto-commit、git checkpoint、MCP 統合、カスタム compaction などのサンプルが多数あります。
「欲しい機能が入っていない」は Pi では起ころうとする前提で、自分で足すかパッケージを入れる、が標準的な流れです。
まとめ
動画の内容をざっくりまとめると、次です。
- インストール: npm 1 コマンド、
/loginで既存サブスクに繋ぐだけ - モデル: 15+ プロバイダ対応、セッション途中で切替可、カスタムプロバイダも可
- セッション: ツリー構造の JSONL。
/treeと/forkが実用的 - Extension: ツール・UI・sub agent・plan mode まで自作可能
- Skills: Markdown の手順書を必要時に context へ
- Pi Web: ブラウザ UI でセッション・ファイル・設定を管理
- 記憶: セッション + AGENTS.md で基本的に足りる
- 安全: 組み込みサンドボックスなし。コンテナ / VM を使う
- 自作: Extension は TypeScript ファイル 1 つから
個人的に残ったのは、「必要な機能は自分で作れる」という哲学です。
他の Agent が sub agent や plan mode、permission ポップアップ、MCP を既定で持っていて、外すのが難しいのに対して、Pi は逆で、コアは minimal に保ち、足りないものは Extension やパッケージで足す、という設計です。
最初は「ツール 4 つと 1000 Token のプロンプトでいいのか?」と思っていましたが、動画を観て、その極端な簡素さこそが速度とコストに効いていることが分かった、というのが率直な感想です。
気になる方は、45 分前後の元動画を見るのがおすすめです。
出典: