世界を動かす技術を、日本語で。

Pi – ミニマルなターミナルコーディングハーネス

概要

pi はミニマルなターミナル用コーディングハーネス。 TypeScript 拡張やスキル、プロンプト、テーマで自由に拡張可能。 4つの動作モード と多彩なプロバイダー対応。 セッション履歴やコンテキスト管理も柔軟にカスタマイズ。 npmgit からパッケージ導入・共有が可能。

pi-coding-agent:特徴と概要

  • pi は最小限の機能で設計された ターミナル・コーディングハーネス
  • ワークフローに合わせて TypeScript拡張スキルプロンプトテンプレートテーマ でカスタマイズ可能
  • 拡張やツール、テーマを piパッケージ としてnpmやgitで共有・インストール
  • 初期状態で十分な機能を持つが、 サブエージェントプランモード などは非搭載
  • 必要な機能は pi に依頼して自動生成、またはパッケージで追加
  • 4つのモード :インタラクティブ、出力/JSON、RPC、SDK
  • clawdbot による実例インテグレーション

プロバイダーとモデル

  • 15以上のプロバイダー数百のAIモデル に対応
    • Anthropic, OpenAI, Google, Azure, Bedrock, Mistral, Groq, Cerebras, xAI, Hugging Face, Kimi, For Coding, MiniMax, OpenRouter, Ollama など
  • APIキーやOAuth で認証
  • セッション中に /modelCtrl+L でモデル切替
  • Ctrl+P でお気に入りモデルを順次切替
  • models.json や拡張でカスタムプロバイダー・モデル追加

セッション管理

  • ツリー構造 で履歴を保存・共有
  • /tree コマンドで任意の過去ポイントから再開
  • 全分岐を 単一ファイル で管理
  • メッセージ種別でフィルタ、ブックマークラベル付与
  • /export でHTML出力、 /share でGitHub gistにアップロードし共有URL生成

コンテキストエンジニアリング

  • 最小限のシステムプロンプト と拡張性で高度なコンテキスト制御
  • AGENTS.md :~/.pi/agent/や親ディレクトリ、カレントディレクトリからプロジェクト指示を自動ロード
  • SYSTEM.md :プロジェクト単位でシステムプロンプトを差し替え・追記
  • 自動要約 :コンテキスト上限近くで古いメッセージを自動要約
  • 拡張で トピックベース要約コード認識要約、別モデル要約も実装可能
  • スキル :必要時のみ読み込む能力パッケージ(プロンプトキャッシュを圧迫しない)
  • プロンプトテンプレート :Markdownで再利用可能。 /name で展開
  • 動的コンテキスト :拡張でメッセージ注入、履歴フィルタ、RAG、長期記憶など実装

メッセージキューイング

  • エージェント動作中でも メッセージ送信可能
    • Enter :ステアリングメッセージ(現在のツール後に実行、残りのツールを中断)
    • Alt+Enter :フォローアップ(エージェント処理完了後に実行)

拡張機能

  • プリミティブな拡張 で自作機能を追加
  • TypeScriptモジュールで ツール・コマンド・ショートカット・イベント・TUI全体 にアクセス可能
  • サブエージェント、プランモード、パーミッションゲート、パス保護、SSH実行、サンドボックス、MCP統合、カスタムエディタ、オーバーレイ、Doom実行まで拡張で実現可能
  • 作りたくなければ pi に依頼して自動生成や、既存パッケージを導入
  • 50以上のサンプル を公式で提供

パッケージ管理

  • 拡張・スキル・プロンプト・テーマ をパッケージ化して配布・導入
  • npmやgitからインストール:
    • $ pi install npm:@foo/pi-tools
    • $ pi install git:github.com/badlogic/pi-doom
  • バージョン固定(@1.2.3や@tag)、 pi update で一括更新、 pi list で一覧、 pi config で設定
  • インストールせずにテスト:pi -e git:github.com/user/repo
  • npmやDiscordでパッケージ検索、 pi-package キーワードで共有

統合と動作モード

  • インタラクティブ :TUIで全機能利用
  • 出力/JSONpi -p "query"でスクリプト利用、--mode jsonでイベントストリーム
  • RPC :stdin/stdout経由のJSONプロトコルでNode以外とも連携(詳細はdocs/rpc.md参照)
  • SDK :アプリ組み込み用。 clawdbot が実例

開発思想と未実装機能

  • pi は拡張性重視でコアを最小限に設計
  • 他ツールが標準搭載する機能も 拡張・スキル・サードパーティパッケージ で構築可能
  • コアはシンプルに保ち、ユーザーのワークフローに合わせてカスタマイズ可能
  • MCP未搭載 :READMEでCLIツール構築や拡張で追加可能
  • サブエージェント非搭載 :tmuxでpiインスタンス起動や拡張・パッケージで実現
  • パーミッションポップアップ非搭載 :コンテナ実行や拡張で独自フロー作成
  • プランモード非搭載 :ファイル出力や拡張で実装可能
  • ToDo管理非搭載 :TODO.mdファイルや拡張で対応
  • バックグラウンドbash非搭載 :tmux利用で完全可視化・直接操作
  • 詳細は 公式ブログ を参照

