不用配环境、不用教它用 LSP、不用跟它解释什么是 git rebase——装上就能干活。

你大概已经试过不少 coding agent 了。
每个都号称能帮你写代码、改 bug、做重构。
真用起来就变味了:
它不知道你项目里的 rename 要改几个文件,
它不会用 debugger,只会往代码里塞 print,
它读一个 PDF 论文要你先把 PDF 转成 txt,
它改个文件还经常改错地方……

于是你又回到 VSCode + 命令行 + 手工操作的老路上。

Oh My Pi(omp)就是冲这些痛点来的。
它是 Pi 的一个分支(感谢 Mario Zechner 的开创性工作),但加了一整箱你一直想要的东西。

一句话:开箱就顶格

  • 40+ 模型提供商,Anthropic / OpenAI / Gemini / xAI / Groq / 本地 Ollama……都能用
  • 32 个内置工具,从读文件、搜代码到开浏览器、调 debugger
  • LSP 全支持(13 种操作),重命名一个符号,所有引用、导出声明、别名全改干净
  • DAP 全支持(27 种操作),挂上 lldb/dlv/debugpy,单步、看栈、查变量
  • ~2.7 万行 Rust 核心,搜索、shell、AST 全在进程内跑,不靠 fork/exec

安装命令就一行(macOS / Linux):

curl -fsSL https://omp.sh/install | sh

Windows 用户用 PowerShell:

irm https://omp.sh/install.ps1 | iex

爱用 bun 的:

bun install -g @oh-my-pi/pi-coding-agent

装完直接跑 omp,进 TUI 界面。

它跟别的 agent 到底哪里不一样? 01. 代码执行 + 工具互相调用

大多数 agent 给一个 Python 沙盒就完事了。
omp 同时跑一个持久化 Python 内核和一个 Bun 工作进程,两个内核都能回调 agent 自己的工具(read / search / task 等)。

举个例子:
你让它在 Python 里用 pandas 读一个 CSV,然后马上切到 JavaScript 画个图——不用切窗口,不用重启内核。
同一个会话里,它自己就完成了跨语言的数据流。

打开网易新闻 查看精彩图片

02. LSP 真正被用起来

你跟它说“把 formatBytes 改名为 formatSize”。
它不会傻傻地 grep 然后全局替换。
它会调用 workspace/willRenameFiles,把 re-export、barrel 文件、别名导入全部找出来,先更新再重命名。
你的 IDE 知道多少,它就知道了多少。

打开网易新闻 查看精彩图片

03. 真的会用调试器

一个 C 程序 segfault 了:
omp 自动挂上 lldb-dap,步进到出错指针,读栈帧,告诉你哪里写了野指针。
一个 Go 服务卡住了:
它挂 dlv,遍历所有 goroutine,找出阻塞点。
一个 Python 进程不动了:
debugpy,暂停,检查,求值。
别的 agent 还在让你教它怎么打 print,omp 已经告诉你第几行第几个变量是什么值了。

打开网易新闻 查看精彩图片

04. “时光倒流”的规则注入

你给它写了一条规定:“生产代码里别用 Box::leak”。
正常对话里它可能会忘,或者每次都要在 prompt 里重复塞这句话。
omp 的做法:
它刚打出 Box::leak 几个字,流就被中断,系统注入那条规则作为提醒,然后从同一个位置重试
纠正及时,而且不占用后续对话的 token。
规则会跨压缩持久存在,不会聊几轮就丢了。

打开网易新闻 查看精彩图片

05. 一等公民的子代理

你让它同时扫三个模块的输出,然后合并成一个结构化结果。
task 工具会拆出三个独立工作区,每个跑自己的子代理,互不干扰。
最后每个子代理返回一个带 schema 的对象,父代理直接读字段——不用从一大段 prose 里解析,不用担心子代理互相覆盖文件。
IRC 风格的短消息可以在子代理之间传,但工作区是隔离的。

打开网易新闻 查看精彩图片

06. 读 arXiv PDF?直接来

web_search 背后链了 14 个搜索源(Exa / Brave / Perplexity / Kagi / 自己搭的 SearXNG……),搜出来的链接直接扔给 read。
read 能处理 PDF、GitHub 页面、Stack Overflow、npm 页、arXiv 论文……
返回的是结构化 markdown,锚点、链接引用都保留。
你可以让它引用某一段,它能给你精确的引用上下文。
不用先转成 txt 再喂给它。

打开网易新闻 查看精彩图片

07. 原生,连 Windows 也是

