<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Token on Chico's Tech Blog</title><link>https://realtime-ai.chat/tags/token/</link><description>Recent content in Token on Chico's Tech Blog</description><image><title>Chico's Tech Blog</title><url>https://github.com/chicogong.png</url><link>https://github.com/chicogong.png</link></image><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Thu, 30 Apr 2026 11:00:00 +0800</lastBuildDate><atom:link href="https://realtime-ai.chat/tags/token/index.xml" rel="self" type="application/rss+xml"/><item><title>Agent 的 token 账单怎么管</title><link>https://realtime-ai.chat/posts/agent-token-cost/</link><pubDate>Thu, 30 Apr 2026 11:00:00 +0800</pubDate><guid>https://realtime-ai.chat/posts/agent-token-cost/</guid><description>Agent 上线后 token 成本最容易失控:多轮、长上下文、工具结果会成倍放大开销。这篇讲清钱花在哪、怎么定位大头,以及 prompt caching、上下文压缩、模型路由、步数熔断等可落地手段。</description><content:encoded><![CDATA[<p>先说一个数字:同样问&quot;帮我查一下这个 bug&quot;,发给聊天机器人和发给 Agent,token 消耗能差 <strong>50 倍</strong>。</p>
<p>聊天机器人就一来一回:你发一段、它回一段,结束。Agent 不一样——它跑的是一个循环:看任务、调工具、读文件、改代码、再检查。<strong>循环里的每一步,都要把到目前为止积累的全部上下文,重新发给模型一次。</strong></p>
<p>这就是 Agent 账单的根源。2026 年有人审计了 30 个在生产环境跑 Agent 的工程团队,一个 20 人的团队,单月 API 账单能冲到 11 万美元;用 Claude Code 或 Cursor 这类编码 Agent 的开发者,人均每月 400 到 1500 美元,失控的案例几天就烧掉 4000 美元以上。</p>
<p>更要命的是,这笔钱不是匀速烧的。Demo 跑得好好的,一上量就爆——大部分企业的 Agent 项目,在大规模铺开后的头 90 天里,实际花销会超出试点预算 4 到 11 倍。所以做 Agent,成本不是上线之后再优化的事,是设计时就得算进去的一笔账。</p>
<p>这篇把这笔账拆开:钱花在哪、怎么找到大头、有哪些真能省的手段、怎么设预算和熔断、怎么监控。</p>
<h2 id="钱到底花在哪">钱到底花在哪</h2>
<p>先建立一个最反直觉的认知:<strong>Agent 跑一个任务的成本,主要不是输出,是输入。</strong></p>
<p>模型 API 按 token 收费,输入和输出分开计价。聊天场景里,大家盯着输出看。但 Agent 不一样,它的成本大头在<strong>输入侧的重复计费</strong>。</p>
<p>为什么?因为对话历史会&quot;滚雪球&quot;。Agent 每调一次工具,就要把整段对话历史连同工具返回的结果,一起再发一次。一段已经积累到 10 万 token 的上下文,在后续<strong>每一次</strong>调用里,都按 10 万输入 token 收费——不是只收新增的那部分。一个跑到第 20 步的编码 Agent,光是文件读取塞进来的内容,单步输入就能超过 5 万 token,按 Sonnet 4.6 的价(每百万输入 token 3 美元)算,<strong>每一步 0.15 美元</strong>,二十步就是 3 美元,而这还只是一个任务。</p>
<p>把烧钱的来源列清楚,主要是这四个:</p>
<table>
  <thead>
      <tr>
          <th>成本来源</th>
          <th>为什么烧钱</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>多轮累积</td>
          <td>历史每轮都重发,N 步任务的输入约为单步的 N 倍量级</td>
      </tr>
      <tr>
          <td>长上下文</td>
          <td>大 system prompt、塞满的 RAG 检索结果,每次调用都全额计费</td>
      </tr>
      <tr>
          <td>工具结果</td>
          <td>一次文件读取、一次数据库查询返回几千 token,且永久留在上下文里</td>
      </tr>
      <tr>
          <td>多 Agent</td>
          <td>主 Agent 派生子 Agent,每个子 Agent 自己又是一个完整的 token 循环</td>
      </tr>
  </tbody>
