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

一个月写码烧了 20 亿 token:模型本身只花 68 美元,一夜「凭感觉写码」却花了 150 美元

一、发生了什么

9 月底,开源 CMS Wagtail 核心团队的 Thibaud Colas 在官方博客发复盘:整个 9 月,团队所有编码只用开源小模型 GLM 5.3 Flash。结果全月消耗约 20 亿 token,只有一半落在目标模型上——挑战形式上「失败」了,作者自评「task failed successfully」。复盘登上 Hacker News 首页,Simon Willison 也写了跟进(来源:Wagtail 官方博客、Simon Willison 博客、HN)。

二、技术拆解

上半月所有工作都跑在 GLM 5.3 Flash 上:核心代码、客户站点、UI 任务、文档、评测。100 万上下文加原生视觉输入,接得住长任务和截图。这半月账单:68 美元、约 4 度电、365 克碳排放(Wagtail 官方博客口径,未独立核验)。模型本身,作者的评价是「非常全面」。

真正值得琢磨的是另外 10 亿 token 去了哪,三条泄漏路径性质完全不同:

泄漏路径规模代价性质
一夜「凭感觉写码」选错模型 4.5 亿 token 150 美元 + 5 度电 治理失败
服务商容量不足,被迫换模型 10 亿的一部分 未披露 供应链波动
调研与跑基准 剩余部分 计划内开销 必要成本

第一条最扎心:团队为一个 MCP 服务器原型开了整夜无人值守的会话,结果挂在了同家族的「非 Flash 版」GLM 5.3 上——价格高一个量级,一夜烧掉 150 美元,是全月预算的 2.2 倍。作者自估:1/5 成本就能拿到同样结果(Wagtail 官方博客)。

第二条是开源模型的固有属性:权重开放 ≠ 随取随用,推理依赖第三方服务商。GLM 5.3 Flash 恰好卡在 Wagtail 任务「帕累托前沿」最前端,用的人多、服务商容量不及大厂,性能退化后临时切到 DeepSeek V4.1 Flash、Qwen 3.8 Flash。他们顺路跑的 14 模型基准也有价值:DeepSeek V4.1 Flash 以 95% 准确率、每任务 0.09 美元排第一(Wagtail 博客预览数据)——这种「每任务成本」记法,Holo4 那篇里 0.08 对 8 美元是同一套账。

第三条被多数人忽略,但恰恰最该学:账本单位错了。全月能耗约 35 度,是 10 度目标的 3.5 倍——这个缺口在 token 数里根本看不出来。

三、我的判断

这个案例的结论不是「开源小模型不行」——模型整个月表现都很好,失败的是花钱的治理结构。它暴露了三件教程不常写的事。

第一,Agent 会话是预算破坏力最强的调用形态。传统 API 一次请求一次结算,天然好控;Agent 无人值守会话能连跑几小时,中途还会换模型——选错的代价,可能只是模型名里少写一个后缀。Simon Willison 的结论:凡是 Agent 摸得到的计费服务,默认就该有硬性预算上限(来源:Simon Willison 博客)。

第二,单价便宜和总账便宜是两回事。之前写价格战那篇时说过,看价格表不能只看单价那行。看用量也不能只看 token,要把美元和电费记在旁边。便宜的单位乘上失控的用量,等于什么都没省。

第三,开源模型的供应链比想象中长一层。选型公式里除了能力、价格,还得写上「能稳定跑在几家服务商上、冗余够不够」。开源生态同档模型确实能互相顶上,但「没想到要切换」本身就是治理缺口。

四、对开发者的启示

三件事本周就能做:

  • 预算硬顶放底层:给每个 Agent 会话、每把密钥设支出上限,超限熔断而非告警;R&D 与生产分开立账。
  • 双账本并行:token 和成本/能耗各记一本,每周对一次。只用 token 衡量效率,等于用码表衡量油耗。
  • 选错模型的兜底:同家族不同档位的模型用配置隔离,会话启动时打印当前模型与单价——一行日志,省一夜账单。
  • 预算硬顶的最小实现(先记账、再调用、超限即断):

    import json, os

    BUDGET_USD = 50.0 # 单会话硬顶,按上月账单 P95 设
    LEDGER = "session_spend.jsonl"

    def session_spend() –> float:
    if not os.path.exists(LEDGER):
    return 0.0
    with open(LEDGER, encoding="utf-8") as f:
    return sum(float(json.loads(line)["usd"]) for line in f if line.strip())

    def guarded_call(prompt: str, model: str, est_tokens: int) –> str:
    price = MODEL_PRICES[model] # 每 1M token 美元价
    est = est_tokens * price / 1_000_000
    if session_spend() + est > BUDGET_USD:
    raise RuntimeError(f"预算熔断: {session_spend():.2f} / {BUDGET_USD} USD")
    print(f"[model={model}] price={price} USD/1M tok")
    resp = call_provider(prompt, model) # 内部指向 https://api.example.com/v1
    with open(LEDGER, "a", encoding="utf-8") as f:
    f.write(json.dumps({"model": model, "usd": resp.usage_cost}, ensure_ascii=False) + "\\n")
    return resp.text

    完整自查清单放在文末,可以直接拿走,周末对自己的 Agent 配置逐项过一遍。

    三问三答

    Q:flash 档模型是什么定位? 参数小、吞吐高、单价低的模型家族(GLM Flash、DeepSeek V4.1 Flash 这类)。Wagtail 的结论:扛得住 50% 以上的日常生产编码,长链路调研再留给更大的模型。

    Q:一个会话怎么可能烧掉 150 美元? 无人值守长会话、上下文越滚越大、挂在了贵数倍的模型上,三个条件叠加。

    Q:预算上限设多少合适? 取上月账单 P95 做单会话硬顶,「生产 / R&D」分开设月度总顶。

    附:AI 支出预算自查清单(直接拿走)

    P0 · 熔断(没有就是裸奔)

  • 每个 Agent 会话有单次支出硬顶,超限熔断而非告警
  • 每把服务商密钥有月度预算上限,超限拒绝请求
  • 计费按「美元」记录,不只用 token 数
  • P1 · 记账(看不见就管不住)

  • 用量看板按「模型 × 项目 × 人」三个维度拆分
  • 无人值守会话的每步调用留痕,事后可回放
  • 每周固定 15 分钟过一遍账单异常项
  • P2 · 结构(把人为失误变难)

  • 模型档位写进配置并随会话打印,不允许凭记忆手填模型名
  • 同家族不同档位的模型(Flash / 非 Flash)不允许出现在同一配置文件
  • R&D 实验与生产任务分开计费、分开设顶
  • 关键依赖模型准备至少一个同档备选,切换脚本提前演练
  • 对照完 10 条,至少把第 1、2 条补上——那是 150 美元买来的教训。

    结尾几句

    昨天写欧洲开源的 Kolibri时说,78B 只激活 3.46B,是在参数端做省法;今天这篇是在用量端做省法。阶跃 Step 5 那篇的「激活参数定成本」两本账,到这里进化成「模型 × 用量 × 治理」三本账,三元压缩那篇也是同一方向。

    这个专栏每天一篇 AI 解读,关注不迷路。

    你们团队的 Agent 会话现在有支出硬顶吗?设的是告警还是熔断?


    专注 AI 工程化实践与出海外贸技术

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 一个月写码烧了 20 亿 token:模型本身只花 68 美元,一夜「凭感觉写码」却花了 150 美元
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!