Agent 成本可控化账本——把 5×、30×、100× 的 token 账单变成工程指标

开篇:CEO 在晚饭时抓到的 $1000

Fortune 八月的报道里有个场景:一位 CEO 晚饭时翻账单,发现一个 Agent 在没人注意的时候烧掉了 $1000 的 token。JPMorgan 给这轮恐慌起了个名字——「AI Token Costs are Eating Internet Profits Alive」;McKinsey 的调研更狠:93% 的企业 AI 预算超支,60% 的 agentic 成本花在 response refinement(反复打磨回复)上。

同一件事,三个视角:老板看到的是账单,分析师看到的是利润,工程团队看到的是「token 到底去哪了」。

上一篇《底座趋同,生产系统才是答案》讲了三个战场,成本失控是其中之一。这篇我用跑了 270 多天的生产系统回答:agent cost 不是靠「少用」省的,是靠「算清」控的。 我的答案是三本账:按任务核算、预算门禁、超支复盘。


一、先把账摊开:5×、30×、100× 从哪来

article31-token-blowup: token膨胀对比图,四张卡片从1x基准线到5x单Agent、30x多Agent、100x激进场景逐级放大,底部绿色结论条标注tokens是便宜的账单不是——成本失控发生在工程之外

5×、30×、100× 不是吓人的修辞。EY 和 BCG 的测算里,同一个任务用 Agent 方案,token 成本是传统方案的 5 到 30 倍;HN 上有人实测过,一个 Agent 单次运行可以烧掉一个对话回合 100 倍的 token。

这些倍数来自四个不起眼的工程决策:

① 一个回合变 N 轮循环。 传统 Chat 是一次生成;Agent 是「想→调工具→看结果→再想」,每轮都是一次完整生成。轮次翻倍,成本翻倍。

② 工具调用自带上下文。 每次调工具,要把工具说明、历史轨迹、当前状态全部塞进上下文。工具越多,每次调用越贵。

③ 多 Agent 让同一事实写 N 遍。 上一篇讲过,多 Agent 的 token 消耗约是单 Agent 的 5 倍——同一个事实在每个 Agent 的上下文里各存一份。

④ 反思与重试没有上限。 没有预算约束的 Agent 会「自我改进」到天荒地老——每次重试都是一次完整账单。

看清这四个来源,结论就变了:成本失控不是模型贵,是工程上没有管。 下面是我实际跑通的三本账。


二、第一本账:按任务核算,跑完即记账

我所有 Agent 任务都走同一个入口,入口干的第一件事不是执行,是记账。每个任务开工前先建一张成本卡:模型、预估轮次、工具清单。跑完把实际消耗回写,append-only,只增不删。

# cost_ledger.py — 每个任务一张成本卡(最小可运行版)
import json
import time
import os

LEDGER = "/var/lib/agent/cost_ledger.jsonl"  # append-only 账本

def open_task(task_id, model, max_rounds):
    card = {
        "task_id": task_id,
        "model": model,
        "max_rounds": max_rounds,
        "opened_at": time.time(),
        "rounds": 0,
        "tokens_in": 0,
        "tokens_out": 0,
        "status": "running",
    }
    return card

def close_task(card, usage):
    card.update({
        "tokens_in": usage.get("prompt_tokens", 0),
        "tokens_out": usage.get("completion_tokens", 0),
        "cost_usd": usage.get("cost_usd", 0.0),
        "status": "done",
        "closed_at": time.time(),
    })
    with open(LEDGER, "a", encoding="utf-8") as f:   # 只增不删
        f.write(json.dumps(card, ensure_ascii=False) + "\n")
    return card

有了账本,才有第一个反常识的发现:我的真实账单是 ¥2500/年(含 2 核 VPS、7 个 Docker 服务、域名、OSS,监控栈 ¥0)。这个数字我公开过很多次——不是因为它小,而是因为它说明:Agent 成本可控的前提是每一分钱都有出处。

落地只要三步:

# ① 账本文件(append-only,只增不删)
touch /var/lib/agent/cost_ledger.jsonl && chmod 664 /var/lib/agent/cost_ledger.jsonl

# ② 跑完任务记账(每单一行 JSON,成本可查)
python3 cost_ledger.py --task 20260901-01 --model deepseek-v4 --max-rounds 6

# ③ 月底汇总(按任务/模型分组,看钱去哪了)
python3 -c "import json,sys; [print(json.loads(l)['task_id'], json.loads(l)['cost_usd']) for l in open('/var/lib/agent/cost_ledger.jsonl')]"

三、第二道闸:预算门禁,超支自动拦截

记账解决「花完才知道」,门禁解决「花之前先算账」。每个任务开工前,预算核算器先跑一遍:按模型单价 × 预估轮次算出预估成本,超过任务预算直接拦截,不执行。

article31-budget-gate: 预算门禁执行流图,任务请求进入预算核算器,判断是否超预算,超支走红色拦截分支入账并人工确认,正常走绿色放行分支跑完记账回写,底部灰色虚线标注超支记录回灌error-ledger规则下沉