</table>
<p>这四项里,<strong>多轮累积和工具结果是最隐蔽的</strong>——它们不在你写的 prompt 里,是 Agent 自己在运行时长出来的。你 review 代码时看不到,只有看账单才发现。</p>
<h2 id="先定位大头再动手">先定位大头,再动手</h2>
<p>不要凭感觉优化。第一步永远是<strong>按维度把成本拆开看</strong>,否则你很可能花两天去抠一个只占 5% 的环节。</p>
<p>至少要能按这几个维度归因(attribution):</p>
<ul>
<li><strong>按 Agent / 任务类型</strong>:哪类任务最贵?是&quot;代码重构&quot;还是&quot;简单问答&quot;?</li>
<li><strong>按步骤</strong>:成本是均匀分布,还是集中在某几步(比如某个返回巨量结果的工具)?</li>
<li><strong>按输入/输出</strong>:再确认一次,是输入贵还是输出贵——多数 Agent 是输入。</li>
<li><strong>按用户 / 会话</strong>:是不是 5% 的重度用户烧掉了 80% 的钱?</li>
</ul>
<p>这里有个观测层的坑要提前知道:Agent 的一次&quot;请求&quot;,在 trace 里会炸开成 8 到 15 个 span——API 调用、token 流式输出、embedding 查询、向量库检索、prompt 拼装、guardrail 检查、结果解析……普通 API 接口才 2 到 3 个。如果你的监控是按&quot;请求数&quot;做采样的,Agent 会瞬间把你的可观测性预算也撑爆。所以 Agent 的成本监控,<strong>得按 token 和按美元来记,不能只按请求数</strong>。</p>
<p>拆完之后你大概率会看到一个二八分布:某一两类任务、某一两个工具,吃掉了大半账单。先打这些点。</p>
<h2 id="真能省钱的几个手段">真能省钱的几个手段</h2>
<p>定位完大头,下面是 2026 年实测有效的手段,按&quot;性价比&quot;从高到低排。</p>
<h3 id="prompt-caching第一个要上几乎免费">prompt caching:第一个要上,几乎免费</h3>
<p>这是投入产出比最高的一项,优先级最高。</p>
<p>原理很简单:Agent 的上下文里有一大块是<strong>固定不变的前缀</strong>——system prompt、工具定义、few-shot 示例。每一步调用都把这块重新做一遍前向计算(prefill),纯属浪费。prompt caching 就是把这段固定前缀缓存住,后续调用直接命中缓存。</p>
<p>2026 年的价格,缓存命中的输入 token 只按基础价的 <strong>0.1 倍</strong>收费,也就是 9 折优惠——Anthropic 是这个价,GPT-5.4 现在也对齐到了 90% 的缓存折扣。对一个多轮 Agent,固定前缀往往占输入的一大半,命中率拉高之后,输入成本砍掉 50% 到 90% 是常态。</p>
<p>要拿到这个收益,有个纪律:<strong>别让缓存失效</strong>。缓存命中的前提是前缀逐字节一致。所以要把&quot;不变的东西&quot;放前面、&ldquo;会变的东西&quot;放后面——system prompt 和工具定义放最前,动态的对话历史和检索结果放后面。一旦你在 system prompt 里塞了个当前时间戳,整个缓存就废了。</p>
<h3 id="上下文压缩对付滚雪球的正面手段">上下文压缩:对付&quot;滚雪球&quot;的正面手段</h3>
<p>prompt caching 省的是固定前缀;滚雪球的对话历史得靠压缩。</p>
<p>最直接的做法是<strong>定期把历史压成摘要</strong>。Agent 跑了 30 步,前 20 步的细节其实没必要逐字带着——把它们总结成一段&quot;已完成:确认了 bug 在 X 模块,排除了 Y 假设&rdquo;,用摘要替换原始对话。Anthropic 在 2026 年 2 月放出的 Compaction API(beta)就是把这件事自动化:让模型自动总结、压缩对话历史,实现近乎&quot;无限&quot;的对话长度,不用手动裁剪或重开会话。</p>
<p>工具结果也要管。一次文件读取返回 5000 token,但 Agent 真正需要的可能只是其中一个函数。可以做的:工具返回时就<strong>截断或摘要</strong>,只保留相关片段;旧的工具结果在后续轮次里<strong>替换成一句占位符</strong>(&quot;[此处曾读取 config.py,已处理]&quot;)。</p>
<h3 id="按难度选模型别用大炮打蚊子">按难度选模型:别用大炮打蚊子</h3>
<p>不是每一步都需要最强的模型。</p>
<p>2026 年 Claude 三档价差很大:Haiku 4.5 是每百万 token 1/5 美元(输入/输出),Sonnet 4.6 是 3/15,Opus 4.7 是 5/25。<strong>Haiku 比 Sonnet 便宜 5 倍,比 Opus 便宜 25 倍。</strong></p>
<p>一个 Agent 流程里,真正需要顶配模型做复杂推理的步骤可能只占两三成。剩下的——意图分类、格式整理、判断&quot;任务完成了没&quot;、简单的工具参数填充——交给 Haiku 完全够用。做法就是按步骤的难度做路由(routing):简单步骤走小模型,复杂推理才升到 Sonnet 或 Opus。一个 500 输入 / 100 输出 的 Haiku 分类调用,成本大约 0.001 美元,几乎可以忽略。</p>
<h3 id="限制步数和递归给失控的循环装个闸">限制步数和递归:给失控的循环装个闸</h3>
<p>前面说企业 Agent 超预算 4 到 11 倍,原因之一就是<strong>没有上限的工具调用递归</strong>。</p>
<p>Agent 卡在一个错误里出不来,会一遍遍重试同一个工具;主 Agent 派生子 Agent,子 Agent 再派生……如果没有硬上限,一个本该 10 步的任务能跑成 200 步。必须设硬限制:</p>
<ul>
<li><strong>单任务最大步数</strong>(比如 25 步,到了就强制收尾或交还给人)</li>
<li><strong>多 Agent 的递归深度上限</strong>(比如最多 2 层)</li>
<li><strong>同一项的重试次数上限</strong>——一个实战配置是:同一项每天最多重试 3 次,两次重试之间至少隔 2 小时,不可重试的错误直接跳过,别困在死循环里</li>
</ul>
<h3 id="缓存工具结果--batch能省就省">缓存工具结果 + batch:能省就省</h3>
<p>两个补充手段。</p>
<p><strong>缓存工具结果</strong>:很多工具调用是确定性的、可重复的——查同一个文档、跑同一个查询。给工具调用层加一个缓存,相同输入直接返回上次结果,连模型调用都省了。语义缓存(semantic cache)更进一步,语义相近的请求也能命中。</p>
<p><strong>batch(批处理)</strong>:如果你的任务不需要实时返回——离线评测、批量数据标注、夜间跑的报告——走 Batch API,输入输出都打五折。把 prompt caching 的 9 折和 batch 的 5 折叠加,极端情况能把成本压到原来的 5%。代价是异步,最长可能等 24 小时,所以只适合离线场景。</p>
<p>下面这张图是这些手段的处理顺序:</p>
<pre class="mermaid">flowchart TD
  A[Agent 收到一步请求] --> B{固定前缀?}
  B -->|是| C[命中 prompt cache<br/>输入按 0.1x 计费]
  B -->|否| D[正常计费]
  C --> E{这步难度?}
  D --> E
  E -->|简单| F[路由到 Haiku]
  E -->|复杂| G[路由到 Sonnet/Opus]
  F --> H{工具结果是否过大?}
  G --> H
  H -->|是| I[截断/摘要后入上下文]
  H -->|否| J[直接入上下文]
  I --> K{历史是否过长?}
  J --> K
  K -->|是| L[压缩成摘要]
  K -->|否| M[继续]
