Pi vs oh-my-pi · 开源 Coding Agent 横向对比指南

2026-09-12 学习 Pi,oh-my-pi,Coding Agent,AI 编程,开源工具 5,861 字 约 14 分钟
MIT · 上游 vs Fork
AI Coding Agent · Pi / oh-my-pi

Pioh-my-pi
同一个 内核 的两种活法

这俩不是竞品,是父子。oh-my-pi(命令 omp)是 Mario Zechner(badlogic)的 Pi / pi-mono 的一个 fork,被 Can Bölük 重写成"把 IDE 焊进来的"编码专用分支。上游 Pi 走最小化、可自扩展的 harness 路线;omp 走开箱即用、电池全满的 fork 路线。本指南基于两者官方 README 与社区实测,把差异一次讲透。

协议 均为 MIT 关系 omp = Pi(pi-mono) 的 fork omp 规模 ~80k LoC · Rust omp 能力 60+ 提供商 · 31 工具
Chapter 01

先理清 血缘:上游 harness 与它的 fork

很多对比文章把两者当成平级竞品,这是最大的误会。读懂"谁 fork 了谁",才能理解为什么它们的底层工具如此相像、又为何走向不同极端。

上游原版 · earendil-works/pi
@earendil-works/pi-coding-agent
pi.dev · "this one is yours"
Pi 是 AI agent 工具集(harness)项目的本体:一个"可自扩展的编码 agent"。官方定位为 minimal terminal coding harness——核心保持精简,把扩展能力完全交给你自己组装。它由 Mario Zechner(badlogic)发起,现归属 earendil-works/pi
最小化内核 可自扩展 TypeScript 实现 无内置权限系统
batteries-included fork · can1357/oh-my-pi
@oh-my-pi/pi-coding-agent
omp.sh · "A coding agent with the IDE wired in"
omp 是 Pi / pi-mono 的一个 fork,"被重写成了一个 coding-first 的界面"。它用 ~80k 行 Rust(6 个 crate + pi-builtins + 内置 brush-core)把能力焊死:31 个内置工具、60+ 提供商、LSP/DAP、与 Zed 的 IDE 集成。作者 Can Bölük(Stencil Labs)。
IDE 焊进来 电池全满 Rust 实现 ACP 权限门控
💡 一句话定位:Pi 是"给你一套精简内核,剩下的你说了算"的上游 harness;oh-my-pi 是"把 IDE、LSP、调试器、记忆、权限全塞好,装上就能写"的fork 成品。两者都 MIT 开源,底层范式同源——所以读懂一个,另一个的大部分概念也通。
⚠️ 常见误读:omp 不是 Pi 的"竞品分支"或"套壳",它的 README 明确写着 "Fork of Pi by Mario Zechner"。源码层面继承 Pi 的 agent 循环与工具 API,再叠加自己的 Rust 实现。把它当"另一个独立项目"去比,会漏掉最关键的那层关系。
Chapter 02

安装 指南

Pi 走 npm + 官方脚本;oh-my-pi 提供 curl / Homebrew / Bun / Nix / Windows PowerShell / mise 六条路径。装完分别得到 piomp 命令。

Pi · 命令 pi

官方 安装

Pi 以 npm 全局安装为主,官方脚本同时提供。安装脚本本身不做特殊操作。

# 方式一:npm 全局安装(推荐) npm install -g --ignore-scripts @earendil-works/pi-coding-agent # 方式二:官方一键安装脚本(Linux / macOS) curl -fsSL https://pi.dev/install.sh | sh # 卸载 npm uninstall -g @earendil-works/pi-coding-agent
⚠️ 注意:--ignore-scripts 是安全的——Pi 正常安装本就不需要任何 postinstall 脚本,加上它可避免任何意外执行。
oh-my-pi · 命令 omp

官方 安装

omp 提供六条官方安装路径,覆盖主流平台与包管理器。

# 方式一:官方 curl 一键安装(macOS / Linux) curl -fsSL https://omp.sh/install | sh # 方式二:Homebrew(macOS) brew install can1357/tap/omp # 方式三:Bun(推荐,速度快) bun install -g @oh-my-pi/pi-coding-agent # 方式四:Nix nix-env -iA nixpkgs.omp # 方式五:Windows PowerShell iwr https://omp.sh/install.ps1 -useb | iex # 方式六:mise mise use -g npm:@oh-my-pi/pi-coding-agent
💡 验证:装完分别跑 pi --version / omp --version。omp 首次启动会自动继承来自 8 种工具目录的 rules / skills / MCP 配置——这是它"开箱即用"的关键一步。
Chapter 03

