跳到主要内容

oh-my-pi 深度解读 —— 一个把 IDE 能力塞进终端的 AI 编程 agent

· 阅读需 7 分钟

oh-my-pi 的 slogan 是「A coding agent with the IDE wired in」。这句话不夸张。

oh-my-pi 深度解读封面

它是什么

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 → 统一路径接口)、writeedit(hashline 内容锚定补丁)、ast_edit(ast-grep 结构重写,预览后执行)、searchfind
  • 运行时bash(带 PTY 和后台任务调度)、eval(持久的 Python 和 JavaScript cell,两个内核都可以回调 agent 的工具)、ssh
  • 代码智能lsp(诊断、导航、符号、重命名、代码操作、原生请求)、debug(驱动 DAP session——断点、单步、线程、堆栈、变量)
  • 编排task(并行派发 subagent,可选 workspace 隔离)、irc(子 agent 之间短文本通信)、todojobask
  • 外网browser(Puppeteer + 隐身模式默认开)、web_search(14 个 provider 链式调用)、githubgenerate_imageinspect_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/@baseconflict://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-nativespi-shellpi-ast),5 个平台二进制。所有热路径不走 fork/exec:

模块作用~代码行
shell嵌入式 bash,持久 session,超时/中断3,700
grep正则搜索,并行/顺序,glob 过滤1,900
keysKitty 键盘协议 + xterm 回退1,490
text终端文字宽度计算、截断、换行1,450
summarizeTree-sitter 源码摘要1,040
astast-grep 模式匹配与结构重写1,000
fs_cache文件缓存(mtume 键)840

四个入口

oh-my-pi 同一引擎四种启动方式:

  • omp — 默认 TUI 交互界面,工具调用渲染成卡片,编辑预览后落地,歧义走 ask 工具弹选项
  • omp -p — 单次问答后退出
  • Node SDKcreateAgentSession + 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编程 #开源 #终端工具 #开发者工具