oh-my-pi 深度解读 —— 一个把 IDE 能力塞进终端的 AI 编程 agent
oh-my-pi 的 slogan 是「A coding agent with the IDE wired in」。这句话不夸张。

它是什么
oh-my-pi 是 Pi 的一个 fork,由 Can Bölük 维护。Pi 本身是一个多 provider LLM 终端客户端,而 oh-my-pi 把它改造成了一个「以编程为第一优先级」的 agent 工具。TypeScript 写的上层逻辑 + Rust 写的核心引擎,约 27,000 行 Rust 代码直接编译进二进制——不像大部分 agent 那样 shell out 到第三方工具,而是把 grep、shell、AST 解析、语法高亮、PTY 分配、图片编解码、BPE token 计数全部内联进进程。
40+ Provider、32 内置工具、18 个你没想到的功能
工具链:32 个工具,一个命名空间
oh-my-pi 的工具分几类,所有工具都在同一命名空间下,不像某些项目分「内置工具」和「MCP 工具」两种语言:
- 文件与搜索:
read(文件/目录/压缩包/SQLite/PDF/notebook/URL → 统一路径接口)、write、edit(hashline 内容锚定补丁)、ast_edit(ast-grep 结构重写,预览后执行)、search、find - 运行时:
bash(带 PTY 和后台任务调度)、eval(持久的 Python 和 JavaScript cell,两个内核都可以回调 agent 的工具)、ssh - 代码智能:
lsp(诊断、导航、符号、重命名、代码操作、原生请求)、debug(驱动 DAP session——断点、单步、线程、堆栈、变量) - 编排:
task(并行派发 subagent,可选 workspace 隔离)、irc(子 agent 之间短文本通信)、todo、job、ask - 外网:
browser(Puppeteer + 隐身模式默认开)、web_search(14 个 provider 链式调用)、github、generate_image、inspect_image - 记忆:
retain/recall/reflect(Hindsight 记忆系统)
18 个值得单独说的功能
1. 代码执行带工具回调 — eval cell(Python + JavaScript)可以从 cell 内部调用 agent 的 read/search/task 工具。agent 挂载了 CSV 文件,Python cell 里用 tool.read 读它,JavaScript cell 里做图表,不离开同一个 session。
2. LSP 写进每次编辑 — 请求 rename 就是真的 rename。调用走 workspace/willRenameFiles 协议,re-export、barrel 文件、别名导入在文件移动前就更新了。不是「自己找引用自己改」那种。
3. 驱动真调试器 — C 程序段错误:agent attach lldb,步进到坏指针,读帧。Go 服务卡住:attach dlv 遍历 goroutine。Python 进程卡死:debugpy,暂停,检查,求值。不是加 print 了事。
4. 时间旅行流规则 — 你的 rule 不占用每次的 context。模型跑偏时正则匹配中断流,注入 rule 作为 system reminder,从同一位置重试。注射在 compaction 后仍然生效。
5. 一级 subagent 支持 — task 派发到隔离 worktree,每个 worker 独立工具空间,返回 schema 验证的对象。父 agent 直接读字段,不需要解析自然语言、不需要处理 sibling 之间的合并冲突。
6. Hashline 编辑 — 模型指向内容哈希锚点而不是重打要改的行,空格战和「字符串找不到」循环不再发生。文件过期了锚点不匹配?patch 在污染代码前就被拒绝了。
7. GitHub 就是另一种文件系统 — read pr://1428 返回 PR 内容,search 可以走 diff 目录,agent://<id>/findings.0.path 按路径直接取 subagent 输出的字段。所有 :// 方案用同一个 read 接口。
8. 冲突解决 — 每个 merge conflict 变成一个 URL。agent 写 @theirs/@ours/@base 到 conflict://N,文件干净解决。
9. 原生 Windows 支持 — 不用 WSL。不 shell out 到 rg/grep/find。在进程内直接调 ripgrep、glob、find、brush-shell。同一二进制在 macOS/Linux/Windows 上跑。
10. Hindsight 记忆系统 — agent 在运行中写事实(retain),下次回拉(recall),每轮 session 压缩成心理模型,下一轮第一句就加载。按项目隔离。
11. ACP 协议支持 — 在 Zed 里跑 omp,读你正在看的 buffer,经过编辑器的保存路径写文件,在编辑器的终端里起 shell。
12. 兼容 8 种现有配置格式 — Cursor MDC、Cline .clinerules、Codex AGENTS.md、Copilot 配置……o 直接读。不迁移,不转换,不写「支持的子集」脚注。
13. omp commit — 读工作树,把无关的改动拆成原子 commit,按依赖排序。循环依赖拒绝后不出手。源码比测试和文档优先,lock 文件不分析。
14. 冲突 URL 方案 — 前面提过。一个细节:conflict://* 批量解决所有冲突。
15. 预览 + 确认 — ast_edit 返回 (proposed) 卡片,agent 调 resolve,TUI 显示 Accept 卡片,磁盘写入是原子的——要么全写要么不写。
16. 真浏览器 + Slack — Stealth 默认开,网站看到的是普通用户。同样 API 驱动任何 Electron 应用——指向 Slack,agent 像读网页一样读你的 DM。
17. web_search 内置 — 14 个 provider 链,按站点智能提取。GitHub、arXiv、Stack Overflow、npm 等 20+ 站点有专有提取器,返回结构化 markdown,链接不丢。
18. 安全数据库查询 — NVD、OSV、CISA KEV 直接查,返回的是供应商数据而不是博客摘要。
40+ Provider,角色路由
oh-my-pi 支持 40 多个 provider,按角色(default/smol/slow/plan/commit)分发请求。本地模型也用 local 标签直接接入 Ollama、LM Studio、llama.cpp、vLLM。每个角色可以配 fallback 链——主 provider 429 了自动切到下一个。
还有路径级覆盖:modelRoles 下 nest paths:,不同项目目录用不同模型。
架构:~27,000 行 Rust
Rust 核心分成 22 个模块,3 个 crate(pi-natives、pi-shell、pi-ast),5 个平台二进制。所有热路径不走 fork/exec:
| 模块 | 作用 | ~代码行 |
|---|---|---|
| shell | 嵌入式 bash,持久 session,超时/中断 | 3,700 |
| grep | 正则搜索,并行/顺序,glob 过滤 | 1,900 |
| keys | Kitty 键盘协议 + xterm 回退 | 1,490 |
| text | 终端文字宽度计算、截断、换行 | 1,450 |
| summarize | Tree-sitter 源码摘要 | 1,040 |
| ast | ast-grep 模式匹配与结构重写 | 1,000 |
| fs_cache | 文件缓存(mtume 键) | 840 |
四个入口
oh-my-pi 同一引擎四种启动方式:
omp— 默认 TUI 交互界面,工具调用渲染成卡片,编辑预览后落地,歧义走ask工具弹选项omp -p— 单次问答后退出- Node SDK —
createAgentSession+session.prompt("list .ts files"),嵌入到你自己的进程里 - RPC (
--mode rpc) — NDJSON 通信,适合非 Node 宿主。--mode rpc-ui加入工具卡片和选择对话框 - ACP (
omp acp) — 通过 Agent Client Protocol 与编辑器通信(Zed 等),工具 I/O 走编辑器,写操作需session/request_permission
安装
# macOS / Linux
curl -fsSL https://omp.sh/install | sh
# Bun(推荐)
bun install -g @oh-my-pi/pi-coding-agent
# Windows
irm https://omp.sh/install.ps1 | iex
第一次启动自动继承磁盘上已有的配置:.claude、.cursor、.windsurf、.gemini、.codex、.cline、.github/copilot、.vscode 下的 rules、skills、MCP servers——不迁移,直接读。
项目主页:omp.sh · GitHub:can1357/oh-my-pi
如果你觉得现有的 coding agent 在「能改配置」和「能改代码」之间差了点什么——oh-my-pi 给你的是从 LSP 到调试器到汇编级调试的一条线。而且不用换工具。
📢 关注我,获取最新开源更新日志和开发者工具动态。
#oh-my-pi #AI编程 #开源 #终端工具 #开发者工具