Pi 与 oh-my-pi
同一个 内核 的两种活法
这俩不是竞品,是父子。oh-my-pi(命令 omp)是 Mario Zechner(badlogic)的 Pi / pi-mono 的一个 fork,被 Can Bölük 重写成"把 IDE 焊进来的"编码专用分支。上游 Pi 走最小化、可自扩展的 harness 路线;omp 走开箱即用、电池全满的 fork 路线。本指南基于两者官方 README 与社区实测,把差异一次讲透。
先理清 血缘:上游 harness 与它的 fork
很多对比文章把两者当成平级竞品,这是最大的误会。读懂"谁 fork 了谁",才能理解为什么它们的底层工具如此相像、又为何走向不同极端。
@earendil-works/pi-coding-agent
earendil-works/pi。
@oh-my-pi/pi-coding-agent
安装 指南
Pi 走 npm + 官方脚本;oh-my-pi 提供 curl / Homebrew / Bun / Nix / Windows PowerShell / mise 六条路径。装完分别得到 pi 与 omp 命令。
pi官方 安装
Pi 以 npm 全局安装为主,官方脚本同时提供。安装脚本本身不做特殊操作。
--ignore-scripts 是安全的——Pi 正常安装本就不需要任何 postinstall 脚本,加上它可避免任何意外执行。
omp官方 安装
omp 提供六条官方安装路径,覆盖主流平台与包管理器。
pi --version / omp --version。omp 首次启动会自动继承来自 8 种工具目录的 rules / skills / MCP 配置——这是它"开箱即用"的关键一步。
模型与 提供商
两者都"模型无关",但路线不同:Pi 用统一的 pi-ai 多提供商 API 当抽象层;omp 则直接塞进 60+ 提供商 + 10 种角色路由 + 可自定义 fallback 链。
一层 抽象
Pi 的 pi-ai 包是一个统一的多提供商 LLM API,把 OpenAI / Anthropic / Google 等不同厂商的差异收成一套接口。写 agent 时你只面对 pi-ai,换模型不换代码。
路由 矩阵
omp 内置 60+ 提供商,并把模型切成 10 种角色:default / smol / slow / plan / commit / vision / designer / task / advisor / tiny。支持 auth 标签(oauth / plan / local)、fallback 链、路径级模型、轮询凭证。
pi-ai + pi-agent-core 更干净,适合嵌入你自己的产品。
核心 能力 之差
同源的"四个最小工具"只是起点。真正的差距在:omp 把 31 个内置工具、LSP、DAP 调试器、记忆、GitHub-as-filesystem 全焊进来了;Pi 则把工具台空着,等你接。
四个 原语
都从 read / write / edit / bash 起步——这是 Pi agent 循环的基本工具集,omp 继承并扩展它。
read · write · edit · bash
工具 全家桶
omp 内置 31 个工具:含 23 后端 web_search、原生进程内工具(无 fork/exec)、GitHub-as-filesystem、浏览器 / Slack / 桌面集成等,几乎覆盖日常编码全场景。
web_search · gh_fs · browser · slack
语言 服务
omp 支持 14 个 LSP 操作(每次写文件都跑 LSP 诊断)与 28 个 DAP 操作(内置调试器)。Pi 的 TUI 路线则不包含这一层。
LSP ×14 · DAP ×28
空台 待扩展
Pi 把运行时(pi-agent-core)和工具调用机制给你,但不预装一堆工具。它假设你会在自己的扩展里注册所需能力——这是"minimal / self-extensible"的代价,也是自由。
IDE wired in
omp 的招牌是"the IDE wired in":通过 ACP 协议与 Zed 等编辑器直连,每次编辑实时喂 LSP 诊断;另有 subagents、advisor 模型、/collab、TTSR、AST 编辑、原子提交、冲突解决等 21 根功能支柱。
编辑格式 之战:harness 才是瓶颈
为什么社区(尤其 omp 作者 Can Bölük)这么在意"怎么改文件"?因为实测显示:换个编辑格式,16 个模型的编码通过率平均 +15 分,弱模型直接翻 10 倍——而训练成本为零。这正是 omp 把 hashline 编辑格式焊进来的原因。
(16 个模型)
6.7% → 68.3%
(少烧重试 token)
(只改了 harness)
各家 各搞一套
Codex 用 apply_patch(非 GPT 模型 patch 失败率飙升:Grok 4 达 50.7%、GLM-4.7 达 46.2%);Claude Code 用 str_replace("String to replace not found" 是常年头号报错);Cursor 甚至专门微调了个 70B 模型做 instant-apply。Aider 自己的基准里,光格式选择就让 GPT-4 Turbo 从 26% 跳到 59%。
内容 哈希锚
omp 让模型读到的每一行都带一个 2–3 字符内容哈希。模型编辑时引用哈希标签("替换第 2:f1 行""替换 1:a3 到 3:0e"),不用复述原文与空格。文件变了哈希就对不上,编辑在破坏发生前被拒。
权限与 沙箱:诚实的差异
这是两者最容易被误写的一点。Pi 明确没有内置权限系统,以启动者的用户权限运行;omp 则有 ACP 权限门控。想隔离,Pi 得自己套沙箱。
你给 权限
Pi 官方明说:"does not include a built-in permission system"——它"以启动它的用户与进程的权限运行"。也就是说,它在你本机上有多大权,它就多大权。
门控 内置
omp 在 21 根功能支柱里明确包含 ACP permission gating——通过 ACP 协议对工具调用做权限门控。相比 Pi 的"全权运行 + 自套沙箱",omp 在 harness 层就给了你一道闸。
扩展与 生态
同源的工具 API 让两者都能被扩展。Pi 的卖点是"你自己造扩展";omp 的卖点是"首次运行就继承 8 种工具的配置 + 同样的 TS 模块扩展"。
你造 能力
Pi 通过 TypeScript 扩展、Agent Skills、提示模板、主题、MCP 实现高度可定制。运行时在 pi-agent-core,扩展里注册自定义工具与生命周期钩子。适合想把 agent 焊进自己产品的团队。
拿来 即用
omp 支持 TypeScript 模块扩展,复用同一套工具 API;首次运行会自动从 8 种工具目录继承 rules / skills / MCP 配置。SDK @oh-my-pi/pi-coding-agent 导出 ModelRegistry / SessionManager / createAgentSession / discoverAuthStorage。
横向 对比表
同一套内核下的两条路线——固定维度,逐项对照。
| 维度 | Pi · earendil-works/pi | oh-my-pi · can1357/oh-my-pi |
|---|---|---|
| 关系 | 上游原版(pi-mono by Mario Zechner) | Pi 的 fork,重写为 coding-first |
| 实现语言 | TypeScript | ~80k LoC Rust(6 crate + builtins + brush-core) |
| 安装 | npm + 官方脚本 | curl / Homebrew / Bun / Nix / Win-PS / mise |
| 命令 | pi | omp |
| 模型/提供商 | pi-ai 统一多提供商 API(OpenAI/Anthropic/Google…) | 60+ 提供商 + 10 角色路由 + 自定义 fallback |
| 核心工具 | read/write/edit/bash + 自注册扩展 | 31 内置工具 + 14 LSP + 28 DAP |
| IDE 集成 | TUI 终端(无内建编辑器联动) | "IDE wired in" via ACP/Zed,每写即 LSP |
| 编辑格式 | 标准 edit | hashline(内容哈希行锚) |
| 权限/沙箱 | 无内置权限系统;需自套 Gondolin/Docker/OpenShell | ACP permission gating(harness 内建门控) |
| 记忆 | 靠 skills / 扩展自建 | curated memory(retain/learn/recall) |
| 入口/模式 | 交互式 TUI / CLI | TUI / one-shot omp -p / RPC(NDJSON) / ACP(JSON-RPC) |
| SDK | pi-agent-core 运行时可嵌入 | @oh-my-pi/pi-coding-agent(ModelRegistry/SessionManager/createAgentSession/discoverAuthStorage) |
| 扩展 | TS 扩展 / Skills / 提示模板 / 主题 / MCP | TS 模块扩展 + 继承 8 种工具配置 |
| 供应链 | 精确 pin 依赖、save-exact、shrinkwrap | Rust 原生实现,进程内工具无 fork/exec |
| 协议 | MIT | MIT(© Mario Zechner, Can Bölük, Stencil Labs) |
社区 怎么用 它俩
光看 README 不够——去网上逛了一圈,看看真实用户与作者怎么用。两者都走"开放、可分享"的路线,但落点不同。
共享 会话
Pi 把开源会话做成了一个数据集:用 badlogic/pi-share-hf 收集、审阅、上传已脱敏的 Pi 会话文件到 Hugging Face,沉淀为数据集 badlogicgames/pi-mono。想接 Slack,有独立的 earendil-works/pi-chat。
harness 实测
omp 作者把"开放 harness 比模型更重要"做成了公开实验:同一基准测 16 模型 × 3 编辑格式,证明 hashline 把弱模型翻 10 倍(基准代码就在 omp 仓库 packages/react-edit-benchmark)。社区围绕"IDE 集成 + 多模型路由"活跃使用。
资源 & 速查
官方仓库与文档链接,外加两款工具的高频命令速查。所有事实均来自这些公开来源。
链接 合集
链接 合集
高频 命令
高频 命令
该 选哪个?
同源于 Pi、都 MIT、都模型无关。区别只在"你想要的这份能力,是自己焊还是已经焊好"。
选 Pi
- → 想要最小内核、自己组装扩展/skills/MCP
- → 要把 agent 运行时嵌入自有产品(pi-agent-core)
- → 想用统一 pi-ai 抽象层在多模型间切换
- → 愿意自己配 Docker/Gondolin 沙箱控信任面
- → 想参与开源会话数据集(pi-mono on HF)
选 oh-my-pi
- → 想要 IDE 焊进来(Zed/ACP)、每写即 LSP
- → 要 31 内置工具 + 调试器 + 记忆,免配置
- → 用 60+ 提供商 + 角色路由做多模型编排
- → 看重 hashline 编辑格式带来的弱模型增益
- → 想要 harness 内建的 ACP 权限门控
omp 装上体验"满血 IDE agent",再 pi 拿最小内核练手自己的扩展;理解了 fork 关系,你手里其实是一套可深可浅的同一范式。
正式切换前可选择 Giscus / Gitalk / Twikoo。当前预览版暂不接入第三方脚本,避免干扰主站。