你可能遇到过这种情况:让一个Agent改个bug、整理一份竞品资料,或者帮你写一篇文章。你只发了一句话,等账单出来,却发现费用比想象中高很多。

这通常不是平台多算。你看到的“一句话”,在后台已经变成了几十次模型调用。Agent要先理解任务,再查资料、读文件、调工具、看结果;发现不对,还要回头改;改完再跑一遍验证,最后才把结果总结给你。你发出去的是一句话,它执行的是一串来回。

更麻烦的是,Agent自己也很难提前估准这次任务会花多少钱。密歇根大学、斯坦福大学等团队做过一个实验:让Agent动手前先估算自己接下来会用多少token。结果不管换哪个模型,估出来的数字普遍低于实际消耗,预测值和真实值的相关性最高也只有0.39。这笔账连模型自己都很难算准。

这篇文章想讲清楚三件事:Agent的token到底花在哪,为什么它天然比普通对话贵得多,以及一条真实Agent任务的账单拆开后长什么样。

一、先看懂账单里的四个科目

一次API调用里的四类Token
一次API调用里的四类Token

在讲Agent为什么贵之前,先把账单里的几个科目认清楚。不管是OpenAI还是Anthropic,API返回的用量数据里,token通常会拆成几类:

  • input tokens:你喂给模型的上下文,包括系统提示词、历史对话、工具返回内容
  • output tokens:模型生成出来的内容
  • reasoning tokens:部分模型在回答前用于内部推理的token,你看不到内容,但通常按输出token计费
  • cached tokens:命中缓存的重复上下文,单价比普通input低

这些都会出现在每次API调用返回的usage元数据里,是追踪用量和拆账的基本单位。

有个细节很容易被忽略:只要请求里带了tools参数,账单的起点就已经变了。费用不一定等到工具真正调用之后才发生,工具定义本身就会进入请求上下文。哪怕这一轮模型最后没有调用任何工具,这部分内容也可能已经算进input。

Anthropic文档里有个很直观的例子。Claude Sonnet 5只要请求里传了tools,就会多出一段tool use system prompt。如果tool_choice是autonone,这段是354个token;如果是anytool,也就是强制模型调用工具,这段会变成474个token。这类费用写在官方文档里,只是很多人在估Agent成本时不会把它算进去。

二、Agent贵在反复读上下文

Agent比普通对话贵,核心原因是它常用的ReAct模式,也就是思考、行动、观察循环。这个循环有个很要命的特点:每一轮都要把前面的历史重新塞回上下文。上一轮的推理过程、工具调用记录、工具返回结果,都会跟着进入下一轮输入。

拆开看,大概是这样:

规划阶段,模型要读任务描述、约束条件和项目背景,先判断从哪里下手。这一步还没真正动工具,但已经开始产出推理和计划。

工具调用阶段,工具定义、调用参数、执行结果都会进入上下文。工具返回的内容不是读完就结束,它会变成下一轮input的一部分。

反思和重试阶段,失败日志、测试输出、之前试过的路径又会被喂回模型。排查越久,历史越厚,下一轮输入就越贵。

Agent贵在反复读上下文
Agent贵在反复读上下文

密歇根大学、斯坦福大学等团队基于OpenHands框架,跑了SWE-bench Verified里的真实编程任务。实验覆盖8个前沿模型、500个任务,每个任务独立跑4次。结果很夸张:Agentic Coding任务平均消耗约417万token,是单轮代码推理任务的约3500倍,是多轮代码聊天任务的约1200倍。输入输出token比例达到153.85,也就是模型每生成1个输出token,平均要读153个输入token。普通多轮代码聊天的这个比例只有1.33。

Agent贵,主要贵在模型读得多。历史上下文越滚越厚,账单里最大的一块也跟着越滚越大。

如果再叠上Plan-and-Solve这类架构,成本还会继续放大。它会先生成一份多步计划,再逐步执行每个子任务;而每个子任务里,又可能各自跑一轮完整的ReAct循环。看起来只是任务拆得更清楚了,账单上却可能变成循环套循环。

三、一条真实轨迹里,钱花在了哪几轮

说“Agent会滚账单”还不够,直接看一条真实轨迹更清楚。

还是上面那篇研究,里面公开了一条任务轨迹:任务编号astropy-7336,用Claude Sonnet 4.5跑,一共31轮才完成。研究者把整条轨迹按功能分成五个阶段:

阶段对应的工作占总轮次
Setup(规划)任务理解、环境初始化、复现问题9.98%
Explore(检索)代码搜索、文件检查、根因分析30.37%
Fix(执行/反思)代码修改、调试迭代、补丁完善33.53%
Validate(校验)测试、回归检查16.59%
Closeout(总结)最终检查、清理、总结输出9.53%
一条Agent任务的31轮账单轨迹
一条Agent任务的31轮账单轨迹

Explore和Fix加起来接近三分之二。也就是我们平时感觉最耗时间的“查文件”和“改了又改”,确实也是Agent最容易消耗轮次的地方。

再往细看,每一轮的成本主因会来回切换。第1轮主要贵在输出token,因为模型在做初始规划;第10轮主要贵在未缓存输入token,因为它在读测试文件、创建复现脚本;第17轮又变成输出token为主,因为模型在写调试脚本;第23轮和第28轮再次由未缓存输入主导,用在跑测试、清理临时文件;最后第31轮主要是输出token,用来生成总结。

