跳转到正文

Claude Code、Codex 与 Pi 对比

Pi 不是唯一的终端编码 Agent。Claude Code、Codex 和 Pi 面对同一个问题给出了三种不同的答案:要不要内置安全边界,以及把扩展能力交给谁。 理解这些差异,比记住任何单一工具的命令都重要。

校对基线:Claude Code 2.1.274、Codex CLI 0.154.0、Pi 0.82.1(本手册基线 0.83.0)。三者更新都很快,涉及具体命令与安全开关时请核对各自官方文档。

一句话定位

工具厂商一句话定位核心思路
Claude CodeAnthropic功能齐全的成品编码 Agent把权限确认、子代理、计划模式、MCP 都内置,开箱即用
CodexOpenAI开源、沙箱优先的编码 Agent用操作系统级沙箱和审批模式做默认安全边界,另有云端形态
PiEarendil Works极简可扩展的 Agent Harness刻意不内置权限弹窗、子代理、计划模式,交给 Skills 与 Extensions

三者的共同点是:都在终端里跑,都用"读文件、改文件、跑命令"来完成任务,都用 Markdown 记忆文件和 Agent Skills。差异集中在安全模型、扩展机制,以及"开箱即用 vs 自己组装"的取舍上。

事实基线

维度Claude CodeCodexPi
许可专有(非开源)开源(Apache-2.0)开源(MIT)
实现语言TypeScript(提供原生二进制构建)RustTypeScript / Node.js
安装npm i -g @anthropic-ai/claude-code 或官方脚本npm i -g @openai/codexbrew install codexnpm i -g --ignore-scripts @earendil-works/pi-coding-agent
配置格式JSON(~/.claude/settings.jsonTOML(~/.codex/config.tomlJSON(~/.pi/agent/settings.json
记忆文件CLAUDE.md(新版也读 AGENTS.mdAGENTS.mdAGENTS.mdCLAUDE.md 都加载

认证与模型

维度Claude CodeCodexPi
登录方式Anthropic 订阅或 API KeyChatGPT 登录或 API Key订阅或 API Key
供应商范围Anthropic 为中心(Claude 系列),可接 Bedrock / VertexOpenAI 为中心,支持开源/本地(--oss--local-provider多供应商中立:Claude、ChatGPT、Copilot 订阅 + 大量 API Key 提供商 + llama.cpp 本地模型
模型切换--model(如 opussonnet-m/--model/model 或 Ctrl+L,支持多模型循环

Pi 的"供应商中立"是它作为 Harness 的定位使然:它不绑定任何一家模型,本地模型也能跑。Claude Code 和 Codex 分别绑定各自厂商,但也都留了接其他后端的口子。

权限与安全:三种不同的答案

这是三者最本质的分歧。面对同一条"改文件并跑命令"的请求,三个工具的态度完全不同。

1. Claude Code:人在回路的权限确认

Claude Code 默认对 Bash、文件写入等敏感操作弹权限提示,由人逐条批准。通过 --permission-mode 控制:

  • manual:敏感操作逐条询问
  • acceptEdits:自动接受文件编辑,命令仍需确认
  • plan:计划模式,只读分析不执行
  • bypassPermissions:跳过一切确认(仅限可信环境)

配套还有 --allowedTools / --disallowedTools 工具白名单,以及 --restricted 受限模式(移除命令执行类工具、把文件工具限制在工作目录内)。

代价:安全,但慢。每次确认都是一次打断,这也是"Claude Code 用起来有点啰嗦"的来源。

2. Codex:审批 + 操作系统级沙箱

Codex CLI 把安全做在操作系统层,而不是靠对话框。模型生成的命令在 OS 沙箱里执行(macOS 用 seatbelt,Linux 用 Landlock),沙箱策略三档:

  • read-only:只读
  • workspace-write:只写工作区
  • danger-full-access:完全访问(危险)

审批策略由 --ask-for-approval 控制(on-request 让模型决定何时问人、never 从不问),另有 --dangerously-bypass-approvals-and-sandbox 一步关掉所有保护的极端开关。

代价:安全边界更硬,但沙箱会限制部分真实场景操作——装系统依赖、访问工作区外路径时需要额外授权或 --add-dir

3. Pi:无权限弹窗,只有项目信任

Pi 的官方哲学明确写着 "No permission popups"。它不做逐条确认,也没有内置沙箱,直接继承启动用户的全部权限——你在终端能做什么,Pi 就能做什么。

Pi 唯一的安全相关机制是项目信任(project trust):当项目里出现 .pi/ 资源(设置、扩展、技能、系统提示)时询问是否加载。它回答的问题是"这个仓库能否改变 Pi 的启动配置",不是"Pi 能否修改这个仓库"。

代价:最快、最顺手,但安全责任完全外置。处理不可信代码或无人值守任务时,必须自己套容器 / VM / 微型 VM。

安全模型对比

机制Claude CodeCodexPi
权限提示默认逐条确认有(可配置频率)
权限/审批模式--permission-mode--ask-for-approval + 沙箱模式无(无弹窗哲学)
操作系统沙箱受限模式 --restricted(非完整沙箱)内置(seatbelt / Landlock)无内置
项目信任工作区信任对话无等价提示(靠沙箱)项目信任(输入加载守卫)
工具白名单--allowedTools / --tools沙箱 + 审批--tools / --exclude-tools
一键全放开--dangerously-skip-permissions--dangerously-bypass-approvals-and-sandbox默认即全放开
一句话总结

Claude Code 用"问"保护你,Codex 用"沙箱"保护你,Pi 无权限弹窗,只有项目信任。

可扩展性:成品 vs 组装

能力Claude CodeCodexPi
MCP内置,claude mcp内置,codex mcp无内置(哲学:用 Skill 或写 Extension 接入)
Agent Skills内置,~/.claude/skills支持,~/.codex/skills完整实现标准,并可挂载前两者的 skills 目录
子代理内置 Task 子代理云端形态支持并行任务无内置(哲学:自己 spawn 或写 Extension)
计划模式内置 plan 模式无内置无内置(哲学:写文件或 Extension)
Hooks内置生命周期钩子有钩子(带信任机制)通过 Extension 事件实现
插件/扩展Plugins(claude pluginPlugins(codex pluginExtensions(TypeScript,可替换内置工具)
主题/外观内置主题与样式有限内置 + 自定义主题(热重载)

关键区别:Claude Code 和 Codex 把 MCP、子代理、计划模式做成内置开关;Pi 把它们做成可写代码实现的空白。Pi 的 Extension 能注册自定义工具、替换内置工具、加权限门禁、做 UI——甚至"把 Pi 打扮成 Claude Code"。这种"极简核心 + 任意扩展"是 Pi 与另外两者最大的产品哲学差异。

会话管理

维度Claude CodeCodexPi
存储JSONL,按项目存 ~/.claude/projects/本地线程历史(可分页)JSONL 树结构,~/.pi/agent/sessions/
继续会话--continue / --resumecodex resume-c / -r / --session
分支--fork-sessioncodex fork/tree 就地分支、/fork/clone
回滚Checkpoints / rewind(基于 git)codex apply(应用 diff)无内置(用 git 自己管)
上下文压缩--autocompact/compact + 自动压缩

Pi 的独特之处是会话树:所有历史保存在单个 JSONL 文件里,用 id / parentId 组织成树,可以在任意历史点就地分叉、切换分支,不需要复制文件。

无头与程序集成

维度Claude CodeCodexPi
非交互-p / --printcodex exec(别名 e-p / --print
读 stdin支持支持(- 或管道)支持
结构化输出--output-format json / stream-json--json-schema--json(JSONL)、--output-schema-o 写最后消息--mode json--mode rpc
SDKClaude Agent SDK(TS / Python)exec-server / app-server(实验)SDK(createAgentSession 等,TS)
进程集成stream-json 双向流exec-serverRPC 模式(LF 分隔 JSONL)

Print、JSON、RPC、SDK 四类集成方式 Pi 都齐备;Claude Code 的 stream-json 双向流适合做长期驻留进程;Codex 的 exec-server / app-server 仍标为实验性。

后台与多 Agent

能力Claude CodeCodexPi
后台会话--bg + claude agents / attach / stopcodex agents + app-server 守护进程无内置(哲学:用 tmux)
云端执行--cloudultrareviewcodex cloud(实验)无(本地为主)
多实例原生支持原生支持可 spawn 多个 pi 实例

三方正在靠拢

尽管哲学不同,三者在可移植性上明显收敛,这对用户是好事:

  • Agent Skills:Claude Code 提出的标准,Pi 完整实现,Codex 也在跟进。同一个 Skill 目录理论上可以跨工具复用——Pi 甚至能直接读取 ~/.claude/skills~/.codex/skills
  • AGENTS.md:Codex 的记忆文件格式,Claude Code 和 Pi 都支持加载(Pi 同时兼容 CLAUDE.md)。
  • MCP:Claude Code 和 Codex 都内置;Pi 不内置,但可用 Skill 包装 CLI 或写 Extension 接入。

这意味着知识沉淀(记忆文件 + Skills)比工具绑定更保值:把规范写进 AGENTS.md,把流程做成 Skill,换工具时成本最低。

如何选择

你的情况建议
想要开箱即用,愿意用逐条确认换安全感Claude Code
想要开源、硬核 OS 沙箱,或重度依赖 OpenAI 模型Codex CLI
想最快速度干活,能自己控制安全边界(容器 / VM)Pi
需要把 Agent 嵌进自己的程序三者都可,Pi 的 RPC/SDK 与 Claude 的 stream-json 最成熟
已有大量 CLAUDE.md / AGENTS.md / Skills 沉淀迁移成本最低的是 Pi(同时兼容三者的记忆文件与 skills 目录)

小结

  • Claude Code = 成品。安全靠"问",功能靠"内置"。
  • Codex = 开源 + 沙箱。安全靠"隔离",边界最硬。
  • Pi = 极简 Harness。安全靠"你自己",功能靠"组装"。

三者没有绝对优劣,只有取舍:要安全就接受打断(Claude Code),要硬隔离就接受沙箱限制(Codex),要速度与自由就自己背安全责任(Pi)。 选择取决于你更愿意把复杂度交给工具,还是握在自己手里。

继续阅读:

非官方中文工程指南,内容以 Pi 上游文档与源码为准。