oh-my-pi(omp)
can1357/oh-my-pi — IDE の知識をエージェントに渡すターミナル向けコーディングエージェント。Pi(Mario Zechner)のフォークで、README とモノレポ構成から要約したビジュアル解説。
omp(@oh-my-pi/pi-coding-agent)は、対話型 TUI を既定とするコーディングエージェント。編集・検索・LSP・DAP・ブラウザ・サブエージェント・長期記憶・advisor・collab まで、ハーネス側に寄せた実装が同梱されている。
公開サイト omp.sh、ランタイムは Bun(推奨 bun ≥ 1.3.14)、ネイティブ処理は Rust の N-API アドオン(pi-natives)経由でプロセス内実行する。
ベースは pi-mono の思想(ターミナルファースト・TypeScript・MIT)を継承しつつ、実運用で足りない層を同梱する方針。代表例は次のとおり。
- 編集 — Hashline(コンテンツハッシュ錨)、
ast_editのプレビュー+resolve確定 - IDE 連携 — LSP(14 ops)、DAP(28 ops)、ACP で Zed 等から同一エージェントを駆動
- 並列 —
taskによる worktree 分離サブエージェント、hubでライブ監視、スキーマ検証済みyield - 監視 — advisor ロール(別モデルが毎ターン note / concern / blocker を注入)
- 共有 —
/collabでリレー+リンク/QR、omp joinまたはブラウザで参加(RW / view) - 記憶 — Hindsight(
retain/recall/reflect)、ローカル SQLite(pi-mnemopi) - ルール — TTSR(ストリーム途中のルール注入・コンパクション後も維持)
- 設定の継承 — Cursor / Claude / Codex / Copilot 等の既存ルール・スキル・MCP を初回起動時に読み込み
Grok Code Fast 1 で編集成功率 6.7%→68.3%、Grok 4 Fast で出力トークン −61% など。編集フォーマットとリトライ設計の影響が大きい、と説明されている。
12 種(pr://、issue://、skill://、agent://、rule://、conflict:// 等)。FS 系ツールから PR 差分・サブエージェント JSON・マージ競合をパス指定で扱える。
永続 Python と Bun ワーカー。どちらもループバック経由で read や search を再入可能。
/review は P0–P3 と verdict 付きでレビュアサブエージェントを並列起動。omp commit は hunk 単位で依存順にアトミック分割し、循環依存はコミット前に拒否。
メインとは別モデルを advisor ロールに載せ、毎ターンを監視してインライン注記を注入する。独自コンテキストで「急ぎ過ぎた判断」を拾う。
ライブセッションをリレーへ載せ、リンクと QR を返す。フレームはクライアント側で暗号化。リレーは鍵を見ない。
flowchart TB
subgraph surfaces["起動面"]
TUI["omp(TUI)"]
SDK["Node SDK"]
RPC["omp --mode rpc"]
ACP["omp acp"]
end
subgraph ts["TypeScript ワークスペース"]
CA["@oh-my-pi/pi-coding-agent"]
AG["@oh-my-pi/pi-agent-core"]
CAT["@oh-my-pi/pi-catalog"]
AI["@oh-my-pi/pi-ai"]
TUIL["@oh-my-pi/pi-tui"]
HL["@oh-my-pi/hashline"]
MEM["@oh-my-pi/pi-mnemopi"]
WIRE["@oh-my-pi/pi-wire"]
CW["@oh-my-pi/collab-web"]
end
subgraph rust["Rust / N-API"]
NAT["@oh-my-pi/pi-natives"]
PN["pi-natives crate"]
PS["pi-shell"]
PA["pi-ast"]
PI["pi-iso"]
end
TUI --> CA
SDK --> CA
RPC --> CA
ACP --> CA
CA --> AG --> AI
CA --> CAT
CA --> TUIL
CA --> HL
CA --> MEM
CA --> WIRE --> CW
CA --> NAT --> PN
PN --> PS
PN --> PA
PN --> PI
TypeScript パッケージ(README 表より)
| パッケージ | 役割 |
|---|---|
@oh-my-pi/pi-coding-agent | CLI・SDK・セッション・ツール・MCP・拡張の本体 |
@oh-my-pi/pi-agent-core | ツール呼び出しとエージェント状態 |
@oh-my-pi/pi-ai | マルチプロバイダ LLM クライアント・ストリーミング |
@oh-my-pi/pi-catalog | バンドル済みモデル DB・プロバイダ記述・identity |
@oh-my-pi/pi-tui | ターミナル UI(差分レンダリング) |
@oh-my-pi/pi-natives | grep / shell / 画像 / ハイライト等の N-API バインディング |
@oh-my-pi/hashline | edit 用の行錨パッチ言語と適用器 |
@oh-my-pi/pi-mnemopi | ローカル SQLite メモリエンジン |
@oh-my-pi/pi-wire / collab-web | collab ライブセッションのプロトコルとブラウザゲスト |
@oh-my-pi/snapcompact | ビットマップフレーム型コンテキスト圧縮 |
@oh-my-pi/pi-utils | 共有ユーティリティ(ログ・ストリーム・dirs 等) |
@oh-my-pi/omp-stats | ローカル利用統計ダッシュボード |
@oh-my-pi/swarm-extension | スウォーム拡張(任意) |
Rust モジュール(README 抜粋)
他ハーネスが rg や bash を子プロセス起動するのに対し、ホットパスは libuv スレッドプール上の in-process 実装。プラットフォーム別バイナリ(linux/darwin/win × x64/arm64)。見出し合計は約 55,000 行(glue / tests 除外のモジュール表)。
| モジュール | 内容 | 概算 LoC |
|---|---|---|
| shell | 組み込み bash(brush ベンダ)、永続セッション | 3,700 |
| grep | 並列 regex 検索・glob | 1,900 |
| keys | Kitty キーボードプロトコル・PHF ルックアップ | 1,490 |
| text | ANSI 幅・切り詰め・SGR 保持ラップ | 1,450 |
| summary / ast | tree-sitter 要約・ast-grep | 1,040 / 1,000 |
| fs_cache | read / grep / lsp 共有の mtime キャッシュ | 840 |
| pty | ネイティブ PTY(sudo 等) | 455 |
| iso | worktree 分離(APFS / btrfs / overlay 等) | 245 |
README には highlight / glob / workspace / appearance / power / task / fd / prof / ps / clipboard / tokens / sixel / html なども含む。詳細は upstream README の Rust 表を参照。
python/robomp は GitHub イベント連携など別系統の Python ホスト。python/omp-rpc は RPC クライアント用。エージェント本体の TypeScript ツリーとは責務が分かれている。
README のカテゴリ分けに沿った一覧。--tools で表示セットを絞り、稀に使うツールは xd:// デバイスとして発見できる(tools.xdev 有効時)。
read— ファイル・URL・PDF・SQLite・内部スキームwrite/edit/ast_edit/ast_grepsearch/find
bash·eval·ssh
lsp— 診断・定義・リネーム等debug— DAP(lldb / dlv / debugpy 等)
task·hub·todo·ask
browser·web_search·githubgenerate_image·inspect_image·tts
checkpoint·rewindretain/recall/reflect(Hindsight)resolve— プレビューの確定 / 破棄
設定でデフォルト OFF: github, inspect_image, tts, checkpoint, rewind, retain, recall, reflect(README 記載)。
ロール default / smol / slow / plan / commit で用途別モデルを切替。/model スラッシュコマンドと Ctrl+P でセッション中に変更できる。モデルカタログは @oh-my-pi/pi-catalog が担う。
| 区分 | 例(README) |
|---|---|
| Frontier API | Anthropic, OpenAI, Gemini, xAI, Groq, OpenRouter, … |
| Coding plans | Cursor, Copilot, Kimi, MiniMax plan, Qwen Portal, … |
| Self-hosted | Ollama, LM Studio, vLLM, LiteLLM(OpenAI 互換) |
web_search は auto が 25 プロバイダのチェーンを歩き、GitHub / レジストリ / arXiv / フォーラム向けの構造化抽出と NVD / OSV / CISA KEV の脆弱性ルックアップを持つ(README の Search providers 表)。
カスタム定義は ~/.omp/agent/models.yml。フォールバックチェーンは retry.fallbackChains、パス別ロールは modelRoles.paths。
| 面 | 入口 | 用途 |
|---|---|---|
| 対話 TUI | omp | 既定。ツールカード・編集プレビュー・ask ピッカー |
| ワンショット | omp -p | 単発プロンプトで終了 |
| Node SDK | @oh-my-pi/pi-coding-agent | createAgentSession 等をプロセスに埋め込み |
| RPC | omp --mode rpc | NDJSON over stdio(非 Node ホスト向け) |
| ACP | omp acp | Agent Client Protocol — Zed 等のエディタ統合 |
import { ModelRegistry, SessionManager, createAgentSession, discoverAuthStorage } from "@oh-my-pi/pi-coding-agent";
const auth = await discoverAuthStorage();
const models = new ModelRegistry(auth);
await models.refresh();
const { session } = await createAgentSession({
sessionManager: SessionManager.inMemory(),
authStorage: auth,
modelRegistry: models,
});
await session.prompt("list .ts files");
bash → ターミナル API、read/write → ファイル API、破壊的操作は session/request_permission。
curl -fsSL https://omp.sh/install | sh
brew install can1357/tap/omp
bun install -g @oh-my-pi/pi-coding-agent
eval "$(omp completions zsh)"
Windows は irm https://omp.sh/install.ps1 | iex。バージョン固定は mise use -g github:can1357/oh-my-pi。bash / fish も omp completions で生成できる(README)。
- リポジトリ: github.com/can1357/oh-my-pi
- ドキュメント: omp.sh/docs/tools · providers · sdk
- 開発:
packages/coding-agent/DEVELOPMENT.md(リポジトリ内) - ライセンス: MIT
本ページは docs-site 用の要約であり、公式ドキュメントの代替ではない。数値・ベンチマークは README 掲載時点の記述に依存する。