pi · Claude Code · Codex CLI

三个 Coding Agent Harness 的纯代码实现层面横向对比 — 基于 jayli/pi-coder issue #4 水位报告
综合水位:pi 7.4 / 10  ·  CC 7.5  ·  Codex 7.6 —— 差距仅 0.1~0.2,形状是「几处浅坑 + 一个架构级缺口」,没有任何结构性空白

pi(本仓库 v2.1.6)

7.4
加权合计 ÷ 93 · pi 内核 0.87.1
理念:开放、可测试、纪律成文、刻意简化。规则从真实事故复盘里长出来,删除安全做到内核级,系统提示词分段可编程。

Claude Code 2.1.268

7.5
202 MB Mach-O 闭源二进制 · strings 一手取证
理念:一切可配置、面向企业。28 个 hook 事件 × 5 种 handler 的声明层、组织策略下发、最广的插件与 MCP 生态。

Codex CLI 0.154.0

7.6
Rust 闭源二进制 · strings 一手取证
理念:沙箱优先、状态可重建。seatbelt / landlock 双沙箱、world-state 重注入、rollout 全量记录、按模式切推理预算。

一、分析基线 Baseline

横截面比较,只基于代码、二进制与本地数据的一手证据,不做历史版本纵向对比。

项值
评估对象jayli/pi-coder @ d82fa69(v2.1.6,2026-09-27,main,与远端一致;评分基线为 bc717f9 v2.1.5,数字已刷新至当前 HEAD)
pi 配套pi-subagents 0.72.1(子代理 + watchdog)、pi-web-access 0.32.0(web 检索)
扩展规模30 个扩展(v2.1.6 起 destructive-guard/ 已从仓库删除,完整实现在 git 历史里)
代码量实现 83 文件 23,357 行;测试 63 文件 20,949 行;合计 44,306 行(测试占 47%)
测试实跑全量 node --test:1238 用例,1216 通过,22 跳过(沙箱嵌套按设计跳过),0 失败
环境开关全部行为以 53 个 PI_* 环境变量表达:未设置 = 开,off = 关

二、核心评分矩阵 Score Matrix(权重 ÷ 93)

每格加粗者为该维最高分。「上下文文件工程化」一维(权重 7)按报告价值判断移出表外:上下文文件超出尺寸预算不构成有意义的质量差异。

维度权重piCCCodex对比一句话依据
加权合计(÷93)93 7.47.57.6

三、11 维雷达图 Radar

同一维度上三家互有胜负:pi 在纪律、子代理治理、抗漂移、提示词可编程性四维同时领先;Codex 在执行稳定性与可观测性最强;CC 在验证闭环、约束广度、任务计划、记忆最全。

pi Claude Code Codex CLI

四、三种理念 Philosophies

分数接近,但三家对「harness 应该是什么」的回答完全不同。

pi:纪律成文,刻意简化

“小文件高频在场,胜过截断机器”
  • 开放可验证:全部实现开源,1238 个用户可跑的测试;闭源两家的分数只能靠 strings 推断。
  • 事故判例化:28KB 全局规则逐条来自真实删除事故的复盘(「障碍不是毁灭的理由」「沉默不是同意」)。
  • 内核级安全:删除约束做到 macOS seatbelt 内核层,且只收窄到删除、写入不受限,误报面最小。
  • 刻意简化:追齐对手能力但砍掉冗余机器——不做 28 事件 hook 配置层、不做 OAuth 2.1 全套、任务状态不建独立存储。
  • 可编程提示词:system prompt 分段可寻址,扩展安全增段不破坏前缀缓存——对手都是封闭整体。
  • 终端即产品表面:12+ 显示扩展,diff 渲染 / 命令折叠 / 主题实时切换。

Claude Code:一切可配置

“给用户(和企业)一个声明层”
  • 声明式钩子:28 个 hook 事件 × 5 种 handler(command / prompt / agent / http / mcp_tool),验证与拦截都能用户配置。
  • 企业治理:remote / managed settings、组织策略下发——单机工具不参赛的领域。
  • 记忆系统最完整:if_version 乐观并发、密钥机械拦截、双 scope。
  • 生态最广:插件市场、官方 MCP 目录、内置 TodoWrite / 后台执行 / OTEL 导出。
  • 代价:闭源不可测;系统提示词封闭;bypassPermissions 可写进 settings 默认值,关闭保护存在配置侧路径。

Codex CLI:沙箱优先,状态可重建

“模式决定预算,rollout 重建一切”
  • 沙箱双路线:macOS seatbelt + Linux landlock,approval_policy 与 workspace-write / danger-full-access 模式化。
  • world-state 重注入:AGENTS.md 作为世界状态基线,与压缩契约绑定。
  • 执行稳定性最强(9 分):完整异步执行 + reconcile 对账自愈。
  • 可观测性最强(9 分):rollout 全量记录可完整重建会话。
  • 细节领先:plan_mode_reasoning_effort 按模式切推理预算、update_plan 明文反复读条款、原生 /goal 带预算硬上限。
  • 代价:记忆「有机制无数据」(本机实测 0 行);无对等多代理治理面;提示词封闭。