模型与 提供商

两者都"模型无关",但路线不同:Pi 用统一的 pi-ai 多提供商 API 当抽象层;omp 则直接塞进 60+ 提供商 + 10 种角色路由 + 可自定义 fallback 链。

Pi · pi-ai 统一 API

一层 抽象

Pi 的 pi-ai 包是一个统一的多提供商 LLM API,把 OpenAI / Anthropic / Google 等不同厂商的差异收成一套接口。写 agent 时你只面对 pi-ai,换模型不换代码。

# Pi 包结构(来自官方仓库) pi-coding-agent # 交互式 CLI pi-agent-core # 运行时 + 工具调用 pi-ai # 统一多提供商 LLM API pi-tui # 终端界面 pi-telemetry # 遥测 pi-chat # Slack 接入(earendil-works/pi-chat)
oh-my-pi · 60+ 提供商 + 角色路由

路由 矩阵

omp 内置 60+ 提供商,并把模型切成 10 种角色default / smol / slow / plan / commit / vision / designer / task / advisor / tiny。支持 auth 标签(oauth / plan / local)、fallback 链、路径级模型、轮询凭证。

# 自定义 OpenAI 兼容提供商 # ~/.omp/agent/models.yml - name: my-local base_url: http://localhost:11434/v1 api_key: ollama roles: [default, smol]
🧭 怎么选:只想"接个 Claude / GPT / Gemini 就写"——两者都行,omp 的 60+ 提供商列表更长、角色路由更细。想在多个模型间做统一抽象、自己控制运行时——Pi 的 pi-ai + pi-agent-core 更干净,适合嵌入你自己的产品。
Chapter 04

核心 能力 之差

同源的"四个最小工具"只是起点。真正的差距在:omp 把 31 个内置工具、LSP、DAP 调试器、记忆、GitHub-as-filesystem 全焊进来了;Pi 则把工具台空着,等你接。

同源基座

四个 原语

都从 read / write / edit / bash 起步——这是 Pi agent 循环的基本工具集,omp 继承并扩展它。

read · write · edit · bash
31 内置工具

工具 全家桶

omp 内置 31 个工具:含 23 后端 web_search、原生进程内工具(无 fork/exec)、GitHub-as-filesystem、浏览器 / Slack / 桌面集成等,几乎覆盖日常编码全场景。

web_search · gh_fs · browser · slack
LSP + DAP

语言 服务

omp 支持 14 个 LSP 操作(每次写文件都跑 LSP 诊断)与 28 个 DAP 操作(内置调试器)。Pi 的 TUI 路线则不包含这一层。

LSP ×14 · DAP ×28
Pi · 你接工具

空台 待扩展

Pi 把运行时(pi-agent-core)和工具调用机制给你,但不预装一堆工具。它假设你会在自己的扩展里注册所需能力——这是"minimal / self-extensible"的代价,也是自由。

# Pi 的入口 pi # 交互式 TUI / CLI # 运行时在 pi-agent-core, # 扩展里注册你自己的工具
oh-my-pi · IDE 焊进来

IDE wired in

omp 的招牌是"the IDE wired in":通过 ACP 协议与 Zed 等编辑器直连,每次编辑实时喂 LSP 诊断;另有 subagents、advisor 模型、/collab、TTSR、AST 编辑、原子提交、冲突解决等 21 根功能支柱。

# omp 的四种入口 omp # 交互式 TUI omp -p "任务" # 一次性(one-shot) # RPC(NDJSON over stdio) # ACP(JSON-RPC,给编辑器用)
💡 一句话:Pi = "工具台给你,钳子你自己带";omp = "台钳、电钻、示波器、显微镜全焊好了"。前者轻、自由;后者重、上手即战。
Chapter 05

编辑格式 之战:harness 才是瓶颈

为什么社区(尤其 omp 作者 Can Bölük)这么在意"怎么改文件"?因为实测显示:换个编辑格式,16 个模型的编码通过率平均 +15 分,弱模型直接翻 10 倍——而训练成本为零。这正是 omp 把 hashline 编辑格式焊进来的原因。

