Claude Code sends 33k tokens before reading the prompt; OpenCode sends 7k
701 points • 4 days agoArticle Link

Claude Code 与 OpenCode 的对比分析显示,两者在 token 消耗和缓存效率上存在显著差异,主要源于各自的 agentic harness 在管理 system prompts 、 tool schemas 和 operational scaffolding 时的不同。在 API 边界测量时,Claude Code 更像一个沉重的平台引导器(platform bootstrap)。即便是简单任务,它也会发送约 33,000 个 token 的基线,而 OpenCode 仅约 6,900 个。差异主要来自 Claude Code 更详尽的工具定义和注入的系统提醒,这些内容在处理用户 prompt 之前就已消耗掉可用上下文窗口的大部分。

当引入 instruction files 和 Model Context Protocol (MCP) servers 等实际配置时,成本差距进一步扩大。一个标准的 72KB instruction file 会为每次请求增加大约 20,000 个 token,连接多个 MCP servers 会使负载更臃肿。由于这些配置在会话的每一轮都被注入,它们相当于持续的使用税。 subagent delegation 是最极端的倍增器:每个 subagent 都会启动自己的 bootstrap 过程,parent agent 随后会消耗产生的 transcript,导致与直接执行任务相比,总计费 token 数量大幅上升。

不过,Claude Code 在多步任务中具备战略性优势——它能把多个 tool calls 批量合并到一次请求中。通过并行执行操作,它减少了往返次数,从而在一定程度上抵消其较高的基线成本。 OpenCode 则更偏向串行、每轮通常只调用一个 tool 。因此,尽管 Claude Code 的 token 底数更高,但在复杂任务下,累计成本有时会趋于一致,甚至在某些情况下优于 OpenCode,这取决于 agent 通过 batching 管理会话长度的效率。

在 Prompt Caching 的表现上,两者差别更为明显,尤其体现在稳定性和计费方面。 OpenCode 保持高度稳定的 request prefix,使其在整个会话中能有效利用 cache hits 。 Claude Code 则容易出现 prefix 不稳定,常在会话中期重写大量 system instructions 和 scaffolding 。这类 cache writes 的计费较高,测试中 Claude Code 在相同任务下写入的 cache tokens 是 OpenCode 的多达 54 倍。这种不稳定性显著推高总成本,因为在 Claude Code 的操作周期内,cache writes 更频繁且单次费用更高。

对于在生产环境运行 agentic AI 的组织而言,这些发现强调了在 API 边界进行审计的重要性。由于 token 使用受具体 harness 架构和配置的影响很大,仅监控模型本身不足以掌握全局。维护已捕获 payload 的审计日志——可通过 tamper-evident 、 hash-chained logging 实现——对于理解系统行为并满足合规性要求(例如 EU AI Act)至关重要。通过追踪发送到模型的内容,团队可以摒弃经验主义,基于数据对 AI 基础设施和成本优化策略做出决策。

392 comments • Comments Link

• 子代理架构常被批评为 token 使用效率低,因为它们经常产生多个冗余进程,重复读取代码库并重复嵌入大量系统提示,从而带来不必要的成本。

• 递归式子代理探索在规划或复杂调查中可能很有价值,但这些代理往往难以调优,偏向穷尽式搜索而不是采用简单的、迭代式的代码执行尝试。

• 商业化编码框架中的系统提示常常消耗大量 token 预算,有些配置在开始任何实际工作之前就已经超过 30k tokens 。

• 当前行业朝向"tokenflation"(即代理为琐碎任务发起过多工具调用或过度后台验证,如静态检查和测试)的趋势,对关注成本效率的用户来说,正成为日益严重的摩擦点。

• 采用替代的、轻量级的编码框架或自建的定制代理,通常能显著节省成本,因为这些方案允许最小化系统提示,并对模型行为和工具使用进行更细粒度的控制。

• 关于 AI 实验室的潜在激励机制存在争议,一些人认为专有的编码框架可能被用来推动更高的 token 消耗,并将用户引向更昂贵的订阅层级。

• 框架之间的性能差距通常与底层模型智能关系不大,更大程度上取决于"包装层"的开销——包括其如何高效利用 KV 缓存以及管理上下文窗口。

• 降低成本的策略包括精简不必要的系统指令,使用更小的"mini"模型来协调子任务,以及采用动态上下文裁剪来防止冗余数据处理。

• 社区正越来越倾向于"vibe coding"或构建自定义的极简框架,认为当前的商业工具往往充斥着过多依赖项和不透明的逻辑。

• 在编码框架之间进行比较仍然复杂,因为网关代理、不同的工具 schema 和缓存失效模式使得建立真正标准化的性能基准变得困难。

这场讨论反映了集成式编码代理带来的便利与其底层架构所产生的财务与性能成本之间日益紧张的矛盾。许多用户主张采用比商业"黑箱"框架更透明、更轻量且可定制的替代方案,指出过度的 token 浪费和不必要的后台任务是主要缺陷。尽管有人认为代理的复杂性是提高生产力所必须付出的权衡,但相当一部分社区正转向构建或采用更精简的解决方案,以重新掌控开发环境和支出。