· 14 min read · 2780 字

Claude Code、Codex、Pi 与 OMP:编码 Agent 到底差在哪

终端里的编码 Agent 这一年多得有点挑花眼。Claude Code 和 Codex 是模型厂商自己做的,Pi 和 OMP 是社区项目。宣传页上它们差不多:都能读文件、改代码、跑命令。但真用起来,差别往往不在模型,而在模型外面那层东西——它能看到什么、怎么改文件、什么时候停下来问你。这层东西一般叫 Harness。

这篇文章写于 2026 年 6 月,10 月初我又对照各家文档核对了一遍。这几个工具更新很快,具体功能大概率还会变,所以下面主要说它们各自的思路。

四个名字分别指:

  • Claude Code:Anthropic 官方的终端 Agent;
  • Codex:OpenAI 的 Codex CLI;
  • Pi:earendil-works/pi,原来叫 badlogic/pi-mono,后来转到了 earendil-works 名下;
  • OMP:Oh My Pi,从 Pi 分出去的项目,现在已经走得很远了。

拿一件具体的活来想

光比功能表没什么意思。假设一个平时真会碰到的任务:接手一个不熟的仓库,搜索框偶尔会显示上一次的结果,要找到原因、修掉,并确认没把别处弄坏。

这活不难,但很考验 Agent 的基本功。它得先看懂项目怎么构建,再找到搜索的入口和调用链,判断这是异步请求的竞态,而不是随手加个延迟糊过去。改完还得跑构建、跑测试,最好在页面上点一下。

只吐出一段”看起来对”的补丁,在我这里不算完成。

Claude Code:装上就能干活

Claude Code 最大的好处是不用折腾。读代码、改文件、跑命令、问你要权限,这些都在一个循环里,默认就配好了。项目相关的约定写进 CLAUDE.md,构建命令、目录规矩、代码风格写一次,之后每次会话它都会读。

碰到上面那个竞态,它的套路一般是先搜入口,再顺着状态更新往下读,说一下打算怎么改,然后动手、跑命令验证。整个过程没什么新概念要学。

想加东西也有地方加:MCP 接外部服务,Hooks 在工具调用前后跑你自己的脚本(比如每次改完自动格式化),Skills 存常用流程,子 Agent 用来把独立的调查分出去。

代价是它围着 Claude 转。可以走 Amazon Bedrock、Google Cloud 这些平台接入,但跑的仍然是 Claude 模型,想换别家模型基本没戏。还有权限确认这件事,它能拦下不少危险操作,但你点了”允许”,不代表你真看懂了那条命令。涉及部署、密钥、批量删除的时候,还是得自己看一眼。

如果你不想先花两天调工具,只想今天就开始用,Claude Code 是最省心的起点。

Codex:边界画得清楚,也方便塞进脚本

Codex CLI 的基本循环跟 Claude Code 差不多:读仓库、改文件、跑命令。不一样的是,它把沙箱和审批策略摆在很显眼的位置:Agent 能写哪些目录、跑命令前要不要问你,都可以明确设定。项目说明写在 AGENTS.md 里。

我挺喜欢这种边界感。Agent 需要一定自由才能干活,但没必要一上来就拿到整台机器的权限。在不熟的仓库里,先把写入范围收窄,需要时再放开,比出了事再去翻命令历史靠谱得多。

codex exec 也很实用。它是非交互模式,丢一条指令进去,跑完就退出,适合放进脚本或 CI 里重复跑,比如批量检查几个仓库,或者让它在提交前过一遍改动。

模型方面,Codex 默认用 OpenAI 的模型,用 ChatGPT 账号登录最顺手。但它不是只能用 OpenAI:配置里可以加别的模型供应商,--oss 还能接本地的 Ollama 或 LM Studio。只是默认路径和打磨最多的体验,确实都围绕 OpenAI。

Pi:核心很小,剩下的你自己定

Pi 把自己定位成一个精简的编码 Harness:核心只放最基本的工具,其余能力靠 TypeScript 扩展、Skills、提示模板、主题和 Pi packages 往上加。它自带一套统一的多模型接口,Anthropic、OpenAI、Google 和各种兼容接口都能接,也能接本地模型,还提供 SDK 和 RPC 模式,方便嵌进别的程序。现在官方文档里也有了接 MCP 服务的说明。

这种路线的好处很实在:简单的活用便宜模型,难的重构换强模型;自己有个内部搜索工具,写个扩展接进来就行;不需要的功能根本不用装。

但”小”也意味着很多事要你自己拿主意。还是那个竞态问题:想要按符号查引用、想在浏览器里点一遍验证、想加一道审批,都得先确认当前装了什么,没有就自己找扩展或写一个。配好了,它会非常贴手;没怎么配,它就是一个会调 Shell 的模型循环。另外,它的 README 里明确说了,子 Agent 和计划模式这类东西是有意不放进核心的。