📌 社区实测(Stencil 博客《The Harness Problem》,2026-02):大家总在比"哪个模型编码最强",但作者用同一套基准测了 16 个模型 × 3 种编辑格式(patch / replace / hashline,各 3 轮 × 180 任务,每轮全新会话)。结论:patch 对几乎所有模型都是最差的格式,而 omp 的 hashline 给最弱的模型提升最大。
+15pts
相对 patch 的平均提升
(16 个模型)
10×
Grok Code Fast 1
6.7% → 68.3%
−61%
最佳情况下输出 token
(少烧重试 token)
$0
训练算力成本
(只改了 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 的 hashline

内容 哈希锚

omp 让模型读到的每一行都带一个 2–3 字符内容哈希。模型编辑时引用哈希标签("替换第 2:f1 行""替换 1:a3 到 3:0e"),不用复述原文与空格。文件变了哈希就对不上,编辑在破坏发生前被拒。

# 读回的文件,每行带哈希锚 1:a3|function hello() { 2:f1| return "world"; 3:0e|}
⚠️ 为什么这事关乎"选哪个":作者用这个基准公开演示后,Google 直接封了他的 Gemini 账号、Anthropic 也曾封过 OpenCode 对 Claude 的访问——厂商"别造 harness,用我的"的态度,恰恰说明开放 harness 的价值:开源 harness 会为所有模型一起优化(贡献者用不同模型,修自己遇到的坑),而闭源厂商不会为竞争对手的模型调优。omp 把 hashline 焊进来,就是这条哲学的产物。
Chapter 06

权限与 沙箱:诚实的差异

这是两者最容易被误写的一点。Pi 明确没有内置权限系统,以启动者的用户权限运行;omp 则有 ACP 权限门控。想隔离,Pi 得自己套沙箱。

Pi · 无内置权限系统

你给 权限

Pi 官方明说:"does not include a built-in permission system"——它"以启动它的用户与进程的权限运行"。也就是说,它在你本机上有多大权,它就多大权。

# 三种官方推荐的沙箱模式 1) Gondolin 扩展 — 微虚拟机(micro-VM) 2) Plain Docker — 普通容器 3) OpenShell — 远程 shell 沙箱 # Pi 还做了供应链加固: # 依赖精确 pin、.npmrc save-exact=true、 # lockfile 为唯一真相、CLI 发布 npm-shrinkwrap
⚠️ 安全提醒:直接裸跑 Pi = 把你的文件系统/网络/命令权限全交给模型。要隔离,请务必套上面三种沙箱之一,别在敏感目录裸用。
oh-my-pi · ACP 权限门控

门控 内置

omp 在 21 根功能支柱里明确包含 ACP permission gating——通过 ACP 协议对工具调用做权限门控。相比 Pi 的"全权运行 + 自套沙箱",omp 在 harness 层就给了你一道闸。

# omp 的权限是 harness 内建的 # 21 功能支柱之一:ACP permission gating # 工具调用经 ACP 协议门控, # 编辑器侧(Zed 等)可拦截/确认
💡 提示:即使有门控,给 agent 写权限前仍建议限定工作目录。omp 的 Rust 实现还带来原生进程内工具(无 fork/exec 开销),更安全也更省资源。
🧭 怎么选:要"最小信任面 + 完全可控"——Pi + Docker/Gondolin 沙箱,透明但需你自己配。要"装上就有基本门控、省心"——omp 的 ACP 权限更顺手。无论哪个,给编码 agent 写权限前务必想清楚边界
Chapter 07

扩展与 生态

同源的工具 API 让两者都能被扩展。Pi 的卖点是"你自己造扩展";omp 的卖点是"首次运行就继承 8 种工具的配置 + 同样的 TS 模块扩展"。

Pi · 自扩展 harness

你造 能力

Pi 通过 TypeScript 扩展、Agent Skills、提示模板、主题、MCP 实现高度可定制。运行时在 pi-agent-core,扩展里注册自定义工具与生命周期钩子。适合想把 agent 焊进自己产品的团队。

# Pi 官方包(可独立使用) @earendil-works/pi-coding-agent pi-agent-core # 嵌入你自己的运行时 pi-ai # 统一模型 API pi-tui / pi-telemetry
oh-my-pi · 继承 + TS 模块

拿来 即用

omp 支持 TypeScript 模块扩展,复用同一套工具 API;首次运行会自动从 8 种工具目录继承 rules / skills / MCP 配置。SDK @oh-my-pi/pi-coding-agent 导出 ModelRegistry / SessionManager / createAgentSession / discoverAuthStorage

import { ModelRegistry, SessionManager, createAgentSession, discoverAuthStorage } from '@oh-my-pi/pi-coding-agent';
💡 记忆(memory):omp 还内置"curated memory"——retain / learn / recall 三段式记忆,让 agent 跨会话记住项目约定。Pi 的记忆更多靠你自己用 skills / 扩展实现。
Chapter 08

横向 对比表

同一套内核下的两条路线——固定维度,逐项对照。

维度 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
命令piomp
模型/提供商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
编辑格式标准 edithashline(内容哈希行锚)
权限/沙箱无内置权限系统;需自套 Gondolin/Docker/OpenShellACP permission gating(harness 内建门控)
记忆靠 skills / 扩展自建curated memory(retain/learn/recall)
入口/模式交互式 TUI / CLITUI / one-shot omp -p / RPC(NDJSON) / ACP(JSON-RPC)
SDKpi-agent-core 运行时可嵌入@oh-my-pi/pi-coding-agent(ModelRegistry/SessionManager/createAgentSession/discoverAuthStorage)
扩展TS 扩展 / Skills / 提示模板 / 主题 / MCPTS 模块扩展 + 继承 8 种工具配置
供应链精确 pin 依赖、save-exact、shrinkwrapRust 原生实现,进程内工具无 fork/exec
协议MITMIT(© Mario Zechner, Can Bölük, Stencil Labs)
Chapter 09

社区 怎么用 它俩

光看 README 不够——去网上逛了一圈,看看真实用户与作者怎么用。两者都走"开放、可分享"的路线,但落点不同。

Pi 社区

共享 会话

Pi 把开源会话做成了一个数据集:用 badlogic/pi-share-hf 收集、审阅、上传已脱敏的 Pi 会话文件到 Hugging Face,沉淀为数据集 badlogicgames/pi-mono。想接 Slack,有独立的 earendil-works/pi-chat

# Pi 的"开放数据"玩法 # 1) 本地收集脱敏会话 # 2) 上传到 HF 数据集 badlogicgames/pi-mono # 3) 社区可复用真实编码会话做研究/微调
oh-my-pi 社区

harness 实测

omp 作者把"开放 harness 比模型更重要"做成了公开实验:同一基准测 16 模型 × 3 编辑格式,证明 hashline 把弱模型翻 10 倍(基准代码就在 omp 仓库 packages/react-edit-benchmark)。社区围绕"IDE 集成 + 多模型路由"活跃使用。

# omp 的"开放 harness"主张 # 开源 harness 为所有模型一起优化, # 因为贡献者用不同模型、修自己遇到的坑。 # 闭源厂商不会为对手模型调优。
⚠️ 一个真实教训:那位作者公开基准后,Google 直接禁了他的 Gemini 账号、Anthropic 也曾封过 OpenCode 对 Claude 的访问。这反证了"开放编码 harness"的价值——也提醒你:把编码 agent 绑死在某一家模型订阅上,是有风险的。两者都"模型无关",本身就是对这种锁定的对冲。
Chapter 10

资源 & 速查

官方仓库与文档链接,外加两款工具的高频命令速查。所有事实均来自这些公开来源。

Pi 速查

高频 命令

# 安装 npm install -g --ignore-scripts @earendil-works/pi-coding-agent curl -fsSL https://pi.dev/install.sh | sh # 启动(交互式 TUI / CLI) pi # 运行时不透出时的隔离(推荐) # 套 Gondolin / Docker / OpenShell 之一 # 嵌入你自己的产品 import { pi-agent-core } # 运行时
oh-my-pi 速查

高频 命令

# 安装 curl -fsSL https://omp.sh/install | sh brew install can1357/tap/omp bun install -g @oh-my-pi/pi-coding-agent npm install -g @oh-my-pi/pi-coding-agent # 启动 omp # 交互式 TUI omp -p "任务" # 一次性(one-shot) # 自定义提供商:~/.omp/agent/models.yml
Epilogue

选哪个

同源于 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 关系,你手里其实是一套可深可浅的同一范式。

作者:小倪哥

链接:/2026/09/12/pi-vs-oh-my-pi/

声明:本文采用 CC BY-NC-SA 4.0 协议,转载请注明出处。

评论区预留

正式切换前可选择 Giscus / Gitalk / Twikoo。当前预览版暂不接入第三方脚本,避免干扰主站。

下一篇已经是最新文章