同一个模型,同一台机器,跑一句“回复OK”。开发者Systima抓包测量Claude Code和OpenCode的API请求,第一轮提示词还没发出去,Claude Code已经带上约3.28万input token,OpenCode只要6900。差距接近5倍。

但把任务拉长到写代码、跑测试、改bug的多步循环,账本会翻面。Claude Code靠一次批量工具调用,三轮请求就跑完全程;OpenCode一步一个动作,跑了九轮。谁烧得多,答案不在起点,在你怎么用。

首轮差距:工具schema是大头

Claude Code默认挂27个工具,涵盖后台代理、任务编排、worktree管理,工具schema本身就吃掉约2.4万token。OpenCode只挂10个工具,schema约4800token。

同样叫“编码助手”,一个把自己活成了调度中枢,一个只管读文件、跑命令。

项目Claude CodeOpenCode
工具数量27个10个
工具schema体积~24k token~4.8k token
首轮总input~32.8k token~6.9k token
首轮请求基线对比 32.8k Claude Code · 27个工具 6.9k OpenCode · 10个工具 差5倍,主因是工具schema体积

多步任务:请求次数才是真账本

测试里一个反直觉例子叫T3——写文件、跑脚本、改bug的多步任务。Claude Code把整套操作打包成一次并行工具调用,3次请求跑完,累计输入约12.1万token。

OpenCode每轮只发一个工具调用,一步步来,跑了9轮,累计约13.2万token,反而更高。

总账约等于单次基线乘以请求次数。基线小但话多,基线大但办事利落,最后可能殊途同归。

基线小,不代表总账小。
多步任务累计token(T3) Claude Code · 3次请求 121k OpenCode · 9次请求 132k 总输入 ≈ 单次基线 × 请求次数

真正烧钱的杠杆:配置,不是模型

72KB的指令文件,会给两个harness各自的每次请求都加上约2万token,对称拖累。但Claude Code只认CLAUDE.md,不认AGENTS.md——文件名挂错,配置等于白搭。

小型MCP服务器每个约增加1000到1400token/请求,五个挂下来就是几千token的常驻税。

真正的放大器是子代理。同一份任务,直接执行是12.1万token,分给两个子代理去跑,涨到51.3万,约4.2倍——每个子代理都要重付一次启动成本,父会话还要把子代理的完整对话记录再吞一遍。

子代理放大器 121k 直接执行 513k 两个子代理并行 4.2倍 · 每个子代理各付一次启动成本

缓存也不是免单。OpenCode的请求前缀在整个会话里字节不变,写一次缓存,后面全靠低价读。Claude Code因为会话中途重写提示,同一任务的缓存写入量最多比OpenCode多出54倍——这笔钱不会体现在“输入token”这一栏,但会体现在账单上。

配置项影响备注
指令文件(72KB)每请求+约2万token需匹配文件名,认错文件等于白配
MCP小服务器每个+1000~1400token/请求挂多个即常驻税
子代理(2个并行)121k→513k,约4.2倍每个子代理重付一次启动成本
缓存写入Claude Code最高多54倍会话中途重写提示导致

对正在把编码Agent接入生产环境的工程团队,这几个数字有具体动作可做:子代理不是默认该开的功能,先问是否真的需要并行,再决定要不要为4.2倍token买单;指令文件命名要按harness核对一遍,别让72KB配置白喂给不认这个文件名的工具。

对关心成本、延迟和上下文窗口管理的技术负责人,该盯的不是模型报价单,是配置清单:工具schema精简没有、MCP挂了几个、子代理是不是必要项。这几项没人管,账单会照单全收。

这份测试真正有意思的地方,不是谁赢了,是它把编码Agent的成本账,从“选哪个模型”挪到了“怎么配置、怎么执行”。《左传》讲“其兴也勃焉,其亡也忽焉”,放在这里不完全贴切,但有一层意思相通:功能堆得快,重量也长得快。

Claude Code把自己做成带编排、带子代理、带后台任务的平台。这是有意为之的野心:批量工具调用那一下,说明团队清楚token是成本,在关键路径上确实下了功夫。

接下来值得盯两件事:Anthropic会不会精简27个默认工具的schema体积;企业会不会把“子代理是否必要”写进Agent接入的审核清单。这两件事哪个先发生,决定了配置overhead会不会继续往上堆。

这组数字来自Systima本地LLM gateway下的抓包环境,作者已扣除约6200token的校准误差,但换一套网关、换个模型版本,结论未必成立。token数也不等于最终美元账单,缓存读写价格、TTL、请求次数和输出token都会改变实际支出。