五、优势与短板 Strengths & Weaknesses

pi

优势

  • 4 个计分维度同时领先两家:纪律条款质量 9、子代理治理 8、抗漂移 8、提示词可编程性 8。
  • harness 自身可测试性 9 vs 2/2:删除边界跑真 seatbelt E2E(真内核 EPERM),用户可复现每一个分数。
  • 删除安全纵深独一份:只收窄删除 + 授权可记忆 + 永不删除层内核兜底 + bash / apply_patch 双路线共享授权,连退出码 0 里被掩盖的越界删除也能检出。
  • 关闭保护只能靠用户物理按键:dangerous 态没有命令入口,模型侧诱导路径被设计成不存在。
  • 记忆索引机械派生:索引扫正文重建,结构性不可能「写了记忆忘更新索引」。
  • 显示层 9 分、MCP 零依赖三传输(不计分领域)。

短板

  • 无后台执行原语(架构级缺口)→ 执行稳定性 6。2.1.6 更新:扩展级已由 background-tasks/ 补齐(run_in_background / background_output / background_kill),pi 内核侧缺口仍在。
  • 验证要求只能用环境变量表达,无声明式配置层。
  • 记忆缺乐观并发等 4 件数据安全机制。
  • bypass 默认态下 push / publish / curl | sh 无机械闸,全靠纪律文本。

Claude Code

优势

  • 验证闭环 8:Stop hook + 原生 goal 评估,背后是 28 事件 × 5 handler 的用户可配置声明层。
  • 约束强制力 9:sandbox-exec + bubblewrap、分层 permissions、四种 defaultMode。
  • 任务与计划 9:内置 TodoWrite(15 处命中)。
  • 记忆 9:乐观并发 + 密钥机械拦截 + 双 scope,全部实测命中。
  • 集成生态 9(不计分):插件市场、官方 MCP 目录、OTEL 全链路导出、完整后台执行套件。

短板

  • 抗漂移仅 6:无规则重注入机制,长会话前置规则注意力衰减只能靠压缩缓解。
  • 提示词可编程性 3:系统提示词封闭整体,用户侧无可编程面。
  • harness 不可测试(2):闭源二进制,用户无法验证其质量。
  • 显示层 / 终端 UX 固定(5);子代理治理靠 hook 表达(7)。

Codex CLI

优势

  • 执行稳定性 9:完整异步执行 + reconcile 对账自愈,三家最强。
  • 可观测性 9:rollout 记录可完整重建会话。
  • 约束强制力 9:approval_policy + seatbelt / landlock + Guardian 审查。
  • 计划细节领先:按模式切推理预算、明文禁止复读计划、/goal 带 token 预算硬上限。
  • 抗漂移 7:world-state 重注入(注入点近因性略逊 pi 的 core-rules)。

短板

  • 子代理治理 6:无对等的多代理治理面(无 watchdog、无预算、无编排脚本)。
  • 记忆「真特性、零数据」:memory_consolidate 存在但本机实测 0 行记录。
  • 提示词可编程性 5:系统提示词封闭。
  • harness 不可测试(2);显示层固定(6);集成生态配套 6。

六、不计分维度 CC / Codex 不在同一层面竞争

维度piCCCodex说明
显示层 / 终端 UX956pi 投入最重的领域之一:整行 diff 渲染、命令树状折叠、thinking 横向窗口、主题实时切换、statusline 防闪烁。
集成生态(MCP / web / subagent)796pi 一条 npm 命令装齐无手配依赖;CC 的生态广度(插件市场 / 官方 MCP 目录)仍更大。
harness 自身可测试性922pi 的分数可用仓库代码复现;闭源两家的分数来自厂商内部质量保障,用户不可验证。

七、pi 的剩余差距 重要、非刻意简化、需要追齐

与「刻意简化」不同,以下是真实差距及优先级。

优先级差距性质
P0后台执行原语(run_in_background 一类):pi 0.87.1 dist 0 命中,长任务前台阻塞架构级;2.1.6 起扩展级已由 background-tasks/ 补齐,pi 内核侧缺口仍在(评分未重打)
P1验证闭环的声明层:项目专属验证要求无法声明式表达表达能力差距,非触发率问题
P1记忆的版本化写入(if_version 或等价乐观并发):同名写入直接覆盖数据安全差距;CC 把它当一等机制
P2约束强制力的广度:bypass 默认态下 push / publish / 外网下载无机械闸plan 态已证明 tool_call 钩子可行,缺的是铺到外发动作
P2任务与计划两处细节:按模式切推理预算、禁止复读计划(Codex 均有)各一行改动的成本,尚未做
P3可观测性标准导出:无 OTEL 一类标准面与价值判断重叠,优先级低