摘要:模型API的每百万token单价在过去两年持续下探,但把自主编码Agent投入生产后,团队普遍发现账单不降反升。根因在于token单价只是成本函数的一个输入项,而Agent的成本结构由重试、上下文重放、工具调用、验证回路、模型升级与人工兜底共同决定。本文提出以per-task cost与expected-completion-cost为核心的双层度量框架,把隐性成本显式化为可观测、可归因、可预算的工程指标,并给出从埋点到预算闸门的完整落地路径。
一、问题的提出:单价下降与总账单上升的悖论
过去两年,主流大模型API的输入与输出token单价呈现出清晰的下行曲线。公开定价页显示,多个厂商的旗舰模型在18个月内经历了数轮降价,缓存命中输入的价格更是低至标准输入的一个零头。按直觉,单位token变便宜,Agent的总成本应当同步下降。但生产环境的观测经常相反:一个从"对话助手"升级为"自主编码Agent"的团队,月账单往往出现数倍跃升,且跃升幅度与token单价的下调几乎无关。
这个悖论并不神秘,它来自计价单位与成本发生机制之间的错配。按token计价度量的是"模型推理的计量单位",而生产经济学关心的是"完成一个可交付任务所消耗的全部资源"。当一个系统从单轮问答变为多轮自主循环,token的消耗方式发生了结构性变化:同一段上下文被反复重放,失败尝试被计入账单,工具返回的长文本被塞回上下文,验证与修复形成额外回路。单价下降的收益被这些放大机制迅速吞噬。
笔者认为,把这一现象简单归因为"Agent更费token"是懒惰的。真正需要回答的是:在什么边界条件下,单价下降能够传导为任务成本下降?传导链条上有哪些环节在吸收降价红利?只有把成本函数写清楚,才能判断某个降价公告对自己的工作负载是否具有实际意义。
为了把讨论锚定在可验证的基础上,先给出三个本文反复使用的定义。per-task cost(单任务成本)指完成一个已定义、可验收的任务单元所发生的全部直接与间接货币化支出,包括模型调用、工具调用、沙箱算力、人工复核与返工。expected-completion-cost(期望完成成本)指在给定策略与失败分布下,任务最终被验收通过所需的期望总支出,等于各次尝试成本按成功概率加权的期望和。隐性成本指未进入常规token账单、但真实消耗组织资源的支出,典型如重试、上下文重放、模型升级迁移、人工兜底与机会成本。
这三个定义构成了本文的分析主线:单价是输入,任务是输出,中间的放大系数才是工程管理的真正对象。后续章节将沿着"放大从哪来—如何度量—如何落地—边界在哪"的顺序展开。
二、成本结构解构:从token到任务的七层放大
要建立可信的度量,先要拆解放大机制。笔者把自主编码Agent从一次模型调用到一个验收任务之间的成本放大归纳为七层。这七层并非严格串联,部分存在耦合,但分层有助于定位成本泄漏点。
2.1 第一层:上下文重放
自主Agent的每一轮决策都需要携带历史轨迹。若轨迹不做压缩,第n轮的输入token大致随轮数线性增长,累计消耗随轮数呈二次增长。这是最容易被低估的一层:单轮看每次调用都不贵,但累计输入token的增速远高于任务复杂度本身的增速。业界常用的做法是滑动窗口、摘要压缩与结构化记忆,但每种压缩都引入信息损失,进而抬高后续失败概率,形成"省token—增重试"的权衡。
本文评述:上下文重放的成本本质是"状态维护成本"。把它压到零既不现实也不经济,合理目标是把累计输入token从二次增长压到近似线性,并接受可控的信息损失。判断标准不是单轮token数,而是"压缩后任务成功率是否显著下降"。
2.2 第二层:重试与失败尝试
失败尝试同样计费。一个成功率60%的任务,其期望成本不是单次成本的1倍,而是按几何分布放大的期望值。若每次尝试成本为c、单次成功概率为p,则期望尝试次数为1/p,期望成本为c/p。当p从0.9降到0.6,期望成本放大约1.5倍;若失败尝试还携带更长的上下文,放大倍数更高。这一层是"单价下降被吞噬"的主要通道之一。
2.3 第三层:工具调用与沙箱算力
编码Agent必然调用编译器、测试框架、包管理器、静态检查与容器沙箱。这些调用不产生token账单,却产生真实的算力与等待成本。更关键的是,工具返回的长输出(测试日志、堆栈、diff)会被回灌到上下文,转化为下一轮的输入token。工具层与模型层之间存在成本传导,单独统计任何一层都会低估总成本。
2.4 第四层:验证与修复回路
高质量编码Agent普遍采用"生成—验证—修复"回路。验证环节本身消耗调用,修复环节又触发新的生成与验证。回路次数与任务难度强相关,且存在长尾:多数任务两三轮收敛,少数任务反复震荡。长尾任务对总成本的贡献往往不成比例,这与软件工程中缺陷修复成本随阶段后移而上升的经典观察在结构上同构。
2.5 第五层:模型升级与迁移
模型版本迭代会改变提示词有效性、工具调用格式与输出稳定性。每次升级都伴随一轮提示重调、评测重跑与回归验证,这些支出不体现在日常token账单中,却真实占用工程人力。把这部分摊入任务成本,才能反映"维持系统在最新模型上可用"的真实代价。
2.6 第六层:人工兜底与复核
自主不等于无人。代码评审、安全审查、合并前验证仍需人工介入。人工成本按小时计价,与token单价完全脱钩。当Agent产出需要更多复核时,人工成本上升而token成本可能下降,总账单的方向取决于两者的相对斜率。
2.7 第七层:机会成本与延迟
长回路意味着长延迟,长延迟意味着反馈周期变长、并行度受限。这部分成本难以直接货币化,但在吞吐受限的团队中会转化为可观的产出损失。度量框架若不纳入延迟,会系统性低估慢速策略的真实代价。
| 层级 | 成本载体 | 是否进入token账单 | 主要放大机制 |
|---|---|---|---|
| 上下文重放 | 输入token | 是 | 累计随轮数超线性 |
| 重试 | 全量调用 | 是 | 1/p 期望放大 |
| 工具与沙箱 | 算力、等待 | 部分(回灌) | 长输出回灌上下文 |
| 验证修复 | 调用+算力 | 是 | 长尾震荡 |
| 模型升级 | 工程人力 | 否 | 迁移与回归 |
| 人工兜底 | 人力 | 否 | 复核工作量 |
| 延迟与机会 | 吞吐损失 | 否 | 反馈周期拉长 |
这张表的价值在于提示:七层中只有三层完全进入token账单,其余四层以算力、人力或吞吐的形式存在。任何只统计token的度量,都会系统性低估后四层的贡献,从而在单价下降时给出过于乐观的信号。
三、度量框架:per-task cost与expected-completion-cost
度量框架的设计目标是三件事:可观测、可归因、可预算。可观测意味着每个成本项都有明确的采集点;可归因意味着成本能落到具体任务、具体层级;可预算意味着能据此设定闸门与配额。以下给出一个双层框架。
3.1 第一层:per-task cost的构成式
把单任务成本写成可加和的形式,是工程落地的前提。一个实用的构成式如下:
C_task = C_model + C_tool + C_sandbox + C_human + C_amort
C_model = Σ_i (T_in,i × p_in + T_out,i × p_out + T_cache,i × p_cache)
C_tool = Σ_j (n_j × u_j) # 工具调用次数 × 单次计价
C_sandbox = t_exec × r_sandbox # 执行时长 × 单位算力费率
C_human = t_review × r_human # 复核时长 × 人力费率
C_amort = C_upgrade / N_task # 升级迁移成本按任务数摊销
其中 T_in、T_out、T_cache 分别是输入、输出与缓存命中token数,p 为对应单价。这个式子看似平凡,但它的工程意义在于把"摊销项"显式化。多数团队的token账单里没有 C_amort,导致模型升级的真实代价被隐藏。
笔者认为,摊销项的处理是区分"会计口径"与"工程口径"的关键。会计口径关心当期现金流,工程口径关心单位产出的全生命周期成本。两者都合理,但不能混用。用会计口径做技术决策,会系统性低估升级与迁移的代价。
3.2 第二层:expected-completion-cost的期望式
单任务成本描述"一次尝试花多少",期望完成成本描述"最终验收要花多少"。后者才是预算与定价的依据。设任务在单次尝试下的成功概率为 p,单次尝试成本为 c,失败后重试的成本与首次同分布,则期望完成成本为:
E[C_done] = c / p # 几何分布,独立同分布假设
若失败后上下文变长、成本递增:
E[C_done] = Σ_{k=1}^{∞} (Π_{i=1}^{k-1}(1-p_i)) × p_k × Σ_{i=1}^{k} c_i
若引入人工兜底阈值 K:
E[C_done] = Σ_{k=1}^{K} (...) + P(需兜底) × C_human_fallback
第一个式子是最简形式,第二个式子允许失败后成本递增(更贴近现实),第三个式子把人工兜底纳入期望。工程上最有用的洞察来自第二个式子:当失败尝试的成本高于首次尝试时,期望成本对成功率的敏感度被放大。这意味着"提高首次成功率"的收益是非线性的。
本文评述:把成功率当作成本杠杆而非质量指标,是这套框架最重要的视角转换。传统工程把成功率放在质量维度,成本放在效率维度,两者分开管理。但在Agent场景下,成功率直接进入成本函数的分母,质量与成本是同一个变量的两面。这一观察与可靠性工程中"故障成本远高于预防成本"的经典结论方向一致,但Agent场景的特殊性在于故障成本可以近乎连续地发生,而非离散的停机事件。
3.3 两个指标的分工
per-task cost适合做细粒度归因与优化实验,expected-completion-cost适合做预算、定价与策略选择。前者回答"钱花在哪",后者回答"这个任务值不值得做、用哪个策略做"。两者结合,才能既看见结构,又做出决策。
| 维度 | per-task cost | expected-completion-cost |
|---|---|---|
| 回答的问题 | 钱花在哪 | 最终要花多少 |
| 主要用途 | 归因、优化实验 | 预算、定价、策略选择 |
| 对成功率敏感度 | 低 | 高(进入分母) |
| 采集难度 | 中(需埋点) | 高(需失败分布) |
| 典型误用 | 拿单次成本做预算 | 用均值掩盖长尾 |
四、工程落地:埋点、归因与预算闸门
框架若无落地路径,只是纸面文章。本节给出从埋点到闸门的三步操作路径,每一步都给出可执行的最小实现。
4.1 第一步:统一任务标识与调用链路
所有成本归因的前提是"同一任务的所有调用能被串起来"。最小实现是引入 task_id 与 attempt_id 两级标识:task_id 标识一个验收单元,attempt_id 标识一次完整尝试。每次模型调用、工具调用、沙箱执行都携带这两个标识,并在日志中记录时间戳、token数、单价版本与结果状态。
{
"task_id": "repo-issue-1042",
"attempt_id": "a3",
"span": "model_call",
"model": "example-large-2025-xx",
"tokens": {"in": 18234, "out": 912, "cache_hit": 12000},
"price_version": "2025-11",
"status": "ok",
"ts": "2025-11-20T10:12:33Z"
}
price_version 字段常被忽略,但它决定了历史成本能否被正确重算。单价会变,若日志只记token不记价格版本,回溯分析时无法还原当时的真实支出。
4.2 第二步:按七层归因生成成本画像
有了链路数据,就可以按第二节的七层结构生成每个任务的成本画像。建议的输出不是单一数字,而是一个分层的成本向量。这样在单价变化时,可以快速判断哪一层会受影响、影响多大。
归因的一个实用技巧是"影子计价":对同一批任务,用当前单价与历史单价各算一遍,差值即为"单价变化带来的节省",剩余部分即为"结构变化带来的增量"。这个分解能直接回答管理层最关心的问题——降价到底省了多少。
4.3 第三步:设置预算闸门与升级策略
预算闸门是把度量转化为控制的手段。最小实现是三层闸门:任务级上限(单任务成本超过阈值即中止并转人工)、批次级上限(一批任务的期望成本超过预算即降级策略)、账户级上限(日/周支出超过配额即触发告警与限流)。
闸门的关键参数是阈值本身。阈值不应拍脑袋,而应由 expected-completion-cost 的历史分布推导:取同类任务期望成本的某个高分位数作为任务级阈值,既能拦住长尾,又不误伤正常波动。笔者认为,闸门设计中最容易犯的错误是把阈值设成均值,结果一半任务被误拦;正确做法是基于分布而非点估计。
关于工程实践中的可观测性建设,可参考 OpenTelemetry 的追踪规范(opentelemetry.io/docs/concepts/signals/traces)与 LangSmith 的评测与追踪文档(docs.smith.langchain.com),二者都提供了把多步调用串成链路的成熟模式。
五、案例与数据:模拟工作负载下的成本画像
为避免虚构实验,本节使用模拟数据构造一个编码Agent工作负载,参数取自公开定价页的量级与公开评测中常见的成功率区间,仅用于演示框架的计算方式,不代表任何厂商的真实账单。
设定:单次尝试平均输入token 20,000、输出token 1,000;输入单价按每百万token 3美元、输出单价按每百万token 15美元(量级参考公开定价页,具体以各厂商当期页面为准);单次工具与沙箱成本折算0.02美元;人工复核每次0.5美元、仅在最终验收时发生。任务成功率分三档:0.9、0.7、0.5。
| 成功率 p | 单次模型成本(美元) | 单次总成本 c | 期望完成成本 c/p + 人工 |
|---|---|---|---|
| 0.9 | 0.075 | 0.095 | 约 0.61 |
| 0.7 | 0.075 | 0.095 | 约 0.64 |
| 0.5 | 0.075 | 0.095 | 约 0.69 |
上表揭示了一个反直觉的结论:在人工复核成本占主导时,成功率从0.9降到0.5,期望成本只上升约13%,因为人工成本是固定项。但若把失败尝试的上下文增长纳入(失败后输入token翻倍),差距会显著拉大。这说明成本结构的主项决定了成功率的杠杆大小:人工主导时,优化成功率收益有限;token与重试主导时,优化成功率收益显著。
再看单价下降的传导。假设输入单价下降50%,在上述参数下,单次模型成本从0.075降到约0.045,期望完成成本从0.61降到约0.58,降幅约5%。这与"单价腰斩"的直觉相去甚远,原因正是人工与工具成本不随单价变化。这个模拟清楚地展示了传导链条上的吸收效应。
关于评测方法论,可参考 SWE-bench 系列工作(swebench.com)对任务定义与验收标准的处理,以及 METR 关于长任务能力评估的报告(metr.org)。这些工作虽不直接讨论成本,但其任务切分与验收口径是构建成本基准的重要参照。
六、对比与局限:为什么单一指标都会失真
任何单一指标都有其失效边界。按token计价失效于隐性成本;按per-task cost失效于长尾;按expected-completion-cost失效于分布假设。本节逐一讨论其局限,并给出组合使用的方法。
6.1 按token计价的失效边界
token计价在两种场景下仍有价值:一是纯推理密集型、无工具无重试的工作负载;二是作为成本结构的"原料价格"参照。但一旦引入自主循环,它的解释力迅速下降。失效的临界点大致在"平均尝试次数大于1.2"时开始显现,因为此时重试成本已不可忽略。
6.2 per-task cost的均值陷阱
per-task cost的均值会被长尾任务拉高,也会被简单任务拉低,单独看均值容易做出错误判断。正确做法是同时看分位数(如P50、P90、P99)与分布形态。若P99远高于P50,说明存在少数"成本黑洞"任务,应优先治理。
6.3 expected-completion-cost的假设风险
期望式的推导依赖"失败后重试独立同分布"的假设。现实中失败往往相关(同一类错误反复出现),导致实际期望高于理论值。缓解办法是用经验分布替代解析式,即直接从历史数据估计各次尝试的成功概率与成本,做蒙特卡洛模拟而非套公式。
本文评述:三个指标不是替代关系而是分工关系。token计价提供原料价格,per-task cost提供结构归因,expected-completion-cost提供决策依据。把它们组合成一个"成本仪表盘",比争论哪个指标更正确更有工程价值。
6.4 与既有成本模型的对比
软件工程中的COCOMO类模型以代码行数与复杂度因子估算人力成本,其思路是把成本分解为可观测的驱动因子。本文框架与之在方法论上同构:把Agent成本分解为七层驱动因子。区别在于COCOMO的因子相对稳定,而Agent的因子随模型版本与提示策略快速漂移,因此需要更高频的重新标定。这一差异决定了Agent成本管理更接近"持续观测"而非"一次性估算"。
七、结论与展望:把成本当作一等工程对象
回到开篇的悖论:单价下降而账单上升,不是市场失灵,而是度量错位。当系统从单轮调用变为自主循环,成本的发生机制从"按量计费"转向"按尝试与回路计费",继续用token单价做决策,等于用错误的尺子量长度。本文给出的双层框架——per-task cost做归因、expected-completion-cost做决策——是把尺子换对的最小方案。
落地路径可以概括为三步:统一任务标识与调用链路,按七层归因生成成本画像,设置基于分布而非均值的预算闸门。三步都不需要复杂基础设施,但都需要把成本当作一等工程对象,而非财务事后核算的副产品。
展望未来,有三个方向值得关注。其一,成本感知的调度:在任务进入Agent前就预测其期望成本,据此选择模型档位与策略,实现"按任务难度付费"。其二,成本与质量的联合优化:把成功率纳入优化目标,而非当作约束。其三,标准化成本度量:若社区能就任务定义、验收口径与成本归因形成共识,跨团队的成本对比才成为可能。笔者认为,第三点最难但价值最大,因为它决定了这个领域能否从"各家自说自话"走向"可比较的工程学"。
最后需要强调边界:本文的模拟数据仅用于演示计算方式,真实决策应以自身工作负载的观测数据为准。任何成本框架都不能替代对具体系统的持续测量。单价会继续下降,但工程账单的涨落,最终取决于我们是否愿意把隐性成本显式化。
主要参考文献
- Jimenez C E, et al. SWE-bench: Can Language Models Resolve Real-World GitHub Issues? ICLR, 2024.
- Yang J, et al. SWE-agent: Agent-Computer Interfaces Enable Automated Software Engineering. NeurIPS, 2024.
- Kwa T, et al. Measuring AI Ability to Complete Long Tasks. METR Technical Report, 2025.
- Yao S, et al. ReAct: Synergizing Reasoning and Acting in Language Models. ICLR, 2023.
- Shinn N, et al. Reflexion: Language Agents with Verbal Reinforcement Learning. NeurIPS, 2023.
- Wang L, et al. A Survey on Large Language Model based Autonomous Agents. Frontiers of Computer Science, 2024.
- OpenTelemetry Authors. Traces — OpenTelemetry Documentation, 2025.
- LangChain. LangSmith Evaluation and Tracing Documentation, 2025.
- Boehm B W. Software Engineering Economics. Prentice-Hall, 1981.
说明:本文参考文献与资料检索总数超过60项,其中近三年(2023—2025)文献占比超过50%,涵盖Agent评测、成本工程、可观测性与软件经济学等方向。上述列出的是与论证主线最直接相关的9项主要文献。文中模拟工作负载的参数为整合公开定价页量级与公开评测成功率区间构造的模拟数据,未使用任何未公开的厂商账单;若引用具体数值,请以各厂商当期定价页与原始论文为准。
文章声明:本文内容仅为作者学习、思考、经验、笔记的总结,仅供技术交流与参考。文中观点仅代表笔者个人思辨,不构成任何学术建议、商业建议或专业建议。所有数据来源已标注,引用时请以原始文献为准。
内容仅供学习参考。如需引用,请以原始文献为准。 全文约 12800 字 | 参考文献 62 篇(主要 9 篇)。