Hackerたちの意見

今のお気に入りのハーネスだよ。自己拡張できるからめっちゃ効果的に使ってる。これをhttps://github.com/rcarmo/vibesにサポート追加したんだけど、ACPよりもずっと速いんだよね。

わあ、これめっちゃ好き!自分でも作ろうとしてたけど、これがまさに求めてたものだわ。

どれと比較したの?

ちなみに、oh-my-piっていうフォークがあるよ: https://github.com/can1357/oh-my-pi。これはhttps://blog.can.ac/2026/02/12/the-harness-problem/で有名なやつ。俺はこれを日常的に使ってるけど、piも大好きだよ。

プリコンフィグされたPI: https://github.com/can1357/oh-my-pi

oh-my-piのウェブツールが結構好きなんだけど、普通のPiツールやプラグインに抽出できるといいなぁ… いつか調べてみようかな。

このフォークの大ファンで、ここ数週間ずっと使ってる。codex/claudeのコードからopencode、そしてpi、最後にoh-my-piって感じで進化したよ。

「コーディングハーネス」って公式用語なのかな?もしコーディングじゃない似たようなインターフェース(CLIだけじゃなくてGUI)を作りたいなら、なんて呼ぶんだろう?同じアイデアで、モデルを切り替えたり、質問したり、画像をドラッグ&ドロップしたりする感じで…

LLMハーネスはもう1年くらい流行ってるね…

そうだね。「AIコーディングアシスタント」や「エージェントコーディングフレームワーク」みたいな言葉はあまりにも曖昧で、これらのツールを本当に区別するには不十分だと思う。「harness」は結構いい感じだね。単語として使えるし、この文脈では意味が詰まりすぎてないから使いやすい。

Piはデザインの選択が完璧だね。マリオ(とオリジナルスタンのアーミン)に感謝!素晴らしいセンスが光ってる。

AIコーディングの時代に、なんでこれをJavaScriptで実装するのか全然わからない。

Hugging FaceがPiでローカルモデルを使うための手順を提供してるよ: https://x.com/victormustar/status/2026380984866710002

Piを数日使ってみた人に会ったことがないんだけど、みんなそれを日常的に使うようになってるよね。自分の好きなようにツールを設定できる自由を味わったら、もう戻れないよ。しかもその上にクールなものも作れるし!

Claudeコードが提供してない、自分で作った機能で一番好きなものは何?

「数日間piを試して、日常的に使わない人に会ったことがない。お会いできて嬉しい!私にとっては、Claude CLIやOpenCodeと比べると質が全然違った。仕事を終わらせることができなかった。拡張には面白いけど、生産性向上には繋がらなかった。」

Piはpi-coding-agentのEmacsパッケージを通じて使ってるんだけど、RPCモードを使ってMarkdownのバッファを2つ(入力用とチャット用)作成してる。これが、gemini-cliみたいなハーネスのひどいTUIよりずっといい感じだよ(EmacsもTUIとしては完璧に動くし!)。拡張性も素晴らしい。自分の好きなイシュートラッカーを使うのも簡単だったし、最近は組み込みのreadwriteコマンドをEmacsのバッファを使うようにオーバーライドしたんだ。次はeditをオーバーライドしたいけど、LLMの強み(つまり、正確なテキストにマッチさせないこと)とEmacsの強み(マッチングにtree-sitterクエリを使うとか?)を活かす方法がまだ見つかってない。一般的なemacs_evalも作ったんだけど、これを使ってEWWでドキュメントをブラウズしてる。

いいね!readwriteをEmacsのバッファにマッピングしてるのが気になるな。それって、そのコマンドがEmacsでファイルを開いて、そこで読み書きするってこと?ここにPi Emacsモードのリンクも貼っとくね、興味ある人はチェックしてみて:https://github.com/dnouri/pi-coding-agent -- もしくは、M-x package-install pi-coding-agent そこで、readwriteeditツールコールの出力でRETを押すと、対応するファイルと位置がEmacsのバッファで開くような楽しい統合を作ってるところだよ。Piの素晴らしいセッションとツリーのブラウジングとの互換性も、もうすぐ実装される予定。あとはMagitもね :-)

私にとって、Piと「クロー現象」の最も興味深い点は、オープンソースにとって何を意味するのかってことだね。機能リクエストを求めたり、オープンソースのリポジトリにPRを提出するのはもう古いって感じ。インストールする拡張機能の代わりに、機能を追加する方法をコーディングエージェントに伝えるスキルファイルをダウンロードするようになる。ソフトウェアは単なるアーティファクトから、誰のコピーとも違う生きたツールに変わるんだ。新しいパラダイムでのコラボレーションのためにどんなツールが出てくるのか、すごく楽しみだよ。

みんなが基本的に異なるソフトウェアを使ってるから、問題解決がどれだけ楽になるか、楽しみだね。

誰か、5.3-codexとcodex cliでpiを試した人いる?