</pre><h2 id="给-agent-设预算和熔断">给 Agent 设预算和熔断</h2>
<p>省钱手段是&quot;开源节流&quot;里的节流。但 Agent 还需要一道<strong>硬性的财务闸门</strong>——再怎么优化,也得有个东西在它失控时直接把它停掉。</p>
<p>这就是成本熔断(cost circuit breaker):预设一个开销上限,Agent 触到上限就强制中断,而不是任由它把账单跑飞。</p>
<p>预算定多少?别拍脑袋。<strong>先量,再定。</strong> 取一个有代表性的两周样本,统计每个完整任务消耗 token 的 p50 和 p95,然后把上限设在 <strong>p95 的 1.5 倍</strong>。这个值能覆盖正常的波动,又能在真正异常时及时触发。</p>
<p>熔断要分层设,至少三层:</p>
<table>
  <thead>
      <tr>
          <th>层级</th>
          <th>触发条件</th>
          <th>动作</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>单任务</td>
          <td>单个任务 token 超 1.5× p95</td>
          <td>中断该任务,记录,交还给人</td>
      </tr>
      <tr>
          <td>单用户/会话</td>
          <td>用户当日累计超额度</td>
          <td>拒绝新请求或降级到小模型</td>
      </tr>
      <tr>
          <td>全局</td>
          <td>全组织当日总花销超阈值</td>
          <td>告警 + 限流,保住核心业务</td>
      </tr>
  </tbody>
