Oh My Pi:把 IDE 能力接进终端的开源编码 Agent

Oh My Pi(GitHub 仓库 can1357/oh-my-pi,简称 OMP)是一个把 IDE 级能力装进终端命令行的开源编码 Agent。截至 2026 年 8 月 26 日,它在 GitHub 上累计获得 27.7k star、2.7k fork,由 484 位贡献者提交了 20,054 次 commit,发布 577 个 release,采用 MIT 协议。它的特别之处在于不做外部依赖的堆叠,而是把 LSP、调试器、浏览器、桌面控制这些通常属于 IDE 的能力,直接编译进自己的 Rust 核心。

OMP 的来历

OMP 是 Mario Zechner 的开源项目 Pi(pi-mono)的增强重写。原版 Pi 已是终端编码 Agent 中的知名项目,OMP 在其基础上用 TypeScript 与 Rust 重写并扩充能力,定位是「coding agent with the IDE wired in」——把 IDE 接进来的编码 Agent。

代码构成上,TypeScript 占 84.4%,Rust 占 9.3%——约 8 万行 Rust 组成核心,拆为 pi-shell、pi-natives、pi-ast、pi-iso、pi-voice、pi-walker 六个 crate,另有 5.2% 的 Python。macOS、Linux、Windows 三平台都有原生二进制,Windows 上不需要 WSL 桥接。

四项 IDE 级能力

LSP 写入集成。 执行重命名这类重构时,请求走 workspace/willRenameFiles,重导出、barrel 文件、别名导入会在文件移动前同步更新。IDE 掌握的项目结构信息,agent 都能拿到。

真实调试器。 C 程序段错误时,agent 挂上 lldb 逐步定位;Go 服务卡住时挂 dlv 检查 goroutine;Python 进程卡住时用 debugpy 暂停、检查、求值。项目文档演示中不再靠 print 语句排错。

浏览器。 通过 Puppeteer 驱动 headless Chromium,stealth 模式默认开启,页面看到的是普通用户而不是机器人;也可以通过 relay 扩展接管用户已打开的 Chrome 标签页,不抢焦点。

桌面控制。 computer 工具在真实主机上运行持久 JavaScript:枚举窗口与显示器、截屏、发送原生输入、读取可访问性树、读写剪贴板。

工具全部编译进进程

OMP 的另一个核心取舍是 in-process:ripgrep、glob、find、sed、sort、jq 等 58 个命令行工具被移植进 builtins crate,与内置 bash 一起编译进二进制;grep、搜索、语法高亮、图像解码、BPE 计数都在进程内完成,不经过 fork/exec。

收益有两个:一是机器上装没装 rg、grep、find 都不影响使用;二是每次工具调用省掉一次 fork-exec 往返,在频繁调用的场景下累积明显。

编辑格式直接决定模型表现

OMP 团队公布的 benchmark 数据很直接:Grok Code Fast 1 的编辑通过率从 6.7% 提升到 68.3%,MiniMax 在同权重、同提示词下通过率翻到 2.1 倍,Grok 4 Fast 输出 token 减少 61%——同一批模型,只换了编辑格式。他们的结论是:糟糕的编辑格式会「吃掉」模型的表现。

对应的工程方案是 hashline:编辑时指向内容哈希锚点,而不是重打整行;文件过期时锚点偏离,patch 会在写入前被拒绝,避免损坏代码。时间旅行流规则则让预设规则在模型偏离脚本时中途注入纠正,且注入内容在上下文压缩后依然保留。

记忆、子代理与协作

  • 记忆系统:retain 写入事实、learn 沉淀经验、recall 取回,后端可选本地 SQLite、Hindsight 或 Mnemopi,默认按项目隔离;
  • 子代理:task 在隔离的 worktree 中并行拆分任务,每个 worker 有独立工具面,最终通过 schema 校验的 yield 对象返回结果;Agent Hub 面板可实时查看每个子代理的活动与用量,还能复活停摆的 worker;
  • 协作与结对:/collab 把实时会话放到中继上生成链接与二维码,队友用 omp join 加入,可读写结对,也可只读围观;
  • 评审:/review 派发专门的评审子代理并行检查分支、单次提交与未提交改动,问题按 P0–P3 分级并给出置信度评分;
  • advisor 角色:第二个模型盯住主模型的每一轮,把疑虑、concern、硬性阻断注入行内,主模型据此纠正或说明不纠正的理由。

模型路由与配置兼容

OMP 支持 60+ 模型 provider、上千个模型,10 个角色(default / smol / slow / plan / commit / vision / designer / task / advisor / tiny)按用途路由;Anthropic、OpenAI、Gemini、DeepSeek、DeepInfra 等直接 API 或网关接入,也支持 Ollama、LM Studio 等本地模型;付费编码计划涵盖 Cursor、GitHub Copilot、Kimi Code 等。

兼容性上,OMP 直接读取磁盘上已有的 8 种 agent 配置格式——Cursor MDC、Cline .clinerules、Codex AGENTS.md、Copilot applyTo 等,不需要迁移脚本,也不存在「受支持子集」的问题。

一点判断

OMP 的价值不在「又是一个终端 Agent」,而在于两个工程选择:把 IDE 能力与常用命令行工具全部拉进进程内,以及把编辑格式当作一等公民来优化。前者让它在任何机器上开箱即跑,后者直接带来同模型下数倍的通过率提升——这两点在 27.7k star 与 577 个 release 背后,是看得见证据的。

拿不准「某一家」规模时,一个可复述的结论是:终端编码 Agent 的竞争已经从「模型强不强」转向「harness 工程好不好」,而 OMP 是目前把这个方向做得最完整的开源项目之一。