别的 agent 调 rg、grep、find、bash,依赖系统上有这些二进制。
没有的话要么报错,要么慢。
omp 把这些实现直接链进进程:ripgrep、glob、find 都是 in‑process 的。
brush 代替 bash,会话跨调用存活。
同一个二进制跑 macOS、Linux、Windows,不需要 WSL 桥接。

08. 代码评审:带优先级和结论

/review 会并行派出多个 reviewer 子代理,扫整个分支、单个 commit 或未提交的工作。
每个问题按 P0–P3 分级,附带置信度打分。
你会先看到要不要放行的明确结论,然后才是详细清单。
P0 问题处理完之前不会淹没在几百行 review 评论里。

09. Hashline:按内容哈希来编辑

模型不直接输出整段替换代码,而是用锚点指向现有代码的哈希
不再因为空白符不一致、字符串找不到而反复重试。
如果文件在你编辑之前已经被改过,哈希对不上——omp 会直接拒掉补丁,不会毁代码。
实测 Grok 4 Fast 用这个方案省了 61% 的输出 token,同样任务完成度更高。

10. GitHub 就是另一个文件系统

别的 agent 给你一堆 gh_issue_view、gh_pr_view、gh_search,每个参数不同,模型要学,你要 debug。
omp 跳过这些:PR 就是一个路径
read pr://owner/repo/123 跟 read src/main.rs 是同一个接口。
模型只需要知道 read 这一个工具,就能读 PR、读 diff、读评论、读 issue。

11. Hindsight:跨会话的记忆

agent 会在运行中写“事实”进 retain,下次启动用 recall 拉回来。
每个会话结束时自动压缩成一份心智模型,下一次第一轮对话就加载好。
项目隔离默认打开——学到的东西不会污染别的仓库。
你不用手动维护一个 AGENTS.md 还担心它不读。

12. ACP:编辑器自己就能驱动 agent

在 Zed 里运行 omp acp,agent 直接读你当前正在看的 buffer,通过编辑器的保存路径写文件,在编辑器的终端里开 shell
危险操作会在编辑器内弹一个权限请求,你点一次允许,这个会话里就不再问了。
没有桥接插件,没有第二个大脑需要同步。

13. 继承你已有的配置

别的 agent 让你把 Cursor 的规则、Cline 的 rules、Copilot 的指令……全部转换一遍。
omp 直接读原生格式
.cursorrules、.clinerules、AGENTS.md、Copilot 的 applyTo……
你团队上一季度写的配置今晚就能用,不用迁移脚本、不用 YAML 转 TOML、没有“支持子集”的小字说明。

14. omp commit:原子拆分 + 校验消息

它会读工作树:git overview、git file diff、git hunk,然后按依赖关系把不相关的改动拆成多个原子 commit。
循环依赖会被拒绝,不会写一半留一半。
源文件优先级高于测试、文档、config,所以 headline commit 总是那个真正改逻辑的提交。
lock 文件被排除在分析之外,不会把依赖更新混进功能 commit。

15. 读 PR、走 skill、从子代理里抽 JSON

pr://、issue://、agent://、skill://、rule:// 这十来个 scheme 在所有 FS 形状的工具里透明解析。
read pr://can1357/oh-my-pi/1063 返回的结构和 read src/foo.ts 一样。
search 能把一个 diff 当作目录来遍历。
agent:///findings.0.path 直接取子代理输出的某个字段,不用正则解析文本。

打开网易新闻 查看精彩图片

16. 冲突解决:一条 URL 搞定

每个 merge conflict 变成一个 URL:conflict://1、conflict://2……
agent 写 @theirs / @ours / @base 到对应的 conflict://N,文件就自动解决。
批量形式:conflict://*。
不用手动打开文件、找 <<<<<<<、删标记、保存。

打开网易新闻 查看精彩图片

17. 预览,确认,再落盘

ast_edit 先返回一个 (proposed) 卡片,告诉你“将要替换 3 处,涉及 1 个文件”。
改动已暂存,但还没写到磁盘。
agent 调用 resolve 并附上理由,TUI 把这个动作变成一个 Accept 卡片,然后原子地写入——要么全成功,要么全不回写。
不会出现半拉子改坏文件的情况。

打开网易新闻 查看精彩图片

18. 驱动真实浏览器……或者你的 Slack?

默认走 stealth 模式,页面看到的是普通用户而不是 headless bot。
同一个 API 可以驱动任意 Electron 应用——把它指向 Slack,agent 就能读你的 DM,就像它读网页一样。
(当然,这功能有单独开关,不会偷偷翻你聊天记录。)

打开网易新闻 查看精彩图片

内核:~2.7 万行 Rust,不靠外部二进制

