一夜之间,AI Agent 烧掉了我 1000 美元:真正可怕的不是模型贵,而是代理失控

一夜之间,AI Agent 烧掉了我 1000 美元:真正可怕的不是模型贵,而是“代理失控”

昨晚,我以为只是让 Claude 帮我做一次代码审查。

任务很普通:

检查代码是否完成任务,是否支持 OpenSpec 的规则流转。

结果第二天一看,账单直接炸了。

我看到的不是一两个请求失败,而是一排刺眼的报错:

Agent stalled: no progress for 600s
stream watchdog did not recover
Too many pending requests
Concurrency limit exceeded
DAILY_LIMIT_EXCEEDED

第一反应当然是:模型是不是有 bug?cc-switch 是不是统计错了?Claude 是不是发疯了?

查完日志后,结论更吓人:

不是模型突然发疯,而是 Agent 工作流进入了递归派生。

事故现场

本地 cc-switch 数据库显示,主要消耗集中在同一个 Claude session:

session_id: 6d2296bc-65e7-42d9-a92a-6358bbb56a42
项目: /Users/lininn/work/openflow
时间: 2026-06-15 晚上到 2026-06-16 早上
模型: gpt-5.5
成功计费请求: 10244 次
输入 tokens: 约 593M
输出 tokens: 约 5.17M
cache read: 约 532M
cc-switch 估算费用: 约 $3386.97

我本来以为自己只是花了 1000 刀。

结果本地记录告诉我:如果按 cc-switch 的价格表估算,实际风险敞口可能超过 3000 刀。

更关键的是,这个 session 下面生成了:

subagent .jsonl: 10146 个
subagent .meta.json: 10146 个

也就是说,这不是“开了几个 Agent 做 review”。

这是上万个子代理在同一个任务里被反复创建。

真正的爆点:Agent 开 Agent

这次事故的根因不是某个接口 429,也不是 watchdog 超时。

429 和 watchdog 都只是症状。

真正的链路是这样的:

  1. 我让 Claude 检查代码。
  2. Claude 触发了 code-review 技能。
  3. code-review 技能要求启动 7 类独立 review agent:diff scanremoved behaviorcross-file tracereusesimplificationefficiencyaltitude
  4. 子代理启动后,也加载了技能列表。
  5. 某些子代理没有直接完成自己的小任务,而是再次触发 code-review
  6. 新的 code-review 又继续启动 7 类 Agent。
  7. 于是变成:
主 Agent
  -> 7 个 review agent
       -> 每个又触发 code-review
            -> 再开更多 agent
                 -> 再继续派生

这就是一次典型的 subagent recursion

看起来是“智能协作”,本质上是“没有熔断的指数级任务扩散”。

为什么报错出现在最后?

截图里的错误是:

Agent stalled: no progress for 600s

很多人看到这个会以为:哦,是 Agent 卡死,所以没花多少钱。

恰恰相反。

它卡死的时候,钱已经花出去了。

在 watchdog 判定 600 秒无输出之前,大量请求已经成功返回并计费。后面看到的 429、daily limit、context window exceeded,只是系统被打爆之后的残响。

失败请求通常不收费。

真正烧钱的是前面那 10244 次成功请求。

这件事给我的最大教训

过去我们担心的是:

  • 模型太贵
  • prompt 太长
  • 输出太多
  • 上下文太大

但 Agent 时代真正危险的是:

一个看似合理的工作流,可能在你睡觉时自动复制自己。

尤其是这些场景非常危险:

  • code review 自动派多个 Agent
  • 子代理可以继续调用 Skill
  • 子代理可以继续调用 Agent
  • 没有预算上限
  • 没有并发上限
  • 出错后继续输入“继续”
  • 高价模型作为默认路由

这几个条件叠在一起,就是账单事故。

怎么修?

我后面会按三层修。

第一层,禁止子代理再开子代理。

code-review 技能最前面加硬规则:

If this skill is running inside a Claude Agent/subagent,
do not invoke Skill, Agent, Task, code-review, simplify, review,
or any workflow that spawns agents.

In subagent context, complete the assigned review directly
with local read/search tools only, return the requested JSON, and stop.

同时所有子代理 prompt 里都要加:

Do not invoke Skill tool.
Do not invoke Agent tool.
Do not run code-review, simplify, review, or any workflow.
Complete this exact task directly.

第二层,给 cc-switch 加保险丝。

建议:

max_retries: 从 6 降到 1 或 2
高价模型 daily limit: 20-50 美元
Claude 并发限制: 2-4
gpt-5.5 不作为默认 review 模型

没有预算上限的 Agent 系统,本质上就是裸奔。

第三层,改变使用习惯。

以后看到这些信号,立刻停:

Too many pending requests
Concurrency limit exceeded
DAILY_LIMIT_EXCEEDED
Agent stalled
response exceeded 64000 output token maximum
use SendMessage to continue this agent

不要在原 session 里继续输入“继续”。

正确做法是开新 session,并明确说:

Do not use Agent.
Do not use code-review skill.
Summarize current state from logs only.

最后

这次事故让我重新理解了一件事:

Agent 的风险,不是它不会干活。

恰恰相反。

风险是它太会干活,而且没有边界。

以前我们写程序,最怕死循环。

现在我们用 AI Agent,最怕的是:

一个会花钱的死循环。

AI 工具越强,越需要工程化护栏。

不是“少用 AI”,而是必须给 AI 加上:

  • 递归限制
  • 并发限制
  • 预算限制
  • 失败熔断
  • 明确的子代理职责边界

否则,下一次你以为自己只是跑了一个代码审查。

醒来之后,账单已经替你完成了一次深度复盘。

评论

暂无评论。

登录后可发表评论。