性能对比:Claude Code/OpenCode/Pi
Claude Code跑8分钟,OpenCode跑3分钟,Pi跑2分钟,质量一样
同一个DeepSeek V4 Flash模型,修复同样的八个代码缺陷,Claude Code平均耗时8.0分钟,OpenCode耗时3.1分钟,Pi耗时2.1分钟。质量得分Claude Code是2.42,OpenCode是2.07,Pi是2.34,置信区间全部重叠。
三套外壳驱动同一个模型,质量没有统计差异,效率和成本差出数倍。外壳决定效率不决定质量!
Claude Code扛着27个工具上场
Claude Code携带27个工具。其中大部分是编排管道,管道本身不搜索代码,不读取文件,不编辑代码。管道只在子系统之间传递状态信息,每次传递都要生成一段描述性token。这些元数据token与缺陷修复无关,但全部计入输出总量。
Claude Code每回合固定开销23132个token。这意味着每处理一项任务,Claude Code在开始任何实际工作之前已经消耗了超过两万个token。这些token用于维持工具之间的协调、记录当前状态、准备下一步调用的上下文。Pi的每回合固定开销只有1340个token,不到Claude Code的十七分之一。
Claude Code的27个工具里实际被高频调用的只有读取类工具和搜索类工具。编辑工具在任务进程的前80%几乎不被调用,所有编辑集中在后20%爆发。大量编排管道在整项任务中只起到传递信息的作用,从未直接作用于代码。
Claude Code的工具数量膨胀带来的不是能力提升,是每回合都要支付的固定租金。Claude Code平均每项任务触发近60次工具调用,每次调用都要支付一次固定开销。Pi平均38次调用,OpenCode主流程17次调用加子代理隐藏调用,两者的固定开销都远低于Claude Code。
OpenCode用10个工具打包操作
OpenCode携带10个工具。其中有几个复合型Shell工具,能把grep搜索、find定位、cat读取串成一条命令执行。串成一条意味着模型只需要生成一次工具选择指令,不需要为每个子操作单独生成token。
OpenCode每回合固定开销7197个token。比Pi高,比Claude Code低。OpenCode在工具数量和固定开销之间取了一个中间值。复合工具减少了调用次数,OpenCode主流程平均每项任务只显示17次调用。但子代理机制产生了隐藏消耗,每个子代理独立运行自己的推理线程,那些线程里的工具调用不计入OpenCode的主流程计数器。
把子代理的消耗加回总账之后,OpenCode的真实输出量上升到17463个token。这个数字接近Pi的14775个。OpenCode的子代理把生成量从主流程转移到了支线流程,总量没有减少,只是从主计数器上消失了。
OpenCode的子代理机制改变了调度的形状,但没有改变调度的总量。OpenCode用3.1分钟完成任务,比Pi多了1分钟。多出来的时间花在子代理的启动、协调、结果汇总和冲突解决上。这些协调动作消耗时钟时间,却不产生额外的推理深度。
Pi只带4个工具直来直去
Pi携带4个工具。每个工具只做一件事,没有复合功能,没有编排管道,没有子代理。工具少意味着选择空间小,Pi的模型不需要在27个选项里权衡该用哪一个,决策路径缩短。
Pi每回合固定开销1340个token。这是三个外壳里最低的固定成本。Pi平均每项任务调用38次工具,调用序列里bash和read交替出现,edit出现在中后段。Pi把所有推理压缩进一个长上下文窗口,一次性处理完毕,不拆分任务,不分发子代理。
Pi的所有token消耗都发生在主流程里,外部统计能完整捕捉每个动作。Pi平均生成14775个输出token,其中大部分是推理token,小部分是工具调用指令和编辑内容。没有编排管道的元数据消耗,没有子代理的隐藏消耗,没有状态传递的描述性token。
Pi用2.1分钟完成一项任务,是三个外壳里最快的。速度来自两个因素:固定开销最低,生成总量最少。没有多余的管道租金,没有分发等待,没有汇总协调。Pi的模型把全部生成预算用在推理和编辑上,不消耗在元数据上。
Claude Code、OpenCode、Pi的质量挤在同一区间
二十四轮测试后三个外壳的得分无法区分。Pi平均2.34分,OpenCode平均2.07分,Claude Code平均2.42分。置信区间画出来全部互相穿过,统计上没有显著差异。
同一个外壳在同一个任务上跑三次,分数可以差出一个等级。这一轮给基础尝试得1分,下一轮给完整修复得3分。模型没变,任务没变,变的只有随机种子。跑与跑之间的波动宽度大到足以吞掉Claude Code、OpenCode和Pi之间的任何分数差距。
八个缺陷全是逻辑漏洞。边界条件把小于号写成大于号,状态更新在条件满足前触发,循环退出条件设置错误。这类缺陷需要的是因果链追踪,不是代码搜索广度。Claude Code的子代理并行搜索不提高追踪精度,OpenCode的海量读取不提高定位速度,Pi的27个工具不增加推理深度。
Claude Code的输出量是Pi的四倍
Claude Code每项任务生成58370个输出token。Pi生成14775个,OpenCode生成17463个。同一个DeepSeek V4 Flash模型解码速度固定,Claude Code的生成量是Pi的四倍,耗时也是Pi的四倍。
Claude Code输出膨胀的第一笔账是探索成本。Claude Code在任务前期阅读大量文件,搜索整个代码树,很多读取内容与缺陷位置无关。那些无关内容全部变成输出token,全部计入Claude Code的耗时。
Claude Code输出膨胀的第二笔账是元数据成本。每次工具调用都附带状态描述、当前上下文摘要、下一步计划说明。Claude Code的27个工具带来的元数据比Pi的4个工具多出十几倍。编排管道每传递一次状态就要生成一段描述,那些描述与代码修复没有直接关系。
DeepSeek V4 Flash的输入读取速度极快,10K token和200K token的输入耗时几乎一样。Claude Code堆叠上下文不增加明显延迟。真正烧时间的是输出端的生成,输出越多等待越久。Claude Code把大量生成预算花在探索和元数据上,Pi把生成预算花在推理和编辑上。
选Claude Code还是OpenCode还是Pi
在DeepSeek V4 Flash上跑这八项缺陷修复,外壳的选择只影响效率和成本。
Pi最快最省,OpenCode中间,Claude Code最慢最贵。
质量上三者没有统计差异,谁也不能把模型变得更好。
工具数量与效率成反比,固定开销与工具数量成正比:
Claude Code每多加一个工具,每回合就要多支付一笔元数据token。如果这个工具不经常被调用,或者调用了也不直接作用于代码,那这笔元数据就是纯粹的效率损耗。
OpenCode的子代理机制不提升质量,只改变token的分布位置。把生成量从主流程移到支线流程,总生成量没有减少,协调等待时间反而增加。Claude Code的编排管道不增加推理深度,只增加状态传递的描述性token。
下次看到Claude Code或OpenCode或Pi在基准测试里碾压其他外壳,先问三个问题:跑了多少轮,置信区间画没画,区间之间重叠没重叠。如果跑了不到十轮,大概率测的是随机种子,不是外壳能力。
原文:http://www.jdon.com/93572-claude-code-opencode-pi-deepseek-v4-flash-perform.html
更多推荐


所有评论(0)