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 の namedescription)とスクリプトを置いたディレクトリにすぎず、Claude Code や Codex CLI の Agent Skills 標準と互換性がある。

実際に試す

前提

  • Node.js 22.19.0 以上(Pi の package.jsonenginesnode >=22.19.0 を要求する。node -v で確認)
  • Anthropic の API キー、または Anthropic / OpenAI / Google などのサブスクリプション
  • 本稿は npm パッケージ @earendil-works/pi-coding-agentv0.80.6 で確認(バージョンは日々更新されるため、下記コマンドで最新が入る)

Node のバージョンを確認しておく。

1
2
node -v
# v22.19.0 以上であることを確認

1. インストール

グローバルにインストールする。--ignore-scripts は公式 README のとおり付ける(postinstall スクリプトを走らせない)。

1
npm install -g --ignore-scripts @earendil-works/pi-coding-agent

インストールできると pi コマンドが使えるようになる。バージョンを確認する。

1
pi --version

期待される出力(バージョン番号は入れた版に依存する):

1
0.80.6

2. API キーを設定して起動

Anthropic の API キーを環境変数に入れて pi を起動する。キーは Anthropic Console の「API Keys」から発行する。

1
2
export ANTHROPIC_API_KEY="sk-ant-...."   # 自分のキーに置き換える
pi

サブスクリプション(既存の Claude / OpenAI アカウント)を使う場合は、キーを設定せずに起動して対話内で /login を実行し、プロバイダを選ぶ。

1
/login

3. ワンショットで動かす(print モード)

対話 UI を開かず、1回のプロンプトだけ投げて結果を標準出力に得るには -p(print モード)を使う。CI やスクリプトに組み込みやすい。

1
pi -p "カレントディレクトリの .ts ファイルを一覧して"

Pi は piped stdin を初期プロンプトにマージするので、ファイルの内容を渡して要約させることもできる。

1
cat README.md | pi -p "この文書を3行で要約して"

-p を付けると対話ループに入らず、応答を出力して終了する。パイプで別コマンドに繋げられる。

4. モデルを切り替える

Pi はプロバイダごとに tool 対応モデルのリストを持っている。--modelprovider/model 形式を渡すと切り替わる。

1
pi --model openai/gpt-4o "この関数をリファクタして"

5. 最小の skill を置いてみる

lazy skills の挙動を確かめるため、プロジェクト直下に skill を1つ置く。ディレクトリは .pi/skills/<name>/ で、中に SKILL.md を用意する(front-matter の name は小文字英数字とハイフンのみ)。

1
2
3
4
5
6
7
8
9
10
11
12
13
mkdir -p .pi/skills/hello
cat > .pi/skills/hello/SKILL.md <<'EOF'
---
name: hello
description: プロジェクトの挨拶メッセージを表示する
---

# hello skill

`greeting.txt` があればその内容を、なければ "Hello from pi skill" を表示する。
EOF

echo "こんにちは、Pi の skill から" > .pi/skills/hello/greeting.txt

pi を起動し、対話内で skill を明示的に呼び出す。

1
/skill:hello

このとき初めて 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 を試す - システムプロンプト1000トークン未満のミニマル・ターミナルエージェント
https://blog.hashito.biz/2026/07/10/try-pi-coding-agent-minimal-terminal-harness/
著者
hashito
作成日
2026年7月10日
著作権