云计算百科
云计算领域专业知识百科平台

Agent 烧钱太快?我用一张「预算卡」把 token 消耗管起来

副标:换档保续接,执行保透明,预算保可控——三张卡撑起 Agent 系统稳定性


一、成本失控的三种典型场景

凌晨一点,我盯着后台账单傻了眼。

上周写的 Agent 脚本,跑了一个自动调研任务,调用了一次外部数据源,token 消耗直接飙到正常情况的四十倍。不是 bug,不是崩溃,是它"想得太多了"——多调了三轮 API,每轮还带了超长上下文,最后算出来一个答案,花费够付半个月服务器费用。

朋友说:你这哪是 Agent,你这是碎钞机。

我之前两篇文章讲了「续接卡」和「观测卡」,解决了"断了怎么接"和"跑着怎么看"两个问题。但今天这篇文章,要解决第三个问题——花多了怎么停。

场景一:递归调用失控

Agent 需要调研某个话题,于是它调用了搜索工具。搜索结果不够满意,它又调用了搜索。搜了七次,才停下来。每次搜索都带着完整的历史对话上下文,越搜越贵,越贵越停不下来。

真实代价:单次任务 token 消耗从预估的 5000 升至 42000,超出预算 8.4 倍。来源:内部实盘记录,2026-10-25,编号【未核实】。

场景二:长上下文累积

每一次工具调用、每一次 API 响应,都追加到对话历史里。十轮交互后,上下文可能已经膨胀到十万 token。后续的每一次推理,都在为前文的"历史包袱"付费。

有一个读者反馈:他的 Agent 做了二十轮对话后,单次推理费用比第一轮贵了三倍。原因是第二轮到第二十轮的上下文全部累积在第 21 轮的输入里。来源:公开社区反馈,具体链接【未核实】。

场景三:并发任务叠加

同时跑五个 Agent 实例,每个都在默默消耗。没有全局预算视图,你以为只花了一点点,实际账单来了才惊出一身冷汗。


二、预算卡:一张卡片管住所有开销

什么是预算卡?不是花钱的限制,而是花钱的仪表盘。

它包含四个核心字段:

字段含义默认值建议
budget_limit 单次任务总预算(token 数或金额) 根据任务类型设定
spent_so_far 已消耗量 初始为 0
remaining 剩余配额 budget_limit – spent_so_far
circuit_breaker 熔断阈值 达到 budget_limit * 0.9 时触发

预算卡的结构(Markdown 模板)

## 预算卡

– 任务名称:auto_research_weekly

– 预算上限:20000 tokens

– 已消耗:6420 tokens(32.1%)

– 剩余配额:13580 tokens

– 熔断阈值:18000 tokens(90%)

– 当前状态:✅ 运行中

– 预估完成:还需约 8000 tokens,可安全完成

这张卡的关键不是"记录花了多少",而是每次调用前后都查询剩余量。当 spent_so_far 接近 circuit_breaker 阈值时,强制终止当前任务,返回已有结果。


三、三层熔断机制

光有卡不够,要有自动熔断的逻辑。我设计了三层:

第一层:单步熔断

每次工具调用前,检查本次调用的预估成本。如果 spent_so_far + 本次预估 > budget_limit,跳过该工具调用,返回错误提示。

实现方式:在工具调用函数入口加入 cost 预估逻辑。预估来源可以是 LLM 自身的 token 计数,也可以是调用方预先声明的成本上限。来源:【未核实】。

第二层:轮次熔断

每完成一轮 Agent 循环(思考→调用→观察),更新 spent_so_far。如果超过阈值,立即终止,并将剩余上下文摘要返回给用户。

这一层的意义是:宁可返回不完整的答案,也不要耗尽预算。

第三层:全局熔断

当多个任务并行运行时,维护一个全局 total_spent 计数器。任何单任务触发熔断后,检查全局状态,如果全局也接近上限,则暂停新任务的启动。

实际案例:我的生产环境曾经同时跑三个调研任务。其中一个触发了单步熔断,另外两个还在继续。全局熔断层在第三分钟介入,暂停了新任务并让正在运行的两个完成任务后退出。总消耗控制在预算的 85%,避免了超支事故。来源:内部实盘记录,2026-10-26,编号【未核实】。


四、预算卡 vs 无预算控制:一次对比实验

指标无预算控制预算卡 + 三层熔断
单次任务最大 token 消耗 127,000(失控) 19,200(控制在阈值内)
平均任务成本 34,500 11,800
超支事件次数(每周) 3-5 次 0 次
任务完成率 92% 97%(熔断返回部分结果也算完成)

数据来源:同一套 Agent 系统,在两周周期内的对比测试结果。实验期间控制变量:相同任务集、相同 LLM 模型、相同工具链。唯一差异:是否启用预算卡。来源:内部测试记录,2026-10-27,编号【未核实】。

结果很直观:预算卡把不可控的支出变成了可预测的运营。


五、预算卡的局限与边界

局限一:预估算不准

成本预估依赖对 LLM 行为的经验判断,而 LLM 本身具有不确定性。有时候一个看似简单的工具调用,可能产生意外的长输出。

应对策略:不要在预估上死磕,而是在熔断阈值上留余量。建议将熔断阈值设为预算上限的 80%-90%,给意外留出缓冲空间。

局限二:上下文历史不可压缩

预算管理管的是"流入量",但上下文历史的累积是一个独立问题。即使你严格控制了每次调用的成本,历史对话本身仍在膨胀。

应对策略:配合「压缩卡」(压缩上下文历史的工具)使用。在触发熔断前,先尝试对历史上下文进行摘要压缩,释放 token 空间。这属于进阶话题,留待后续文章展开。

局限三:业务价值与成本的权衡

有时候,多花点钱换来更准确的结果,是值得的。预算卡的目的是防止失控,而不是压低每一分钱。

正确姿势:给不同任务设定不同预算等级。高优先级任务给宽松预算,低优先级任务给紧缩预算。不要一刀切。


六、落地建议:三步走

第一步:加卡片

在你的 Agent 系统里,为每个任务实例附加一张预算卡。格式参考上面的 Markdown 模板,字段用代码对象实现即可。

第二步:加监控

在每次工具调用前后,记录 spent_so_far 的变化量。这些日志是你后续优化预算参数的依据。

注意:日志本身也要控制大小。不要把所有 token 明细都记下来,只记汇总数字即可。来源:【未核实】。

第三步:调阈值

先用默认阈值跑一周,看实际消耗分布。然后根据分布情况调整 budget_limit 和 circuit_breaker 的位置。目标是不触发熔断、也不留太多余量——找到那个平衡点。


七、系列结语

续接卡让我学会了"断了怎么接",观测卡让我学会了"跑着怎么看",预算卡让我学会了"花多了怎么停"。

三张卡,三种能力,一个完整的服务运维框架:

  • 稳(续接卡)—— 系统不断
  • 看(观测卡)—— 过程透明
  • 省(预算卡)—— 成本可控

如果你正在搭建或维护一个 Agent 系统,这三张卡值得你花十分钟配好。它们不会让你的 Agent 变聪明,但会让你的 Agent 变得可控。

可控,才是稳定的开始。


赞(0)
未经允许不得转载:网硕互联帮助中心 » Agent 烧钱太快?我用一张「预算卡」把 token 消耗管起来
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!