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 Code | Codex CLI | Pi | OMP |
|---|---|---|---|---|
| 思路 | 默认配好的完整工作流 | 清楚的沙箱与审批边界 | 精简核心,自己往上加 | 工程工具直接内置 |
| 模型 | 只用 Claude(可走云平台) | 默认 OpenAI,可配其他供应商和本地 | 多供应商,可接本地 | 多供应商,可按角色分配 |
| 项目说明 | CLAUDE.md | AGENTS.md | 上下文文件与 Skills | AGENTS.md 等多种规则格式 |
| 读写代码 | 内置读取、搜索、编辑 | 内置读取、修改、执行 | 基础工具,靠扩展补齐 | LSP、AST、哈希锚点编辑 |
| 安全边界 | 权限确认和可配置规则 | 沙箱和审批策略 | 默认无隔离,建议自己套容器 | 有权限和隔离选项,需要自己配好 |
| 上手难度 | 低 | 低到中 | 中,看你折腾多少 | 中到高 |
| 适合 | 想马上开始的人 | 在意边界、想脚本化的人 | 喜欢自己组装的人 | 啃大型复杂仓库的人 |
Skills 和 MCP 这四个工具基本都有,所以我没把它们当成区分点。表里也故意没有”代码质量”这一行。结果好不好,取决于模型、提示、仓库本身和你怎么验证,打个星级只会制造虚假的确定感。同一个 Agent,在结构清楚、有测试的项目里表现很好,换到没测试、命名混乱的老项目里,照样会踩坑。
我会怎么选
- 想马上用、不想折腾:选 Claude Code 或 Codex。偏爱 Claude、经常做探索式的修改,就用 Claude Code;主要用 OpenAI 的模型,或者想把任务塞进脚本和 CI,就用 Codex。
- 想自己掌控模型和流程:选 Pi。它不会替你把答案都装好,换来的是更少的框架意见。但这份自由要你自己花时间维护。
- 经常啃大仓库、要重构要调试:认真试试 OMP。LSP、调试器和精细的编辑方式不是摆设,正好补上了编码 Agent 最容易靠猜的那几块。
不管选哪个,最好的试法都不是丢给它一道算法题,而是挑仓库里一个真实、可以回滚的小任务让它做一遍,重点看几件事:
- 它读了多少无关的文件;
- 动手之前有没有先弄懂项目的规矩;
- 改完跑了什么来验证;
- 碰到权限问题是怎么处理的。
最后别忘了看看账单。
选的是工作方式
厂商的产品页总在讲模型有多强,但每天用下来,体验往往卡在更琐碎的地方:搜得准不准,补丁会不会打错位置,命令有没有边界,对话一长、上下文被压缩之后它还记不记得在干什么。
Claude Code 和 Codex 是两套厂商整合好的方案,Pi 给你一个可以自己组装的底座,OMP 则把一整套 IDE 能力搬进了底座。它们不是从弱到强排成一列,只是把复杂度放在了不同的地方。
不想维护工具,就为好的默认值买单;想掌控模型和流程,就接受配置和维护的成本。