pi cheat-sheets · 入力フロー

AIエージェントの「入力」
ここまで設計されている話

コーディングエージェント pi は、ユーザーが打ったテキストを
5つの層を通してから LLM に渡している。
その「層」が何で、なぜ偉いのかを1枚にしてみた。

5段パイプライン 画面 / LLM 分離 拡張フック Progressive Disclosure

15段パイプライン

ユーザー入力から LLM への送信まで。順番に意味がある。

1

Extension Command

/cmd を直接実行。LLM を呼ばずに自前処理で完結できる。

e.g. /skill-list
2

input event

拡張がユーザーの発話そのものを書き換える。画面にも書き換え後が残る

handled で後段をスキップ可
3

skill / template expansion

/skill:name/template を本文に展開。画面はクリーン、LLM にはフル本文

on-demand expansion
4

before_agent_start

LLM に渡す直前に system prompt や追加 message を裏で注入。画面は無風。

inject without showing
5

agent_start → LLM

組み立てたものを送信。全部 session.jsonl に残る。

audit trail
早い層はそこで終わってもいい(コスト0)
進めば進むほどLLM コストが乗っていく →

2何が嬉しいのか

普通のチャット UI と pi の決定的な差を、3点だけ。

① 画面に出す情報と、LLM に渡す情報を分けられる

従来の AI チャット

  • 入力 = LLM が読むテキスト
  • コンテキスト盛ると画面が長文だらけ
  • 「あの時 AI は何を見ていた?」を後から追えない

pi の設計

  • /skill:name は画面 1 行、LLM には数百行
  • 裏で before_agent_start が system prompt を注入
  • session.jsonl に展開後のフル本文が必ず残る

② 5つのフックが、それぞれ違う仕事を持つ

「フックがいっぱい」じゃない。重複がないのが偉い。やりたいことごとに、最適な差し込み口がひとつだけ決まる。 しかも早い層は後段をスキップできる = 軽い処理は手前で吸って、LLM コストをかけない階段構造

そして全部、本体をフォークせずに拡張用ディレクトリへ 10〜20 行の TypeScript を置くだけで割り込める。 「ちょっと不便だな」が「明日には拡張で直してる」になる。

③ Progressive disclosure でコストが膨らまない

全部 system prompt 方式

  • スキルが増えるたび毎ターンのトークン数が増える
  • 使わないスキルにも毎回お金を払う
  • コンテキストウィンドウを食い潰す

pi (Agent Skills 仕様)

  • 起動時の system prompt は「名前 + 説明」だけ
  • AI が「これ要る」と判断した時だけ read で取りに行く
  • 棚に 100 個積んでも起動コストはほぼ変わらない

3覚えるべき判断ルールはひとつ

これだけで、画面に何が出るかを毎回正しく予測できる。

ユーザーの発話テキストを
書き換えたか?
YES → 画面に出る input transform / Extension Command
NO → 画面には出ない skill / template / before_agent_start

4触ってみたい人向け

npm から1行。気に入ったら、自分用の拡張を1個書いてみてほしい。

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

📝 全文解説(note 記事)

このインフォグラフィックの背景にある設計思想を、もう少し言葉でじっくり読みたい人へ。

note で読む →

🔗 ソース

公式モノレポ / npm パッケージはこちら。

GitHub → npm →