一个 AI Agent 看起来很会省事:接到需求,查资料、调接口、改文件、发通知,几十秒跑完。账单也看起来不吓人——这次模型调用只花了几分钱。
问题是,这几分钱通常不是这件事的成本。
它可能在中途调用了六次模型;网页抓取失败后重试三轮;用了付费搜索、地图、OCR 或短信接口;最后生成的结果还要有人花十分钟核对,发现不对后又让它重跑一次。月底看 API 账单,数字不算高;回头一算“这个自动化到底有没有省钱”,答案却常常尴尬。
这不是财务同事过度敏感,而是 Agent 的成本单位被算错了。
对传统程序,成本常按服务器、带宽、存储摊开。对 Agent,最小经营单位应该是一件成功完成的任务。
最近看到 Magpie 这个面向人和 AI Agent 的记账 CLI,很值得借它的思路反观 Agent 工作流。它没有让模型直接改数据库,而是把科目、分录、客户、发票、付款、快照与审计读取都收进受约束的命令路径:权限和会计不变量检查通过,才追加一条加密、不可变的事件。
它解决的是财务账;但同一个原则也适合 Agent:先留痕,再归因;先定义边界,再允许执行。
Token 账单,为什么总让人误判
先把最常见的误区说透:Token 不是没用,它只是账本里最显眼、也最不完整的一列。
一次“帮我整理本周客户反馈并发周报”的任务,可能包含:
- 主模型输入和输出 Token;
- 搜索、网页抓取、数据库查询、文件转换等工具调用;
- 失败后的重试、反思、回滚、子 Agent 分工;
- 上下文越来越长后重复携带的历史内容;
- 人工抽查、纠错、批准、返工;
- 任务失败时留下的无效消耗。
单次模型调用像出租车的小票,Agent 工作流则更像一次跨城出差:高铁票不是全部,酒店、打车、改签和耽误的工时也在里面。
FinOps Foundation 在 AI 工具与服务的考量中点出了这个放大效应:一次用户交互可能触发 5、10,甚至 50 次模型 API 调用;如果没有按 Agent 运行追踪,很难把费用对应回具体任务。更关键的是,低质量输出会带来重复提示、失败流程和人工补救,这些间接成本往往比那次推理贵得多。
所以,别问“这个模型每百万 Token 多少钱”。先问:
这类任务成功交付一次,要多少钱、多久、多少人工?
这才是经营语言。
给每次任务开一张“成本凭证”
不需要一上来采购庞大的观测平台。小团队先给每个任务留下一行结构化记录,已经能躲开大部分盲区。
建议账本主键用 run_id,每次从触发到结束的完整执行共用它;有父子 Agent 时,再补 parent_run_id。每一条模型调用、工具调用、人工动作都挂在同一个任务下。
一张够用的任务账,可以包含这些字段:
| 字段 | 记录什么 | 为什么不能省 |
|---|---|---|
run_id |
一次完整任务 ID | 把碎片支出拼回同一件事 |
workflow |
任务类型,如“日报生成” | 对比不同流程是否值得自动化 |
owner |
负责人或团队 | 成本有归属,优化才有人接 |
model_cost |
模型调用估算费用 | 保留输入、输出、缓存命中等明细 |
tool_cost |
搜索、API、OCR、短信等 | 这部分常藏在模型账单外 |
retry_count |
重试和循环次数 | 找出“看似成功、其实在烧钱”的链路 |
duration_ms |
端到端耗时 | 延迟会变成人工等待成本 |
review_minutes |
人工复核或返工时间 | 自动化最容易漏算的一列 |
outcome |
成功、失败、需返工 | 失败任务不能混进平均值 |
value_tag |
线索、工单、内容、报表等 | 为未来计算业务价值留接口 |
这里有个小但重要的纪律:模型、工具、人工不要互相吞掉。
很多团队会把人工复核当作“正常工作”,不写进 Agent 账本。结果是自动化把十分钟的操作压缩成两分钟,却额外制造了八分钟审核;仪表盘显示 Token 节省 60%,真实效率却没有动。账本把这八分钟记出来,不是为了否定人工,而是让人看见它究竟在替哪一步兜底。
可以先用一个非常朴素的公式:
单次任务总成本 = 模型成本 + 工具成本 + 基础设施分摊 + 人工复核成本 + 失败/返工成本
成功任务成本 = 某类任务总成本 / 成功交付次数
注意分母必须是“成功交付次数”,不是“运行次数”。一个 Agent 连跑十次、只产出一份可用结果,不能拿十次平均消耗给自己庆功。
成本异常,往往不是模型太贵
账本跑一两周后,最有价值的不是总数,而是异常任务。常见的成本洞,通常长成四种样子。
1. 上下文失控:每一步都背着整段历史
Agent 做多轮任务时,最容易把全部对话、工具返回和旧文件一次次塞回模型。它不是“记忆力好”,而是在反复搬家。
先拆出稳定指令、当前任务摘要和必要证据。稳定内容走缓存;历史内容做摘要;工具返回只保留下一步真正需要的字段。优化目标不是把提示词砍成谜语,而是让每次推理只携带当下需要的行李。
2. 重试无上限:错误被包装成努力
网络抖一次可以重试,权限错误重试一百次只是在缴学费。尤其带有“自我反思”“继续尝试”提示的 Agent,失败很容易变成长循环。
账本要分开记录:模型重试、工具重试、人工重新触发。再给每种任务设置上限,例如最大模型轮数、最大同工具调用次数、最大总预算、最大执行时间。超过阈值不要悄悄继续,进入暂停状态,输出已完成内容和失败证据,交给人决定下一步。
这不是削弱自主性。刹车能让自动化在错路上少跑几公里。
3. 工具调用比推理本身贵
一次模型回答或许只要几分钱,但后面连续查第三方数据、OCR 多页文件、生成图片、拨打语音接口,工具成本很快反超 Token。
因此工具也需要预算和标签:这是必需步骤,还是“多查几个来源更安心”的习惯?它为最终质量增加了多少?对低价值任务,用更便宜的数据源、缓存结果、批量查询或延迟执行,通常比换一个更便宜的模型有效。
4. 人工复核成为隐形流水线
如果每份结果都必须人工从头检查,说明 Agent 还没有真正接管流程,只是把初稿搬得更快。
别急着取消审核。先把审核拆级:
- 低风险、格式固定任务:自动校验后抽样复查;
- 涉及外发、金额、权限的动作:必须批准;
- 结果不确定、证据不足、预算超限:自动升级人工;
- 高风险动作:先生成计划和差异,确认后才执行。
当审核时长被记录,才能分辨“这是必要风控”,还是“模型经常漏掉同一种细节”。后者应该回到提示、工具契约、规则校验或测试集修,不该靠人无限加班填洞。
账本不是监控屏:必须能改变决策
很多成本系统死在第二周:图表很漂亮,没人据此改任何东西。要让账本活起来,至少建立三条能触发动作的规则。
第一条:按任务看,不按总账看。
把“每成功任务成本”按工作流排序。也许客服摘要每份只花一点点,但每天跑几千次;也许内容研究单次较贵,却换来高质量的人工决策。总账只能制造焦虑,任务账才支持取舍。
第二条:成本和质量必须同屏。
便宜但返工率高的模型,不一定更省;昂贵但一次通过率高的流程,也未必浪费。每个工作流至少同时看成功率、人工复核分钟数、平均耗时和单次成功成本。四个数字放在一起,模型路由才不是拍脑袋。
第三条:阈值要能暂停,不只会报警。
提醒一条“本日费用超标”往往来得太晚。更实用的是分级:达到 80% 预算告警;达到 100% 暂停非关键任务;涉及不可逆外部动作时,预算、权限或证据不满足就转人工批准。成本控制和安全控制在这里是一回事:都是给行动加边界。
一个适合小团队的落地顺序
不必先做大平台。按下面四步走,通常一周就能获得第一批有用数据。
- 选一个高频、低风险流程。 比如日报汇总、知识库整理、工单分类。不要先从最复杂、最敏感的自动化开刀。
- 给每次运行打上
run_id。 模型、工具、人工记录都带上它。先保证能串起来,再谈精细计价。 - 连续记录两周,不急着优化。 先看真实基线:成功率、重试、最长耗时、人工复核、异常任务。
- 每周只改一个最大洞。 可能是缩短上下文,可能是修工具超时,也可能是把全量人工审核改成规则校验加抽检。改完后用同一套指标比较前后结果。
此时会发现,最有价值的“降本”常常不是更换模型,而是删掉没有价值的循环、重复查询和无差别人工检查。
让 Agent 学会花钱之前,先让它学会交账
Magpie 的启发不在于每个 Agent 都要去做复式记账,而在于它坚持一件朴素的事:关键动作通过受约束的入口发生,并留下不可抵赖的记录。
AI Agent 时代,成本账也应该如此。
不要让费用只躺在模型供应商的月度账单里;不要把人工返工藏在“顺手看一下”;也不要拿一次漂亮的 Token 降价,掩盖一条失败率不断上升的自动化链路。
给每个工作流一张账,让它说清自己花了什么、做成了什么、哪里需要人接手。等你能回答“这一件成功任务值不值”时,AI 才从昂贵的演示,变成可持续的生产力。
参考资料:
- Magpie:面向人和 AI Agent 的记账 CLI,提供受 RBAC 与会计不变量约束的操作路径、不可变审计事件。https://github.com/kyle-visner/magpie
- FinOps Foundation,《FinOps for AI: Tools & Services Considerations》:Agent 级追踪、成本归因与质量失败的间接成本。https://www.finops.org/wg/finops-for-ai-tools-services-considerations