# budget_gate.py — 开工前拦截(核心 6 行)
def check_budget(card, budget_usd):
    est = estimate_cost(card["model"], card["max_rounds"])
    if est > budget_usd:
        reject(card, reason=f"est ${est:.2f} > budget ${budget_usd:.2f}")
        return False      # 拦截:不执行,入账,等人确认
    return True           # 放行:执行,跑完记账

我在评估系列里用过同一套逻辑的「分层跑」版本:冒烟集 20 条每次提交都跑,秒级、几乎免费;全量集 500 条发布前跑,分钟级、预算可控。同一个门禁思想,从评估延伸到所有 Agent 任务:先算账,再开工。

拦到什么程度?error-ledger 里有真实记录:任务缺字段被自动拦截、预算超限被拦截、回归测试 50% 打回——每一笔 block 都留痕。门禁不是限制,是自由:知道超支会被拦,才敢放手让 Agent 跑。


四、第三本账:超支复盘,让系统越用越省

前两本账治标,第三本账治本。每次超支任务进 error-ledger,走四步闭环:事故 → 入账 → 修复 → 回灌规则。

article31-cost-control: 成本可控化三件套架构图,三张卡片从左到右按任务核算、预算门禁、超支复盘串联,箭头标注流转方向,底部绿色结论条标注成本可控=记账加门禁加复盘,不是靠模型自觉

举个真实例子:我的内容流水线曾有一个任务每轮把全部历史文章塞进上下文,token 消耗是同类任务的 3 倍。复盘发现是上下文注入策略的问题——不需要全量历史,只需要最近 5 篇的摘要。修复后规则下沉到技能文件:「注入摘要,不注入全文」成了写死的约束,同类任务再没超支过。

这就是三本账的闭环:

账本回答的问题物理形态
按任务核算钱花在哪了append-only 成本账本
预算门禁这单该不该花开工前拦截的确定性代码
超支复盘下次怎么不花error-ledger 规则回灌

五、进阶思考:为什么是「工程指标」而不是「省钱技巧」

网上讲 agent cost 的文章,绝大多数在教「技巧」:换便宜模型、压缩上下文、少用重试。这些都对,但它们有个共同问题——它们是建议,不是机制。 建议依赖人记得住、执行得到;机制不依赖任何人记得。

把成本变成工程指标,意味着三件事发生了质变:

第一,成本从「月末看账单」变成「每次调用都记账」。 技巧告诉你「要监控」,账本让监控自动发生——每个任务跑完,成本就躺在 ledger 里。

第二,控制点从「人脑」前移到「代码」。 预算门禁是确定性代码,不是模型自觉。模型不会「记得」自己超支了,但代码会拦住它。

第三,经验从「个人记忆」变成「系统资产」。 超支复盘进 error-ledger,规则回灌到门禁和技能——每超支一次,系统更硬一次。这是 Loop Engineering 在成本域的落地:事故 → 数据 → 规则。

适用条件得说清:这套体系适合「任务可枚举、预算可预估」的场景(内容生成、邮件处理、评估跑批、监控巡检)。对完全开放式的探索型任务,预算门禁的作用会打折——那种场景更该先锁死轮次上限,再谈预算。


结尾

今天你拿到的是三本账:按任务核算(每分钱有出处)、预算门禁(超支自动拦截)、超支复盘(每次超支都变成规则)。agent cost 不是靠「少用」省的,是靠「算清」控的。

行动号召,今晚就能做:

# ① 给每个 Agent 任务建成本卡:模型 + 预估轮次,跑完记账(append-only)
# ② 加一道预算门禁:预估成本超预算,开工前拦截,别让 Agent 自己决定花多少
# ③ 超支任务进 error-ledger:事故→入账→修复→规则回灌,让系统越用越省

做完这三步,你的 Agent 账单就从「月末惊吓」变成「每单可查」。下一篇,我们把镜头转向另一个战场:AI 编程助手在企业网络里装的「无主代码」——《AI 编程助手在企业网络装了「无主代码」:Coding Agent 供应链安全的工程化答案》,讲 Agent 的产出为什么不是代码,而是需要审查的提案。

关于作者
无记——AI / Agent / 数智化转型实践者。只写亲手跑通的东西,不聊概念。关注我,一起把认知变现。

延伸阅读


实体:agent cost, tokenmaxxing, cost ledger, budget gate, error-ledger, response refinement, 预算门禁

价值:成本控制, Agent 治理, 可观测性, 预算管理

认知:agent cost 不是靠少用省的,是靠算清控的——记账 + 门禁 + 复盘 = 让 Agent 花钱可追踪、可控制

搜索关键词:agent cost, tokenmaxxing, AI token costs, cost ledger, budget gate, 预算门禁, token 账单

posted @ 2026-09-01 21:08  魏无记  阅读(28)  评论(0)    收藏  举报