Pi 的安全说明写得很直白:它以启动它的那个用户的权限运行,没有内置的文件系统、进程、网络或凭据隔离,需要隔离就自己放进容器或沙箱。它没藏着掖着,但你得真的去处理,别因为开源、可控,就默认它是安全的。

如果你喜欢自己搭工具,清楚自己要哪些模型、哪些命令不能放开,也不介意维护几段扩展代码,Pi 会很合适。如果只是想装完就用,它反而会让你多做几道选择题。

OMP:把 IDE 的那套东西直接塞进去

OMP 的仓库简介写的是 “A coding agent with the IDE wired in”。它最早从 Pi 分出来,但方向几乎相反:Pi 尽量保持核心精简,OMP 则把常用的工程工具直接做进了产品里。

具体来说,它内置了 LSP 和调试器(DAP)、能保持状态的 Python / JavaScript 执行环境、浏览器和网页读取、AST 级别的搜索和改写,还能按角色给不同环节配不同的模型。规则文件也兼容得很广,除了 AGENTS.md,Cursor、Cline 等工具的规则格式它都能读。

放到改 bug 的场景里:

  • 文本搜索只能找到同名字符串,LSP 能分清重导出、别名和真正的引用;
  • 普通的补丁靠匹配旧文本,OMP 的编辑会给行打上哈希锚点,文件在这期间被改过,它就拒绝写入,不会把改动落到错的位置;
  • 日志看不出问题时,可以直接用调试器看线程、调用栈和变量。

子 Agent 也做得比较实:任务在隔离的工作目录里跑,返回的是按约定格式校验过的结果,再由主 Agent 汇总。拆成”找竞态入口”和”检查测试覆盖”两路去查很合适;但让两个子 Agent 同时改同一个文件,依然是坏主意。

功能多也有代价:工具多,规矩就多,模型得先学会正确使用这些读写方式。第一次用会觉得像坐到一张摆满设备的工作台前,熟了以后效率很高,刚上手不一定轻松。

所以我不会因为它工具多,就说它更强。只是改几个配置文件,这套装备太重了;要啃大型的 TypeScript、Rust 或 Go 项目,经常追引用、调试,它的价值才真正体现出来。

放在一张表里

维度Claude CodeCodex CLIPiOMP
思路默认配好的完整工作流清楚的沙箱与审批边界精简核心,自己往上加工程工具直接内置
模型只用 Claude(可走云平台)默认 OpenAI,可配其他供应商和本地多供应商,可接本地多供应商,可按角色分配
项目说明CLAUDE.mdAGENTS.md上下文文件与 SkillsAGENTS.md 等多种规则格式
读写代码内置读取、搜索、编辑内置读取、修改、执行基础工具,靠扩展补齐LSP、AST、哈希锚点编辑
安全边界权限确认和可配置规则沙箱和审批策略默认无隔离,建议自己套容器有权限和隔离选项,需要自己配好
上手难度低低到中中,看你折腾多少中到高
适合想马上开始的人在意边界、想脚本化的人喜欢自己组装的人啃大型复杂仓库的人

Skills 和 MCP 这四个工具基本都有,所以我没把它们当成区分点。表里也故意没有”代码质量”这一行。结果好不好,取决于模型、提示、仓库本身和你怎么验证,打个星级只会制造虚假的确定感。同一个 Agent,在结构清楚、有测试的项目里表现很好,换到没测试、命名混乱的老项目里,照样会踩坑。

我会怎么选

  • 想马上用、不想折腾:选 Claude Code 或 Codex。偏爱 Claude、经常做探索式的修改,就用 Claude Code;主要用 OpenAI 的模型,或者想把任务塞进脚本和 CI,就用 Codex。
  • 想自己掌控模型和流程:选 Pi。它不会替你把答案都装好,换来的是更少的框架意见。但这份自由要你自己花时间维护。
  • 经常啃大仓库、要重构要调试:认真试试 OMP。LSP、调试器和精细的编辑方式不是摆设,正好补上了编码 Agent 最容易靠猜的那几块。

不管选哪个,最好的试法都不是丢给它一道算法题,而是挑仓库里一个真实、可以回滚的小任务让它做一遍,重点看几件事:

  1. 它读了多少无关的文件;
  2. 动手之前有没有先弄懂项目的规矩;
  3. 改完跑了什么来验证;
  4. 碰到权限问题是怎么处理的。

最后别忘了看看账单。

选的是工作方式

厂商的产品页总在讲模型有多强,但每天用下来,体验往往卡在更琐碎的地方:搜得准不准,补丁会不会打错位置,命令有没有边界,对话一长、上下文被压缩之后它还记不记得在干什么。

Claude Code 和 Codex 是两套厂商整合好的方案,Pi 给你一个可以自己组装的底座,OMP 则把一整套 IDE 能力搬进了底座。它们不是从弱到强排成一列,只是把复杂度放在了不同的地方。

不想维护工具,就为好的默认值买单;想掌控模型和流程,就接受配置和维护的成本。

资料

已复制章节链接