Files
ycode/docs/omp与pi-agent对比调研-2026-10-17.md
T

11 KiB
Raw Blame History

OMP 与 Pi(pi agent)对比调研

  • 日期:2026-10-17
  • 范围:公开仓库与官方文档调研(非 WorkBuddy 实现观察,不涉及 REA 渠道)
  • 结论先行:两者是同一血统的两条路线——pi agent(Pi)是 Mario Zechner 的极简可扩展 agent 工具链/上游项目;omp(oh-my-pi)是它的 fork,由 Stencil Labs 改造成"电池全包"的终端编码 agent。YCode 当前内核用的 omp.exe 就是这个 fork。

1. 身份与亲缘关系

项 omp pi(pi agent)
全称 oh-my-pi Pi(pi-mono 项目,CLI 名 pi)
官网 omp.sh pi.dev
仓库 github.com/can1357/oh-my-pi github.com/earendil-works/pi(原 badlogic/pi-mono)
作者/维护 Can Bölük(can1357)· Stencil Labs Mario Zechner(badlogic,libGDX 作者)· Earendil Works
npm 包 @oh-my-pi/pi-coding-agent @earendil-works/pi-coding-agent
当前版本 18.11.2(2026-10-16 提交) 1.3.0(2026-10-15 发布,全仓 lockstep 版本)
本机在用 C:\Users\Administrator\AppData\Local\Ygent\omp.exe,18.6.3(YCode 现内核) 未安装

命名澄清(容易混淆的点):omp 是 fork,所以它的包名、Rust crate 名都保留 "pi" 前缀(@oh-my-pi/pi-coding-agent、pi-shell、pi-natives、pi-tui 等)。"pi agent" 指上游 Pi 本身,不是 omp 内部某个组件。


2. 一句话差异(定位)

  • Pi:"a minimal, extensible agent harness that you can make your own"——刻意做小,自带 4 个工具、约 300 词 system prompt;子代理、计划模式等"重功能"故意不做,靠 TypeScript 扩展/技能/包让使用者自己加。它是平台:pi-ai、pi-agent-core、pi-coding-agent、pi-tui 每层可独立引入(OpenClaw 就是直接 import SDK 而非跑子进程)。
  • omp:"The Pi you love, with batteries included"——把 Pi 故意留白的部分全部内置:31 个工具、LSP/DAP、子代理、计划模式、审批、记忆、协作、浏览器/桌面控制,外加约 8 万行 Rust 原生核心。它是产品:装上直接干活,而不是给你一堆积木。

3. 对比总表

