项目详情
oh-my-pi
把 IDE 接进 agent 的 coding agent:LSP 每次写入都参与,调试器真的在跑
更新于 2026-09-23 · 数据来源:GitHub API + README/docs(采集于 2026-09-23)
← 返回汇总
项目速览
一句话定位
别的 agent 写代码,它带着整间 IDE 写代码
开源终端 coding agent(omp),fork 自 Mario Zechner 的 Pi 并「电池全配」:LSP 接进每次写入、驱动真实调试器(lldb/dlv/debugpy)、持久 Python+Bun 双内核可回调 agent 工具、原生 Rust 进程内工具链零 fork。9 个月 32.8k stars。适合想要一个「IDE 级代码理解 + 无妥协工具面」的终端 agent 重度用户。
项目速览
核心数据
2025-12-31 创建 · v18.2.11 发布于 2026-09-23(采集当天,日级发版)· 14 LSP ops · 28 DAP ops · ~80k 行 Rust core · 3,023 open issues(PR 暂时全员开放的试验期)· macOS / Linux / Windows 原生(无 WSL 桥)
前世今生
Pi 的躯体,OMP 的器官
Pi(badlogic/pi-mono)
Mario Zechner 的极简 coding agent 内核:干净的事件流、TUI、可嵌入 SDK。OMP 是它的 fork——README 明确署名「Fork of Pi」,接口基因至今可辨。
OMP 加的「电池」
21 项成文特性:双内核执行、LSP/DAP、流规则、subagent 网格、advisor、collab、文件系统隐喻、哈希锚点编辑、原生工具链……把「Pi you love」做成「ships complete」。
- 作者背景:can1357(Avi Korvennäläinen 等核心贡献者群)以逆向工程与底层工具知名(linux-pe、Volt 等),解释了 ~80k 行 Rust core 的工程胆量
- 治理实验:PR 曾要求「vouch(担保人)」才可提交——现为开放试验期,视结果可能收回;767 贡献者说明社区涌入速度远超一般 harness 项目
核心卖点
Every tool, benchmaxxed:格式即命运
| 模型 | 指标 | 原因 |
| Grok Code Fast 1 | 6.7% → 68.3% | 编辑格式不再吃掉模型——一次命中率十倍提升 |
| Gemini 3 Flash | +5 pp | hashline 超过 str_replace,胜过 Google 自家最优格式尝试 |
| Grok 4 Fast | −61% tokens | 坏 diff 重试循环消失后输出坍缩 |
| MiniMax | 2.1× | 同样的权重同样的 prompt,pass rate 翻倍 |
方法论写在《The Harness Problem》:同一个模型,harness 的工具格式决定其能力的可见上限。OMP 的每个工具(read 摘要式读取、grep 进程内 ripgrep、per-model 调优的 prompt)都按「让弱模型也能一次做对」标准打磨。
架构 🔥
TS 交互层 + Rust 内脏 + 双解释内核
TypeScript 层
系统级能力
执行内核
IDE 接线
LSP 接进每次写入,DAP 是真调试器
- 重命名不是文本替换:调用走 workspace/willRenameFiles——文件移动前 re-export、barrel file、别名 import 全部连带更新。你的 IDE 知道的一切,agent 都知道
- 诊断即反馈环:每次 edit 后 LSP 诊断立即可查,错误在下一 turn 被模型看到,不用等构建
- 不只 TypeScript:Biome 等任意 language server 可配置(docs/lsp-config.md),14 种操作覆盖导航/符号/重构/code action
- 原生二进制段错误:agent 附上 lldb-dap,步进到坏指针,读栈帧,确认数学(README 实录:xorshift32 x: 7 → 57351 = 7 ^ (7<<13))
- 挂起的 Go 服务:dlv 附上,遍历 goroutine 栈定位死锁
- 楔死的 Python 进程:debugpy 暂停、检查、求值——28 个 DAP 操作是完整调试器语义,不是日志美颜
核心机制 🔥
Time-traveling stream rules:规则平时零成本
规则休眠→
regex 命中偏离输出→
流中途中断(token 级)→
注入规则为 system reminder→
同点重试
- 对比 always-on 规则:传统做法把规则塞 system prompt,每 turn 付 context 税且大多 turn 白付;OMP 规则只有被违反那一刻才存在——README 实例:模型准备写 Box::leak 时中断,注入「生产代码别用 Box::leak」,agent 转而提出 Arc<str> 并请你确认
- 注入在压缩后幸存(injections survive compaction)——修过的坑不会随上下文滚动消失
- 这是 harness 设计层的原创:不在 prompt 上堆规则,而是在流上装断路器。下一页 Playground 可亲手玩这套机制
核心机制
subagent 网格 · advisor · collab
task 子代理
扇出到隔离 worktree,各跑各的工具面,产出 schema 校验的类型化对象——父代理直接读字段,不解析散文。兄弟间无合并冲突、无孤儿编辑。
Agent Hub(Alt+A)
运行中实时看全部子代理的活动与开销;打开读实时转录、发 steering 消息、复活停摆 worker、杀掉卡死的——不abort父会话。
advisor 副驾
第二个模型以 advisor 角色旁观每 turn,用自己的上下文和模型注入 aside / concern / hard blocker。干的模型看注记自我修正——或告诉你为什么不听。
- /collab 共享会话:中继 + 链接 + 二维码;队友 omp join 或浏览器加入,读写共驾或只读围观;帧在客户端封印,中继看不到你的密钥
- /review 有裁决:并行 reviewer 子代理扫分支/单 commit/未提交工作,问题按 P0–P3 分级带置信度,先堵发布阻断项
设计哲学
一切皆路径:GitHub 是文件系统,冲突是 URL
# 十六种内部 scheme 在所有 FS 形工具里透明解析
read pr://1428 # PR 和 src/foo.ts 同一个形状
grep "pattern" issue:// # grep 像walk目录一样walk diff
read agent://7/findings.0.path # 按路径取子代理输出的字段
write conflict://1 # 写入 @theirs / @ours / @base → 冲突即解
write conflict://* # 批量形态
read xd:// # 列出 discoverable 工具设备
- 为什么不造 gh_issue_view:每个专用工具都是模型要学、你要 debug 的新接口;「路径」是模型最强的先验——一个界面教会,一个表面保持正确
- omp commit 原子拆分:git_overview / git_file_diff / git_hunk 读工作树 → 无关变更拆成按依赖排序的原子提交,环依赖先拒绝再落盘;源码文件排序高于测试/文档/配置,lock 文件完全不进分析
核心机制
hashline 编辑 + ast_edit 预览
- hashline:按内容哈希锚点编辑——模型指向锚点而非重打整行,空白大战和 string-not-found 循环直接消失
- 陈旧锚点 = 拒绝补丁:文件已被改过则锚点发散,补丁在污染任何东西之前被拒绝(stale-anchor recovery 可恢复)
- Grok 4 Fast −61% 输出 token:不重打上下文行,只为变更付费
- ast_edit:结构化改写(ast-grep)先出 (proposed) 卡片带替换计数,改动处于暂存态
- 一行理由到 xd://resolve,TUI 变成 Accept 卡,磁盘落位原子化——全有或全无
- ast_grep 查询:50+ tree-sitter 语法上的结构化代码查询
工具面
31 个内置工具:一个命名空间,按需 --tools 钉选
| 域 | 工具 |
| 文件与搜索 | read(文件/目录/归档/SQLite/PDF/URL/ssh://)· write · edit(hashline)· ast_edit · ast_grep · grep · glob |
| 运行时 | bash(46 内建 coreutils + PTY + 后台作业)· eval(持久 Python/JS cell + 工具回调) |
| 代码智能 | lsp · debug(DAP)· security_scan(原生安全审查 / Codex Security 云扫) |
| 协调 | task(并行子代理)· hub(消息/等待/取消/监督)· todo · ask |
| 桌面与 Web | browser(Puppeteer tab,默认隐身,可收编已开 Chrome)· computer(真桌面:窗口/截图/原生输入/AX 树/剪贴板)· web_search(23 provider 链)· github · generate_image · tts |
| 记忆与技能 | checkpoint/rewind(上下文修剪+摘要)· retain/recall/reflect/memory_edit · learn/manage_skill |
魔法词 ultrathink / orchestrate / workflowz 只在散文触发(不进代码 span/围栏/标识符/路径)。九个模型角色:default / smol / slow / plan / commit / vision / task / advisor / tiny,Ctrl+P 循环,/model 中途换。
生态兼容
记忆自策展,别人的配置直接读
- 跨会话记忆:运行中 retain 记事实、learn 存教训、recall/reflect 检索综合,每个会话压缩成「心智模型」在下个会话第一 turn 装载。后端可选 local / Hindsight / Mnemopi,默认项目隔离——这个仓库学到的留在仓库
- 八种既有格式原生读:Cursor MDC、Cline .clinerules、Codex AGENTS.md、Copilot applyTo……团队上季度写的配置今晚照常工作,零迁移脚本
- ACP 编辑器驱动:Zed 里跑同一个 omp——读你正在看的 buffer、走编辑器保存路径写、在编辑器终端里开 shell;破坏性工具弹一次授权永久生效。无桥、无插件、无双脑同步
- /vibe 导演模式:作为 director 驱动持久的 fast/good worker 会话,自己只读不写——把「规划与执行分层」做成会话形态
在线体验
亲手装一条流规则,看它掐灭一次跑偏
Playground 复刻 time-traveling stream rules:定义规则(regex + 注入文本 + 修正后缀)→ 播放模拟模型输出流 → 命中瞬间红色中断、琥珀色注入卡、同点重试 → 输出修正。右侧实时对比 always-on 规则的 context 税:规则命中率为零时省 100%,命中率畸形时如实显示更贵。环形 rewrite 会触发 max-retries 保护。
纯前端实现,零网络依赖 · 匹配顺序 / 事件序列 / 链式规则 / 重试上限 / 成本模型 200 组随机不变式全验证
适用场景 + 风险
适合谁,警惕什么
适合
- 终端 agent 重度用户:从 Claude Code/Codex CLI 迁来想要更强工具面(LSP/DAP/双内核)且不想付订阅的人
- 系统/原生开发者:C/C++/Rust/Go 调试场景——真调试器步进是独一档
- agent harness 研究者:hashline / 流规则 / FS 韵律 / advisor 都是可借鉴的 harness 层原创
风险
- 节奏剧烈:9 个月 v18、日级发版、3,023 open issues——追新要付出升级注意力
- 治理未稳:PR vouch 制度「暂时开放」;单核维护者 + 庞大 Rust core 的巴士系数待观察
- 能力面过宽:computer 桌面控制、browser、collab 中继都是攻击面——默认关闭的闸门要自己核对(设置门控清单见 README)
- 上游分叉税:Pi 上游演进与 OMP 的 21 特性补丁长期并行,rebase 成本是结构性风险
生态位
终端 agent 竞争格局的「内脏位」
| 路线 | 代表 | 与 OMP 的差异 |
| 商业官方 CLI | Claude Code、Codex CLI 等 | 与自家模型/订阅深度绑定;工具面相对保守。OMP provider 中立、60+ 家、按模型调 prompt |
| 极简内核 | Pi(上游)等 | 哲学是「够小可审计」;OMP 反向押注「完整开箱」——同一躯体的两种进化策略 |
| 开源复刻系 | OpenCode、Aider 等 | 编辑格式与工具面各异;OMP 用基准数据把「格式决定模型上限」打成公开牌,并以 LSP/DAP/原生工具链构成差异化内脏 |
OMP 占的位置是「harness 工程极致派」:不比模型比内脏——编辑格式、进程内工具链、IDE 协议接线、流式断路器,全部自己写。《The Harness Problem》把这类工作上升成论点:模型能力的天花板,一半在 harness 手里。
潜力评估
未来空间
评分 9.0:9 个月 32.8k stars / 767 贡献者 / 日级发版,是终端 agent 开源侧最猛的加速度;而它真正值钱的是把「harness 工程」做成了可学习的范本——hashline 编辑格式、流式规则断路器、一切皆路径的内部 scheme、LSP/DAP 全面接线,每一项都在回答「同一模型为什么在这里更强」。benchmaxxed 文化(拿数据说话)+ 八格式兼容(降低迁移成本)是聪明的生态打法。扣分:治理未稳(vouch 试验)、3k issues 的维护压力、能力面过宽带来的安全与质量摊薄、上游 fork 税。看点:若 vouch 恢复收紧贡献面、ACP 被 Zed 之外的编辑器采纳、或 hashline 编辑格式被其他 harness 借走成为事实标准,就是它从「极客利器」跨进「工程默认」的信号。