2026年做AI自动化的团队,最大的认知误区是把「省Token」理解成「少调用模型」。真实情况是:成本失控的地方从来不是单价,而是那些看起来成功、实际上什么都没产出的调用。
一个每天跑3个自动发文任务的Agent,如果每个任务平均花0.3元,一个月不到30元——这点钱根本不用优化。但如果这3个任务连续12天「执行成功」却零产出,你付的是保险费,买的是一个不存在的结果。这种浪费不会出现在账单报警里,只出现在业务数据里。
本文按「先算清结构、再砍浪费、最后上门控」的顺序讲清楚Agent成本工程,所有结论都来自生产环境实测。
成本不是「输入价格×字数」这么简单。一次完整的Agent任务,账单由五块组成:
| 成本块 | 组成 | 常见的失控原因 |
|---|---|---|
| 常驻上下文 | 系统提示 + 记忆 + 技能文件 + 工具Schema | 记忆无上限膨胀、技能全量挂载 |
| 任务输入 | 用户指令 + 检索到的资料 | 把整库资料塞进去而不是检索后取片段 |
| 输出 | 正文 + 工具调用参数 + 思维链 | max_tokens设太大、模型过度思考 |
| 重试放大 | 失败请求的原成本 × 重试次数 | 同因失败反复重试,还有状态重复写入的副作用 |
| 隐性成本 | 评审、返工、人工兜底 | 产出不可用,人要重做一遍 |
关键结论一:常驻上下文是唯一「每轮都付」的成本。 输出和输入是单次的,而系统提示、记忆、技能文件是每次调用都要付费的固定开销。一个臃肿的常驻上下文(比如把174KB的写作技能全程挂着)会让每一次调用都变贵——哪怕它跟当前任务毫无关系。少调用模型不是降本,把常驻上下文瘦下来才是。
关键结论二:重试是成本里唯一指数级增长的部分。 单次调用贵不贵是线性的,重试是乘法的:重试次数×单次成本,再加上重复写入产生的副作用清理成本。
最危险的失败不是崩溃,而是「返回成功但什么都没做」。典型形态:
{"success": true},但目标平台没有这条内容;last_status=ok,抓取队列是空的,连续断更12天无人告警;这类浪费的可怕之处在于监控完全不报警:所有指标都是绿的,钱一直在花。识别方法是给每个任务配一个「外部可证伪的产出指标」:不是「有没有报错」,而是「应该在几点出现的东西,出现了没有」。
「再试一次」是调试自己的固执,不是调试API。重试前先给错误分类:
| 错误类型 | 例子 | 处理 |
|---|---|---|
| 永久错误 | 400参数错、404模型不存在、401鉴权失败、校验失败 | 立刻停,改配置,不许重试 |
| 限流 | 429、明确的速率限制提示 | 退避重试(带间隔,指数退避),最多3次 |
| 服务端抖动 | 503、连接重置、偶发超时 | 重试,且必须先确认操作幂等 |
| 上下文错误 | 超出上下文长度、被截断 | 停下来压缩或裁剪,重试无用 |
| 未知 | 不可分类 | 同因失败两次就停,人工看一眼 |
实测过的反例:一个批量生成任务遇到限流后连续重试,5分钟能修好的事变成了40分钟,还因为重复提交产生了重复产物。规则:同一原因失败两次,停下来想,而不是停下来重试。
常见死重量来源:
修法:正文只留行动准则,重资料移入references按需加载,过期记忆定期合并删除。
不要用一个模型干所有事。按任务难度分层:
| 任务类型 | 建议层级 | 理由 |
|---|---|---|
| 分类、抽取、打标、格式转换、去重判断 | 小模型/Flash级 | 任务边界清晰,答案可校验 |
| 常规内容生成、摘要、翻译 | 中档模型 | 性价比区间 |
| 复杂推理、长链规划、代码重构 | 旗舰模型 | 出错成本高于调用成本 |
| 高频、隐私敏感、格式固定的批处理 | 本地模型 | 边际成本≈0,数据不出本地 |
同厂新一代的Flash级模型,价格常常只有旗舰版的1/3左右,而在这类结构化任务上的差距远小于价格差距——先在小模型上跑通,再往上换,而不是反过来。
主流厂商都对「重复前缀」提供缓存价,命中后输入成本能降一个数量级(官方文档给出的数字在90%量级)。要吃到这个折扣只有一条铁律:
稳定的内容放前面,变化的内容放后面。
[系统提示] → [长期记忆] → [技能/参考材料] → [本次任务指令] → [本次数据]
↑ 稳定前缀,会被缓存 ↑ 每次都变,不参与缓存
三个常见破坏缓存的行为:在系统提示里塞时间戳;频繁切换模型(缓存按模型维度隔离);把变化的用户输入拼到提示词开头。
压缩上下文不是免费午餐:模型无法证明自己丢掉了什么,被压掉的约束会变成「伪造状态」——看起来还在,实际已经不生效了。正确做法:
固定格式的批处理、OCR、分类、脱敏、初筛,放到本地跑,边际成本接近0,还没有速率限制。实测参考:20GB显存的消费级显卡,跑量化后的12B级模型(约13.5GB权重)可以稳定服务这类任务;上下文和并行度参数要显式设定(很多推理服务默认开多个并行槽会切碎上下文,导致长请求直接报「上下文超限」)。
注意一个坑:本地模型的推理实现千差万别,量化方式的差异会直接体现为「变笨」。同一个模型换量化版本效果变差时,先怀疑推理实现,别急着换模型。
两个方向都会破财:
缓存能省钱,但会制造更贵的错误:命中一个过期但看起来成功的结果。幂等键只解决「重复执行」,解决不了「状态已变」。稳妥做法是缓存键里带上状态指纹(输入数据指纹、依赖版本、关键参数哈希),并把「假命中率」和「命中率」分开计量——如果只盯命中率,你会得到一堆过期答案和一个漂亮的省钱报告。
把下面这段当成流水线的前置门控,能砍掉绝大部分无效支出:
闸1 产出定义:这次运行要产出什么?在哪能看到?谁验证?
└─ 答不出来 = 不许运行
闸2 前置检查:目标状态是否已满足?(已发布/已存在 = 直接跳过)
└─ 幂等键 + 简单存在性查询,成本≈0
闸3 预算上限:设定单次最大尝试次数与最大花费;超限即失败退出并告警
闸4 事后对账:外部指标(发布记录/订单/文件时间戳)与自报状态比对
└─ 不一致 = 记为假成功,触发修复而非重试
闸1是最省钱的闸。 说不清「产出在哪能看到」的任务,通常不是任务难,而是任务本身没想清楚,跑起来必然是「成功但没有结果」。
总花费是个没有意义的数字:花100元做出10篇能用的内容,比花10元产出0篇便宜得多。要盯的指标:
| 指标 | 定义 | 阈值建议 |
|---|---|---|
| 单位产出成本 | 总成本 ÷ 合格产出数 | 按业务定,趋势必须下降 |
| 假成功数 | 自报成功但外部指标未达标 | 目标为0,>0立即排查 |
| 无效调用占比 | 前置检查本可跳过的调用占比 | <10% |
| 重试成本占比 | 重试产生的成本 ÷ 总成本 | <15%,超了先修错误分类 |
| 人工返工率 | 需要人重做的产出占比 | 降到可接受区间再谈自动化 |
单位产出成本的分母(合格产出)必须由外部定义。 用Agent自己判断的「完成数」做分母,等于自己给自己发合格证。
按天执行,一周内能定位主要浪费:
Agent成本工程的核心不是「省钱」,是把付款和结果绑在一起。省下来的每一分钱,都比不上一次「成功但零产出」的浪费——后者不光是钱的问题,它会让所有人对自动化失去信任。
三句话记住:
📌 相关阅读:AI Agent自动化可靠性实战指南:识别假成功,终结静默失败 · AI Agent定时任务实战指南 · 本地部署大语言模型完全指南
📚 更多创作资源: https://afdian.com/a/felix007