维度 omp(oh-my-pi) pi(pi agent)
定位 电池全包的终端编码 agent(fork 产品化) 极简可扩展 harness / 分层工具链(上游)
技术栈 TypeScript + ~80k 行 Rust 原生核心(N-API,随二进制内嵌 shell/ripgrep/glob/tokenizer);单个 Bun 打包二进制 纯 TypeScript(Node ≥ 22.19);工具进程外调用
内置工具 31 个:read/write/edit/ast_edit/grep/glob/bash/eval/lsp/debug/task/browser/computer/web_search/memory 等;14 个 LSP 操作、28 个 DAP 操作 4 个:read / write / edit / bash(另有 find/grep/ls 工厂可显式启用)
System prompt 大而全(自带能力全覆盖) 极简(约 300 词)
子代理 一等公民:task 分发到隔离 worktree,类型化结果,Agent Hub 无(官方建议自己用扩展/tmux 实现)
计划模式 内置 /plan 无(官方建议把计划写成文件)
MCP 内置(/docs/mcp,含 mcp:// 读取方案) 1.x 起已内置:mcp.json、pi mcp add/list、exposure 四档(codemode/deferred/direct/hidden)、OAuth;"无 MCP"的说法已过时
权限/审批 内置 approvals 体系 + ask 结构化提问 + ACP session/request_permission 门控 无内置权限系统(默认 YOLO,按进程权限运行);官方建议容器化(Gondolin/Docker/OpenShell)
会话 JSONL 树(resume/branch/fork/compact/steer/share),~/.omp/agent JSONL 树(entry 带 id/parentId,/tree 导航),~/.pi/agent
上下文压缩 自动/手动压缩 + snapcompact(上下文渲染成像素字体 PNG,无需模型调用) 自动/手动 compaction(/compact),历史保留在 JSONL
嵌入方式 TUI / one-shot / SDK / RPC / rpc-ui / ACP(编辑器如 Zed) TUI / print / JSON 事件流 / RPC / SDK
RPC 协议 NDJSON over stdio;启动先发 ready(带 protocolVersion 协商);--mode rpc-ui 增加 UI 扩展事件 NDJSON over stdio;命令/response/事件/extension_ui 四类记录;等待 agent_settled 判定回合彻底结束
模型接入 60+ providers、9 种角色(default/smol/slow/plan/commit/vision/task/advisor/tiny)、fallback 链、凭据轮换 20~30+ providers,统一 API(pi-ai),支持订阅 OAuth(Claude Pro/Max、ChatGPT、Copilot 等)与跨供应商中途切换
平台 macOS/Linux/Windows 原生单二进制(明确强调 Windows 不用 WSL) macOS/Linux/Windows(Node 安装器 + npm/Nix)
许可证 MIT MIT(pi-mono 时代)→ MIT(现行)
治理/节奏 社区 fork,激进迭代(31k+ commits,版本号 18.x) 上游主项目,lockstep 发版(v1.3.0),组织化治理(含安全供应链加固)

4. 分维度详解

4.1 血统:fork 关系是理解一切差异的钥匙

omp README 自述:"omp is a fork of pi-mono by Mario Zechner, extended with a batteries-included coding workflow." 因此:

  • 两者设计语言同源:会话为 JSONL 树(id/parentId)、--no-session 临时模式、prompt RPC 命令、message_update/assistantMessageEvent/text_delta 事件、NDJSON over stdio 等都一脉相承。YCode 的 src/main/omp.ts 注释描述的协议形态与 pi 官方 RPC 文档几乎同构。
  • 分化点在于 "要不要替使用者做决定":Pi 把子代理、计划模式、权限弹窗、todo 等统统砍掉("features confuse models"是它的原话逻辑);omp 则逐项内置,还加了 Pi 没有的原生核心、审批、协作等。

4.2 内核实现:性能路线分道扬镳

  • Pi:纯 TS,工具逻辑跑进程外命令(bash 调用系统 shell / rg 等),安装即 npm 包,跨平台一致性依赖环境。
  • omp:把 bash(brush-shell)、coreutils、ripgrep、glob walker、tree-sitter AST、PTY、图像解码、BPE 计数等全部编进 Rust N-API 单二进制,"no fork/exec on the hot path";官方宣称 hashline 内容哈希编辑让 Grok 4 Fast 在同一任务上少花 61% 输出 token、MiniMax 通过率翻倍。代价是仓库体量和与上游的偏离度大。

4.3 功能面:一个做减法,一个做加法

  • Pi 的减法(官方明示):无子代理、无计划模式、无内置权限系统、无内置 todo。补充方式:扩展(TS 模块,可注册工具/拦截 tool_call)、技能(Markdown+README)、prompt 模板、npm/git 分发包。
  • omp 的加法(21 项扩展,摘关键):持久 Python/Bun eval 并回调自身工具、写文件即过 LSP、驱动真实调试器、流规则(TTSR)、子代理+worktree、第二模型 advisor、/collab 加密共享、/review P0–P3 代码审查、hashline 编辑、GitHub 即文件系统(pr://、issue://)、自维护记忆(retain/learn/recall)、继承 Cursor/Cline/Codex/Copilot 既有配置、浏览器与桌面控制。

4.4 嵌入与协议:对 YCode 最相关的一节

  • 两者都提供 stdio NDJSON RPC 作为宿主嵌入方式,命令都用可选 id 关联响应;turn 结束判定都涉及 agent_end(omp 另有 isTerminal 语义、pi 有 agent_settled 全静默语义)。
  • 差异点(需实测确认):
    • omp 启动后先写 ready 帧(含 protocolVersion: 1、supportedProtocolVersions: [1,2]、maxFrameBytes: 1048576);pi 文档未描述 ready 握手帧。
    • omp 有 --mode rpc-ui(UI 能力标记 + 扩展 UI 桥),Ygent/YCode 侧历史上用过;pi 的对应物是 RPC Extension UI 记录族。
    • omp 拒收 @file 命令行参数(同 pi),文件引用走 prompt。
  • 嵌入 SDK:omp 暴露 ModelRegistry/SessionManager/createAgentSession;pi 有官方 TypeScript SDK + RpcClient。两者都支持"进程外 RPC"和"进程内 SDK"两档集成。
  • 编辑器协议:omp 提供 ACP(Zed 等);pi 侧公开文档未见 ACP 一等支持(以 RPC/SDK 为主)。

4.5 版本与维护

  • omp:fork 后自主版本线(18.x),节奏极快(README 数据 31,158 commits、910 tags);本机 18.6.3 落后上游约 5 个 minor(18.11.2)。
  • pi:上游按 lockstep 发全包 1.3.0;供应链加固(精确锁版本、min-release-age、安装锁、CI 审计)明显更工程化,说明其定位偏"被依赖的平台"。

5. 对 YCode 的含义(不预设结论)

  1. 现内核归属与版本:YCode 用的 omp.exe 18.6.3 是 omp(oh-my-pi),不是 Pi 上游。记录内核版本时可直接标注 "omp (oh-my-pi) 18.6.3",避免与上游 Pi 混淆。
  2. 协议同源 ≠ 能力等价:omp 适配层(src/main/omp.ts + agent/omp-turn.ts)与 pi 的 RPC 形态高度相似,若未来评估"内核可替换性/双内核",pi 是迁移成本最低的候选;但按 AGENTS.md,等价性必须按工作包逐项验证,不能由协议相似直接推论。
  3. 功能对齐视角:WorkBuddy 侧的能力面(计划、子代理、技能、MCP、审批/问答、压缩续写)与 omp 的"全内置"路线匹配度更高;换成上游 Pi 则这些都需要宿主自建(扩展/Docker 化权限等),反而是额外工作量。
  4. 版本差:本机 18.6.3 与上游 18.11.2 的差异清单未做;升级属内核变更,需要单独验证回合语义/事件兼容性。

6. 未验证项(需另行取证)

  • 本机 omp 18.6.3 与上游 18.11.2 的具体差异(未逐项 diff changelog)。
  • pi 1.3.0 的 RPC 与 omp 18.x 的 RPC 逐帧差异(ready 帧、版本协商、事件命名、终态语义)未做真实对照实验。
  • omp 对 pi 扩展生态的兼容程度(fork 后 diverge 深度)未核查。
  • 两者"子代理/计划/审批"具体行为对 YCode 复刻 WorkBuddy 语义的等价性未评估。
  • 星标数等社区指标:omp ~3.6 万(GitHub 2026-10-16 抓取);pi 侧第三方报道约 5.5 万,未以 GitHub 页面直证,仅作量级参考。

7. 来源

来源 URL 采集日期
omp 官网首页 https://omp.sh 2026-10-17
omp CLI 参考 https://omp.sh/docs/cli 2026-10-17
omp RPC 模式 https://omp.sh/docs/rpc 2026-10-17
omp 文档总览 https://omp.sh/docs 2026-10-17
omp GitHub(fork 说明、21 项特性、Rust 核心、v18.11.2) https://github.com/can1357/oh-my-pi 2026-10-17
Pi 仓库 README(极简定位、跳过项、权限模型、包列表) https://github.com/badlogic/pi-mono(重定向至 earendil-works/pi) 2026-10-17
Pi RPC 模式 https://pi.dev/docs/latest/rpc 2026-10-17
Pi MCP 支持 https://pi.dev/docs/latest/mcp 2026-10-17
npm:pi-coding-agent 1.3.0 https://registry.npmjs.org/@earendil-works/pi-coding-agent/latest 2026-10-17
npm:oh-my-pi 18.11.2 https://registry.npmjs.org/@oh-my-pi/pi-coding-agent/latest 2026-10-17
第三方 Pi 深度拆解(4 工具、循环语义) needhelp.icu / yeyulingfeng.com / 0bserver07.github.io/chimera 2026-10-17

注:社区指标与第三方文章仅作背景参考;凡引用均以官方仓库/文档为准,未验证项已列于第 6 节。