同一bug修复任务、同模型、同API价格下,自研Agent仅用1298 credits,而opencode用2157 credits,差距来自Agent的任务规划效率而非模型本身。
每个编程 agent 都宣称自己高效。几乎没有人公开账单。所以我们做了这个无聊的实验:同一个 bug 修复、同一个模型、同一个 API、同样的价格、完全一致的 prompt,一次用 opencode,一次用 Locally Uncensored 内置的编程 agent。
结果:opencode 三次运行平均消耗 2157 credits。我们的 2.6.6 agent 完成相同任务仅消耗 1298。节省约 40%,即便 opencode 最便宜的一次也比我们高出 29%。
有趣的不是这个数字本身,而是差距存在的原因——这和大多数人的猜测截然不同。
成本比较只有在所有驱动成本的因素都被固定下来时才值得一读。以下是我们保持不变的条件:
成功标准在运行前就定义好了,而不是事后:
四次运行都通过了这一标准。没有失败,所以成本是唯一变动的变量。
先看最后一行。我们自己上一个版本的已发布 agent 是表中消耗最高的项目,而且高得多。这不是一张为了让我们赢而构建的图。这张图展示的是一次效率优化的价值,而输掉它的是我们自己软件的上一版本。
一个诱人的解释是:某个 agent 更聪明,所需步骤更少。事实并非如此,而且方向与预期相反。
opencode 使用的轮次比我们少。8 到 11 次请求对比我们的 16 次。如果按步数计分,opencode 赢了。账单走向相反,原因是每一次请求都携带的东西。
最后一行才是诚实的那个。计费费率是相同的。每千 prompt token 的 credits 在所有四次运行中相差不到几个百分点,而我们反而略高于其他任何一个。没有谁获得了秘密折扣。账单的全部差异来自 token 体积,而非 token 价格。
有两个因素驱动了这个体积,熟悉 agent 循环的人对两者都不会陌生:
固定块。 21,188 字节的工具目录对比 7,703 字节,约等于三倍的固定开销,而且每次循环调用都要支付,无论模型是否用到了那些工具。
上下文衰减。 随着 agent 持续工作,转录记录不断增长。10 步之前就已经无关紧要的旧工具输出,除非有东西主动修剪它,否则会以完整长度反复发送。
两者叠加,一个固定块大到这个程度会让 opencode 的每次请求都超过 12,000 token。在这个体量下,6 步 agent 消耗的 token 就已经接近我们整个任务的总量。
表中那个 4395 不是我们为了文章而搭建的稻草人,而是上一版本已发布的内容。在 2.6.5 和 2.6.6 之间,我们针对的正是上面两个问题:固定块有多大,以及多少转录内容被反复发送。在同一组工具驱动运行上测量,credit 消耗下降了 78.6%,其中最长一次运行下降了 80.4%。opencode 对比只是当我们把同样的测量方法指向别人循环时的副产品。
这正是供应商基准测试通常会沉默的地方,所以这里要说明这个数字实际上能延伸多远。
单一场景。 一个极小的仓库和一行 bug。它对大型代码库、多文件重构或持续一小时的会话没有任何说明意义。我们没有跑那些。
不均衡的样本。 opencode 跑了三次,我们跑了一次。opencode 内部的差异幅度就达 45%,从 1679 到 2433。我们自己的差异幅度未知。一次运行是一个数据点,而非分布。
默认设置。 opencode 以出厂状态运行。它是可配置的,经过调优且裁剪过工具集的配置会落在别处。我们没有对它做任何调优,无论是正向还是负向。
opencode 是自由软件。 工具本身免费。这里测量的一切都是模型账单,无论你指向哪家提供商都要支付。这是 token 效率,不是许可证费用。
成本不等于质量。 表中每次运行都产出了正确且已提交的工作。在更难的问题上,排名可能完全不同,最便宜的那个永远不会自动变成最好的。
但这个测量确实支持一个比标题更窄的主张:在短小、范围明确的 agent 任务上,opencode 几乎不可能落在我们之下,因为固定的每次请求开销设置了一个底线。即便它最好的一次运行,只有 8 次请求,仍然需要 98,789 个 token。
opencode 三次中完成了三次,使用的轮次比我们少,而且每次都产出了正确的 diff 和恰当的 commit message。它是一个真正优秀的 agent,而且是开源的。这篇文章不是停止使用它的理由。
这是测量你自己的循环的理由。Agent 账单由你从未见过的 token 构成,两个都感觉很快的工具在账单上可能相差 1.66 倍。如果你构建 agent,有两个数字值得放到仪表板上:每次请求的 prompt token 数,以及你的工具目录的字节大小。它们对账单的预测能力比步数更强。
完整的方法论和原始计数见:opencode Alternative: We Measured the Cost per Task。Agent 内置于 Locally Uncensored(AGPL,免费),我们对比的托管模型在 LU Labs Cloud,如果你希望在一个选择器里找到它们。你也可以指向自己 GPU 上的模型,完全跳过 API 账单。
opencode 贵吗?
opencode 是免费的。账单来自模型。用 DeepSeek V3.2 修复这一行 bug,三次运行分别消耗 1679、2433 和 2358 credits,最便宜和最贵的之间相差 45%。
为什么它用这么多 token?
不是因为额外的步数,它用的反而比我们少。每次请求携带了更多:12,349 到 13,308 prompt token 对比我们 4,664,工具目录 21,188 字节对比我们 7,703,且每次调用都会重新发送。
计费费率真的相同吗?
是的,而这就是关键所在。每 prompt token 的 credits 我们是 0.01739,opencode 是 0.01700、0.01666、0.01611。差距在体积,不在价格。
能复现吗?
三个文件的 npm 仓库,红色测试,prompt 固定在 sha256 29cec6c3...cf62687,模型 deepseek-ai/DeepSeek-V3.2,opencode 1.18.21 默认设置,通过 wire proxy 计数请求,每次运行前后读取 credits。