Ikeraq

earendil-works/pi

エージェントの部品を層ごとに切り出して配り、その上にコーディング用の CLI を載せる

MIT · 商用可 TypeScript ★ 116,143 (今日 +181) 今日 更新
GitHub で見る earendil-works/pi
GitHub の説明(原文)
AI agent toolkit: unified LLM API, agent loop, TUI, coding agent CLI

どういうものか

AI エージェントを作るための部品を、層ごとに分けて配っているリポジトリ。README は全体を「Pi agent harness」と呼び、その上に載る形で、自分で自分を拡張できるコーディングエージェントも同じ置き場所に入っていると説明している。ひとつの完成品を配るというより、どの層から使い始めてもいい並べ方になっているのが特徴だ。

配られている部品は6つ。対話しながら使う pi-coding-agent(ターミナルのコーディングエージェント)が、道具の呼び出しとやりとりの状態を持つ pi-agent-core を呼び、その pi-agent-core が、OpenAI・Anthropic・Google などのモデルを同じ呼び方に揃える pi-ai を呼ぶ。この上下は README が書いているものではなく、各パッケージの依存関係から辿れるものだ。残る3つは、それ自体はほかの部品に頼らずに動く。画面の差分だけ描き替えるターミナル用の表示部品 pi-tui、提供元を問わない記録の取り決めを定めた pi-telemetry、サービスの組み立て・複製された状態・RPC・プラグインを扱う chord。Slack やチャットからの自動化は別のリポジトリに分けられている。

もうひとつ目につくのが、取り込む部品(npm の依存)の扱いを、コードの変更と同じ厳しさで見るという方針だ。README は箇条書きでその中身を並べている。外部の依存はバージョンを1つに固定する、当日に公開されたばかりの版は拾わないよう待ち時間を設けている、ロックファイルを正とし、うっかりのコミットは事前に止める、配布する CLI には依存の固定表を同梱する、CI では導入時のスクリプトを走らせない、定期的に監査をかける、といった項目が続く。

まとめて1つではなく、層ごとに配る pi-coding-agent (対話して使う CLI) pi-agent-core (道具の呼び出しと状態) pi-ai (各社のモデルを同じ呼び方に) 他に依存しない部品 pi-tui (画面の描き替え) pi-telemetry (記録の取り決め) chord (サービスの組み立て) まるごと使ってもいいし、下の層だけ取り出してもいい
入口は CLI だが、中の層が単体で配られていることのほうが、この置き場所の性格をよく表している。

どんなときに使うか

複数社のモデルを1つの呼び方に揃えたいとき

pi-ai はその層だけで配られていて、OpenAI・Anthropic・Google などをまとめて扱う。エージェント全体を借りずに、この部分だけ取り出せる。

自分のエージェントに、ターミナルの画面を付けたいとき

pi-tui は差分だけを描き替える表示部品として独立している。コーディングエージェントを使わなくても、この層だけ使える並べ方になっている。

注意点

★ 権限の制限は入っていない。 README が明記している。ファイル・プロセス・ネットワーク・資格情報への出入りを縛る仕組みは含まれておらず、初期状態では起動した利用者とプロセスと同じ権限で動く。境界が要るなら自分で囲う前提で、README は3通りの隔離のしかた(Linux の小さな仮想機械へ回す拡張、Docker の中でまるごと動かす、方針で制御する砂場の中で動かす)を案内している。

初めての人が出した issue とプルリクエストは、いったん自動で閉じられる。 README の冒頭に断りがあり、初めて関わる人からのものは既定で自動的に閉じられる、自動で閉じられた issue は管理者が毎日見ている、と書かれている。無視されたわけではないが、そういう運び方だと知らないと驚くところだ。

ライセンスは MIT。

開発の様子

1.2 年
公開してからの期間。2025-08-09 が最初のコミットです
257 回
リリースの回数です
283 人
開発に参加した人数です
0 日前
最後のコミットです
347 件
未解決の Issue とプルリクエストの合計です(GitHub はこの2つを同じ数に含めます)
X で共有 この記事がよかったら

この記事の更新日は 2026-09-16 です。 内容は公開されている README と GitHub のデータに基づいています。 数値は GitHub から取得したもの、警告は判定の基準にある条件での自動判定です。事実誤認を見つけた場合はお知らせください。