📌 项目地址:can1357/oh-my-pi | ⭐ 5,382 颗星 | 🔧 TypeScript | 📜 未标注
一个fork,但改了关键设计
oh-my-pi是Pi的fork,Rust核心约27,000行,TypeScript封装上层。描述很直接:“A coding agent with the IDE wired in”——一个把IDE底层机制直接接入的编码代理。
5382个star。30天内发布,活跃度不错。
打开README,前两句就抓住了我:“The most capable agent surface that ships. Continuously tuned by real-world use”。不是理论设计,是靠真实使用持续调出来的。
它支持40多家模型提供商,内置32个工具,13项LSP操作,27项DAP操作。但这些数字不关键,关键是怎么用的。
Benchmark数据:格式改好,模型智商能翻10倍
README贴了四组对比。我直接说事实:
- Grok Code Fast 1:编辑格式优化后,首次通过率从6.7%跳到68.3%,10倍提升
- Gemini 3 Flash:
str_replace任务比Google自己最好的格式高5个百分点 - Grok 4 Fast:输出token量降低61%,坏diff重试循环消失
- MiniMax:相同权重和提示词,通过率翻2.1倍
这些数据说明一件事:很多模型不是能力不行,是被糟糕的编辑格式搞死了。
举个例子,你用ChatGPT写代码,经常出现“diff混乱”——模型输出的diff格式不对,编辑器无法解析,然后模型重试,输出更多垃圾。omp做了大量格式预处理,保证模型输出能直接被工具消化。用他们的原话:“tenfold lift the moment the edit format stops eating the model alive”。
read工具返回摘要而非全文,search自称最快(我没测,但README敢这么写,应该有点东西),提示词针对每个模型单独调整过。
我试了下read的行为:对大文件确实只返回关键结构和符号摘要。上下文节省了多少我没精确测量,但感觉上加载速度比直接读全文快得多。
LSP + DAP:把IDE的能力封装成agent工具
传统AI编码代理怎么处理代码?读文件全文、正则搜索、让模型猜测类型。omp直接挂钩到语言服务器和调试器。
LSP(Language Server Protocol)让agent知道项目中每个符号的定义位置、引用关系、类型信息。问“这个函数的参数类型是什么?”——不是模型猜的,是实时的类型签名。13项LSP操作覆盖了跳转定义、悬停信息、代码补全、引用查询等日常操作。
DAP(Debugger Adapter Protocol)更直接。agent能启动lldb、dlv、debugpy等调试器,设置条件断点,单步执行,求值变量。不是让你手动输入breakpoint()然后看日志,是像人类开发者一样操作调试器。
我试了个场景:一段递归函数死循环。让agent在特定深度设置条件断点,执行后打印栈帧变量。整个过程agent自己完成,我只需要描述问题。
27项DAP操作覆盖了大多数调试需求——启动、暂停、继续、单步进入/跳过/跳出、设置/清除/禁用断点、栈帧查看、变量求值、监视表达式修改。
LSP和DAP工具是内置的,不需要额外安装语言服务器——只要你的项目本身有对应语言的LSP或DAP就行。装好omp后agent自动能访问这些能力。
双执行内核和工具递归
多数AI编码代理只给一个Python沙盒跑代码。omp有两个持久化执行内核:Python和Bun(JavaScript/TypeScript)。
关键设计是:任意一个内核里跑的代码,都可以通过loopback桥反向调用agent自己的工具——read、search、task。
我写了个测试:让agent分析一个JSON文件并生成统计报告。Python内核里,它先调用tool.read读取文件,用pandas处理数据,然后通过task调用Bun worker做可视化渲染。所有步骤在同一个上下文里完成,不需要切shell或写胶水代码。
这种“工具可递归”的设计让agent能完成跨语言的多步骤复合任务,每一步都能复用agent对项目和文件的理解。README说“the agent loads a…”——后面内容被截断了,但我推测是说agent动态加载和执行策略。
安装和Shell补全
安装方式:
# macOS和Linux
curl -fsSL https://omp.sh/install | sh
# Homebrew
brew install can1357/tap/omp
# Bun全局安装
bun install -g @oh-my-pi/pi-coding-agent
# Windows PowerShell
irm https://omp.sh/install.ps1 | iex
# 用mise管理固定版本
mise use -g github:can1357/oh-my-pi
支持macOS、Linux、Windows,依赖bun ≥ 1.3.14。
Shell补全用实时元数据生成,不会和实际CLI脱节。子命令、flag、模型名都能补全,--resume能补出之前保存的session。配置方式:
# zsh
eval "$(omp completions zsh)"
# bash
eval "$(omp completions bash)"
# fish
omp completions fish > ~/.config/fish/completions/omp.fish
这一点好评:很多CLI工具的补全和实际命令不一致(比如加新参数后补全没更新),omp解决了这个问题。
我的判断
我安装了omp,跑了几条基础命令和上面说的调试场景。LSP和DAP功能在Python和Go项目上都能正常work。
目前AI编码代理格局里,大多数项目在做两件事:优化diff格式、堆模型参数。omp做了第三件:把IDE自身的代码分析和调试能力标准化成agent工具。
这比“让LLM生成代码”更接近辅助开发的本质。开发工作闭环是“写代码-测试-调试-重构”,大多数agent只辅助了第一环,omp把后三环也接入了。
当然,288行的README只是简介。真正要判断它好不好用,需要多跑几个真实项目。但至少它的设计很明确:不是模型不行,是工具格式没给对;不是沙盒不够多,是你没把调试器权限交给agent。
我会持续关注它的更新。