omp 把大多数 agent 需要 fork/exec 的事情全收进进程里:

  • search:ripgrep 逻辑 in‑process,并行/顺序、glob/类型过滤、模糊匹配
  • shell:内嵌 brush,持久化会话,超时/中断,自定义 builtin
  • AST:基于 ast-grep 的模式匹配和结构化重写,50+ tree-sitter 语法
  • PTY:原生伪终端,支持 sudo、ssh 交互式提示
  • 高亮:syntect,11 个语义类别,30+ 别名
  • 图片:PNG/JPEG/WebP/GIF 解码、编码、缩放
  • token 计数:O200k / Cl100k BPE,表都嵌在里面

三个 crate:pi-natives、pi-shell、pi-ast。
平台覆盖:linux‑x64、linux‑arm64、darwin‑x64、darwin‑arm64、win32‑x64。
热路径上没有 fork/exec 的开销。

模型:40+ 提供商,几百个模型,一个 /model 命令

你可以分角色设定模型:

  • default:普通任务
  • smol:便宜的子代理、快速过滤
  • slow:深度推理
  • plan:plan 模式
  • commit:写 changelog

启动时用 --smol、--slow、--plan 覆盖,运行时 Ctrl+P 轮换该角色的模型列表,或者直接打 /model 切换。

支持的提供商包括:

  • 前沿 API:Anthropic、OpenAI、Google Gemini、xAI、Mistral、Groq、Cerebras、Fireworks、Together、Hugging Face、NVIDIA、OpenRouter、Synthetic、Vercel AI Gateway、Cloudflare AI Gateway、Perplexity……
  • 编程套餐:Cursor、GitHub Copilot、GitLab Duo、Kimi Code、MiniMax、阿里云编程计划、智谱 Z.AI、小米 MiMo、NanoGPT、Venice……
  • 本地自己跑:Ollama、LM Studio、llama.cpp、vLLM、LiteLLM(OpenAI‑compatible)

还有四个让路由真正好用的细节:

  1. 自定义 provider:在 ~/.omp/agent/models.yml 里声明任何支持 openai‑completions / anthropic‑messages / google‑generative‑ai 的后端。
  2. 回退链:主模型 429 或配额用尽时,自动切到链上下一个,冷却后恢复。
  3. 路径作用域模型:在某个仓库目录下钉一个更重的默认模型,不改全局配置。
  4. 轮换凭证:堆多个 API key,运行时轮转、会话亲和、单条凭证退避。
搜索:14 个后端,内置,不是后加的

web_search 是一个一等公民工具,不是外挂脚本。
auto 模式会按顺序尝试 14 个提供商;你也可以 pin 其中一个。
每个命中结果会经过站点感知提取:GitHub、npm、PyPI、crates.io、arXiv、Stack Overflow、MDN……全转成结构化 markdown,锚点、链接引用原样保留。
安全数据库(NVD、OSV、CISA KEV)也能搜,返回的是厂商原厂数据,不是博客摘要。

扩展:你写的扩展跟内置工具平起平坐

一个扩展就是一个 TypeScript 模块。
工具 API、slash 命令注册、快捷键表、TUI 基元——全部跟内置组件使用同一套接口。
没有“保留名称”,你想覆盖默认行为都可以。

首次运行自动继承你磁盘上已有的配置:
.claude、.cursor、.windsurf、.gemini、.codex、.cline、.github/copilot、.vscode 下的 rules/skills/MCP servers 统统自动加载。

缺什么功能?让 omp 自己写出来,然后 /reload-plugins 热加载。
可以只留在本地,也可以发布到 npm 或市场。

安装 & 开始

macOS / Linux

curl -fsSL https://omp.sh/install | sh

Windows (PowerShell)

irm https://omp.sh/install.ps1 | iex

Bun

bun install -g @oh-my-pi/pi-coding-agent

mise

mise use -g github:can1357/oh-my-pi

装完之后:

  • 交互式 TUI:直接打 omp
  • 单次 prompt:omp -p "解释一下 src/main.rs 里的内存分配"
  • Node SDK:import { ... } from "@oh-my-pi/pi-coding-agent"
  • RPC 模式:omp --mode rpc,NDJSON 命令进,事件出
  • ACP 模式:omp acp,配合 Zed 等编辑器
最后说一句
omp 是 Pi 的一个 fork,但重写成了 coding‑first 的面貌: 会话、子代理、slash 命令、扩展——全是 TypeScript,全是 MIT,全在 GitHub 上。

代码在这:github上搜oh-my-pi
文档站:https://omp.sh

如果你受够了 agent 说一套做一套,不妨今晚装一个,试试让它修一个你一直懒得修的重构。

它可能不会第一次就完美——但大概率比你现在用的那个靠谱。