</table>
<p>关键点:熔断的动作必须是<strong>确定性的、自动执行的</strong>。运行时的预算治理需要两样东西——明确的限额,加上确定的补救动作。光设个数字、靠人看告警手动去关,等你看到消息,钱已经烧完了。</p>
<h2 id="监控该怎么做">监控该怎么做</h2>
<p>最后是监控。没有监控,前面所有的优化都是一次性的——这个月省下来,下个月一个新功能上线又涨回去,你还不知道。</p>
<p>Agent 的成本监控,要盯这几个指标:</p>
<ul>
<li><strong>每任务成本(cost per task)</strong>:最核心的北极星指标。优化做对了,这个数应该往下走。</li>
<li><strong>缓存命中率</strong>:prompt caching 的命中率。如果某次发布后它突然掉下来,八成是有人改了 system prompt 把缓存搞失效了。</li>
<li><strong>每任务平均步数</strong>:悄悄往上爬,通常意味着 Agent 开始绕路或卡循环。</li>
<li><strong>token 成本归因</strong>:持续按 Agent、按用户、按任务类型拆,二八分布的那个&quot;二&quot;要一直盯着。</li>
<li><strong>熔断触发次数</strong>:偶尔触发是正常的安全网;频繁触发说明预算设低了,或者真有 Agent 在失控。</li>
</ul>
<p>把这些接进你现有的可观测性系统,设好告警。一个务实的目标:认真做完一轮成本优化的团队,通常能在 30 天内把 Agent 成本降低 55% 到 75%。</p>
<h2 id="一份上线前的清单">一份上线前的清单</h2>
<p>把上面的东西收成一张可勾选的表,Agent 上线前过一遍:</p>
<ul>
<li><input disabled="" type="checkbox"> 成本能按 Agent、用户、任务类型、步骤拆开归因</li>
<li><input disabled="" type="checkbox"> 固定前缀(system prompt、工具定义)放在最前,且已开 prompt caching</li>
<li><input disabled="" type="checkbox"> system prompt 里没有时间戳之类会破坏缓存的动态内容</li>
<li><input disabled="" type="checkbox"> 对话历史有压缩/摘要机制,不会无限滚雪球</li>
<li><input disabled="" type="checkbox"> 工具返回结果会截断或摘要,旧结果会被占位符替换</li>
<li><input disabled="" type="checkbox"> 简单步骤路由到小模型,只有复杂推理才上顶配</li>
<li><input disabled="" type="checkbox"> 设了单任务最大步数、多 Agent 递归深度、重试次数上限</li>
<li><input disabled="" type="checkbox"> 确定性的工具调用结果有缓存</li>
<li><input disabled="" type="checkbox"> 离线、非实时的任务走了 Batch API</li>
<li><input disabled="" type="checkbox"> 三层熔断(单任务/单用户/全局)都已配置,且动作是自动执行的</li>
<li><input disabled="" type="checkbox"> 预算阈值是基于 p95 实测数据定的,不是拍脑袋</li>
<li><input disabled="" type="checkbox"> 每任务成本、缓存命中率、平均步数都在监控里,有告警</li>
</ul>
<p>最后说一句优先级。如果时间有限,先做三件事:<strong>开 prompt caching、设步数上限、配单任务熔断</strong>。这三样投入小、见效快,而且能挡住最致命的那种&quot;一夜之间烧掉几千美元&quot;的事故。上下文压缩、模型路由这些是细水长流的优化,可以上线之后慢慢调。</p>
<p>Agent 的账单不会自己变小。但只要你知道钱花在哪、装好了闸门,它至少不会变成一个你不敢看的数字。</p>
<hr>
<p>参考资料:</p>
<ul>
<li><a href="https://leanopstech.com/blog/agentic-ai-cost-runaway-token-budget-2026/">AI Agents Burn 50x More Tokens Than Chats — LeanOps</a></li>
<li><a href="https://fast.io/resources/ai-agent-token-cost-optimization/">AI Agent Token Cost Optimization: Complete Guide for 2026 — Fastio</a></li>
<li><a href="https://dev.to/waxell/ai-agent-context-window-cost-the-compounding-math-your-architecture-is-hiding-2227">AI Agent Context Window Cost: The Compounding Math — DEV Community</a></li>
<li><a href="https://www.obviousworks.ch/en/token-optimization-saves-up-to-80-percent-llm-costs/">Token optimization 2026: Saving up to 80% LLM costs — Obvious Works</a></li>
<li><a href="https://fountaincity.tech/resources/blog/ai-agent-cost-circuit-breaker/">The Cost Circuit Breaker: Financial Controls for Production AI Agents — Fountain City</a></li>
<li><a href="https://blogs.oracle.com/ai-and-datascience/runtime-budget-guardrails-agentic-ai">Runtime Budget Guardrails for Agentic AI — Oracle</a></li>
<li><a href="https://www.truefoundry.com/blog/llm-cost-attribution-agentic-cicd">Agentic Token Explosion: Attribute, Budget, and Control LLM Costs — TrueFoundry</a></li>
<li><a href="https://oneuptime.com/blog/post/2026-03-07-ai-agents-breaking-observability-budget/view">AI Agents Are Breaking Your Observability Budget — OneUptime</a></li>
<li><a href="https://platform.claude.com/docs/en/about-claude/pricing">Claude API Pricing — Anthropic Docs</a></li>
<li><a href="https://tokenmix.ai/blog/openai-batch-api-pricing">OpenAI Batch API 2026: 50% Off Every Model — TokenMix</a></li>
</ul>
]]></content:encoded></item></channel></rss>