Pi coding agent を試す - システムプロンプト1000トークン未満のミニマル・ターミナルエージェント
Mario Zechner(libGDX の作者、GitHub では badlogic)が公開した Pi coding agent が、2026年に入ってから開発者界隈で話題になっている。Flask / Jinja2 の作者 Armin Ronacher も自身のブログで取り上げ、「私が知る限り最も短いシステムプロンプトを持つエージェントで、ツールは Read・Write・Edit・Bash の4つだけ」と評した。
話題の中心はトークン効率だ。Claude Code や OpenCode がシステムプロンプト+ツール定義で 7,000〜10,000 トークン前後を消費するのに対し、Pi はシステムプロンプトとツール定義の合計を 1,000 トークン未満に抑えている。約10倍の差だ。この記事では、Pi が何を削って何を残したのかを整理し、実際に手元にインストールして挙動を確かめる。
背景: 「軸を4ツールに絞り、拡張はコードで」という設計
Pi の設計思想はミニマリズムに振り切っている。既存のコーディングエージェントは context window に多くを詰め込みすぎ、モデルが何をしているかが見えにくい。Pi はそこを反転させ、ハーネス(ループ・ツール・コンテキスト・セッション管理)だけを提供し、MCP・サブエージェント・permission・plan モードといった要素は「プリミティブ」として利用者やコミュニティが後付けする、という割り切りをしている。
デフォルトでモデルに渡すツールは次の4つだけだ。
read— ファイルを読むwrite— ファイルを書くedit— ファイルを部分編集するbash— シェルコマンドを実行する
「何でもできる巨大なツール群」を用意する代わりに、bash を1つ持たせて「必要なツールはエージェント自身にコードで作らせる」方向に倒している。Armin Ronacher の言う「software building software(ソフトウェアがソフトウェアを作る)」がそのまま自然なワークフローになる。
lazy skills — 使うときだけ context に載せる
トークンを抑えつつ機能を落とさない仕掛けが lazy skills だ。各 skill は毎ターンの context には「説明文(description)」だけを載せ、実際のフル手順やツールスキーマは /skill:name で明示的に呼び出したとき、または自動検出されたときにだけロードされる。MCP がセッション開始時に全ツールのスキーマを preload するのと対照的で、一部のツールしか使わないタスクでは大きなトークン節約になる。これは Anthropic の progressive disclosure(必要になったときに必要な情報だけを開示する)という考え方に沿っている。
skill 自体は SKILL.md(front-matter の name と description)とスクリプトを置いたディレクトリにすぎず、Claude Code や Codex CLI の Agent Skills 標準と互換性がある。
実際に試す
前提
- Node.js 22.19.0 以上(Pi の
package.jsonのenginesがnode >=22.19.0を要求する。node -vで確認) - Anthropic の API キー、または Anthropic / OpenAI / Google などのサブスクリプション
- 本稿は npm パッケージ
@earendil-works/pi-coding-agentの v0.80.6 で確認(バージョンは日々更新されるため、下記コマンドで最新が入る)
Node のバージョンを確認しておく。
1 | |
1. インストール
グローバルにインストールする。--ignore-scripts は公式 README のとおり付ける(postinstall スクリプトを走らせない)。
1 | |
インストールできると pi コマンドが使えるようになる。バージョンを確認する。
1 | |
期待される出力(バージョン番号は入れた版に依存する):
1 | |
2. API キーを設定して起動
Anthropic の API キーを環境変数に入れて pi を起動する。キーは Anthropic Console の「API Keys」から発行する。
1 | |
サブスクリプション(既存の Claude / OpenAI アカウント)を使う場合は、キーを設定せずに起動して対話内で /login を実行し、プロバイダを選ぶ。
1 | |
3. ワンショットで動かす(print モード)
対話 UI を開かず、1回のプロンプトだけ投げて結果を標準出力に得るには -p(print モード)を使う。CI やスクリプトに組み込みやすい。
1 | |
Pi は piped stdin を初期プロンプトにマージするので、ファイルの内容を渡して要約させることもできる。
1 | |
-p を付けると対話ループに入らず、応答を出力して終了する。パイプで別コマンドに繋げられる。
4. モデルを切り替える
Pi はプロバイダごとに tool 対応モデルのリストを持っている。--model で provider/model 形式を渡すと切り替わる。
1 | |
5. 最小の skill を置いてみる
lazy skills の挙動を確かめるため、プロジェクト直下に skill を1つ置く。ディレクトリは .pi/skills/<name>/ で、中に SKILL.md を用意する(front-matter の name は小文字英数字とハイフンのみ)。
1 | |
pi を起動し、対話内で skill を明示的に呼び出す。
1 | |
このとき初めて SKILL.md のフル手順が context にロードされる。呼び出すまでは説明文(description)だけが system prompt 側に載っている状態で、これが lazy skills の要点だ。skill は ~/.pi/agent/skills/(グローバル)や .pi/skills/(プロジェクト)などから探索される。
まとめ
Pi の押さえどころは次の3点。
- ツールは
read/write/edit/bashの4つだけ。足りない機能はbash経由でエージェント自身に作らせる思想。 - システムプロンプト+ツール定義が 1,000 トークン未満。Claude Code など(7,000〜10,000 トークン級)に対して約10倍軽い。
- lazy skills で、skill は説明文だけを常時 context に載せ、フル手順は呼び出し時にだけロードする(progressive disclosure)。skill は Agent Skills 標準互換で
SKILL.mdを置くだけ。
npm install -g して pi -p "..." を一発叩くだけで、context に何を載せているかが見える「透明な」エージェント体験を確かめられる。既存の重量級エージェントに対する対極として、一度手元で触ってみる価値がある。
参照
- Pi coding agent README(earendil-works/pi): https://github.com/badlogic/pi-mono/blob/main/packages/coding-agent/README.md
- Skills ドキュメント: https://github.com/badlogic/pi-mono/blob/main/packages/coding-agent/docs/skills.md
- Armin Ronacher “Pi: The Minimal Agent Within OpenClaw”: https://lucumr.pocoo.org/2026/1/31/pi/
- npm: @earendil-works/pi-coding-agent: https://www.npmjs.com/package/@earendil-works/pi-coding-agent