单轮看,输入和输出会交替成为成本大头。拉长看,输入token,尤其是反复带入的历史,才是总账单里最重的部分。即便很多历史命中了缓存,单价已经便宜很多,量一旦大到一定程度,便宜的input照样会超过高单价但数量少的output。

下面这张表可以直接拿去套自己的Agent任务。如果手头有真实usage日志或trace数据,就把数字填进去;如果暂时没有实测数据,也可以先用公开定价做模拟账,但一定要标清楚是模拟,不要写成实测。

阶段模型回合工具调用主要Token来源容易滚账单的原因
规划1-20任务、系统提示、项目约束一开始就带全量规则
检索5-1010-30文件内容、搜索结果、工具返回工具结果进入下一轮上下文
执行3-85-20patch、命令输出、错误日志每次失败都会增加历史负担
反思2-60-5失败路径、测试输出、候选方案模型会带着前面的错误继续判断
总结1-20全部变更和验证结果输出不多,但输入已经很厚

模型档位也会明显影响同一条轨迹的账单。OpenAI在2026年6月预览、7月正式开放的GPT-5.6系列就是一个例子:Sol每百万token输入5美元、输出30美元;Terra输入2.5美元、输出15美元;Luna输入1美元、输出6美元。同样的token轨迹套进去,最贵和最便宜相差5倍。

所以在Agent场景里,比较务实的做法是把强模型用在规划、关键判断和最终验收上,把检索、摘要、格式转换这类任务交给便宜模型。只找低单价模型不够,更稳的做法是让不同阶段用不同档位的模型。

四、成本经常不是线性增长

很多人会以为,某一步失败了,大不了多花一轮调用的钱。实际不是这样。

第一次失败带来的不只是一次额外调用,还会把错误日志、已经试过的路径、更多上下文一起带进下一轮。Agent越认真排查问题,历史就越厚,下一轮输入就越贵。很多时候,最贵的不是生成答案,而是带着越来越厚的历史反复判断。

那篇研究还发现一个挺关键的现象:token花得越多,任务不一定做得越好。准确率往往在中等花费的run上达到峰值,再继续增加花费,准确率反而下降或停滞。研究者进一步看了高花费轨迹,发现里面重复读同一个文件、重复改同一处代码的比例更高。

这说明一部分高成本不是深度思考,而是原地打转。多跑一轮,未必就多一点进展。

五、循环没有刹车,账单会很难看

没有刹车的Agent循环
没有刹车的Agent循环

原地打转听起来只是效率问题,但如果没有上限,它会直接变成费用事故。

2026年5月20日的阿里云峰会上,米哈游《崩坏》系列AINPC&Gameplay技术团队负责人郑银河分享过一个案例:团队里一位工程师为了测试多智能体协作,周末搭了几十个Agent,没设token消耗上限就下班了。结果这些Agent陷入循环调用,几十个Agent互相等待对方输出,又互相触发下一轮调用,连续跑了13个小时,烧掉了价值200万元人民币的token。郑银河当时的说法是,如果换成独立游戏团队,这一晚上可能就撑不住了。

海外也有类似案例。OpenClaw创始人Peter Steinberger公开过自己的账单:3人团队指挥约100个Codex智能体,30天内消耗6030亿token,发起760万次请求,OpenAI账单达到130万美元,约合人民币930万元。

这两个案例的问题不只是模型单价高,而是循环没有边界。没有最大回合数,没有token预算上限,也没有失败后停下来重新评估的机制。Agent能力越强,这类边界就越重要。

六、怎么把账单压下来

知道账单怎么滚起来,控制成本就不能只盯着“换便宜模型”。下面几件事更值得优先做:

  • 不要全流程都用最贵模型。规划和最终判断用强模型,分类、摘要、格式转换这类任务用便宜模型。
  • 限制工具返回内容长度,不要把完整日志、整份文件、整页搜索结果都塞进下一轮上下文。
  • 给Agent设置最大回合数和token预算,不要让它自己无限判断“还要不要继续”。
  • 长资料先压缩成可引用摘要,再按需要回看原文。
  • 把稳定不变的系统提示词和项目背景做成缓存,别在每轮都按全价重读。
  • 失败之后,先让Agent用一句话说明下一步要验证什么,再决定要不要继续执行。

如果你用OpenAI Agents SDK、LangSmith这类工具搭Agent,拆账不用完全手工做。OpenAI Agents SDK的trace会记录一次Agent运行里的LLM生成、工具调用、agent handoff和guardrail检查;LangSmith会把成本拆成input、output、other几类,other里可以放工具调用、检索步骤和自定义成本。跑一次trace,基本就能看到钱花在哪。

写在最后

回到开头那个问题:为什么你只问了一句,账单却滚起来了?

因为单次模型调用价格只是单价。Agent成本主要看回合数、上下文厚度、工具结果长度和失败重试次数。同一个模型、同样的任务,账单可以因为这几个变量差出几十倍,甚至更多。

所以看Agent价格,不能只看每百万token多少钱。更要看它会跑多少轮、每轮带多少上下文、失败后有没有停下来的机制。

控制Agent成本,最后还是要管住循环本身。


本文数据核对自:Anthropic Claude Platform官方文档(tool use pricing表,2026年7月)、arXiv 2604.22750(密歇根大学/斯坦福大学等,SWE-bench Verified实测研究)、OpenAI官方GPT-5.6发布页(2026年6月预览、7月正式开放)、LangSmith官方cost tracking文档、OpenAI Agents SDK官方tracing文档、米哈游技术负责人郑银河2026年5月20日阿里云峰会公开分享、OpenClaw创始人Peter Steinberger公开账单