Claude CodeCodex CLIOpenCode

如何给 AI 编程工具设置预算预警?

一晚上不小心被 Codex 烧 50 美元,第二天看账单瞠目结舌——这种事预算预警能拦住。这篇讲清各 provider 自带的预算限制、第三方监控方案、以及一个轻量本地方案。

去年圣诞前夜我让 Codex 跑一个 Agent 任务,关掉电脑去吃饭。回来 3 小时后看账单——47 美元。Codex 进入了一个死循环,跑了 200+ 次工具调用最终给出错误结果。

那次之后我装了三层预算预警。这篇讲清都怎么装。

Provider 自带的预算限制

OpenAI:在 platform.openai.com → Billing → Usage Limits 设置月度硬上限。超过自动停止 API。预警阈值(80%、90%、100%)可以发邮件。

Anthropic:在 console.anthropic.com → Billing 类似设置。可以设月度硬上限。

Google AI(Gemini):在 Google Cloud Console → Billing → Budgets 设置。Google 这个稍复杂,但功能最全(可以按 service、按 label 设阈值)。

智谱 GLM / MiniMax / 国产 provider:多数提供后台配额限制。

设置 provider 自带限制是第一道防线——必装。我建议设两个:

  • 月度预算:不要太低(不然影响正常工作),按你历史月支出 × 1.5
  • 日预算:按月预算 / 20(按工作日)

但 Provider 限制有局限

1. 颗粒度粗

Provider 只能限制按 API key。如果你一个 key 同时跑 Claude Code、Codex、OpenCode——超 budget 时所有工具都停。可能你想停 Codex(跑岔了的那个),但也把 Claude Code 停了。

2. 反馈延迟

Provider 的 usage 数据更新有 15-60 分钟延迟。等你收到 80% 预警邮件时——可能已经超 100% 了。

3. 只能停,不能动作

预警只能发邮件 / 停 API。没法触发"切到便宜模型"或"压缩 context"这种灵活动作。

第三方监控方案

LangSmith / Langfuse / OpenLLMetry——这类专业 LLM 监控工具能做到调用粒度的实时监控。但配置麻烦,要在每次调用插桩。普通开发者搭这种系统不现实。

Helicone——proxy 模式。把你的 API 请求路由经过 Helicone 再到 provider。能做到分钟级监控。但又一层 proxy 引入延迟,且对私密度敏感的项目不合适。

我用的本地方案

我自己用的是 Vibe Usage 的实时面板。它读各工具本地日志,每分钟同步——能做到分钟级反馈。

我设置了三个监控规则:

规则 1:日总消耗超过 X

每天上限按月预算 / 20。如果某天 token 消耗超过这个——立刻通知(macOS 通知中心)。

规则 2:单 session 消耗速率超过 Y

最容易被 Agent 死循环烧的就是这个——不是总量超,而是速率突然变快。如果某 session 在过去 5 分钟消耗了相当于平时一小时的量——通知。

规则 3:单 session 累计超过 Z

如果某个会话累计超过 200 万 token——提醒你 compact 或退出。

Vibe Usage 自带的 alert 功能能配前两个,第三个我自己写了一个 cron 脚本去查。

怎么避免"误报骚扰"

预警最容易遇到的问题是疲劳——预警太频繁会让你忽略真正的危险。

我的规则:

  • 日预算预警:只有真的逼近 hard limit 才告警(比如 90%)。不要 50% 就告警。
  • 速率预警:阈值要保守(你正常 5 分钟 5 万 token,告警阈值设 30 万——明显异常才响)。
  • 累计预警:每天最多触发一次,避免重复响。

一个最重要的"事前预警"

最有效的预警不是"超 budget 提醒",是事前的 token 预估

每次跑大任务前,问自己:

  • 这个任务在历史上单次消耗中位数是多少?(看 Vibe Usage 上你过去类似任务的数据)
  • 我的 budget 还剩多少?
  • 失败后能不能重试?

如果答案是"任务会消耗 30% 月预算 + 失败率 30%"——你应该把任务拆小,不是直接开跑。

Vibe Usage 帮你建立这种"任务消耗的群体直觉"——你看了 100 个类似任务的数据,自然就会判断"这个任务该不该开始跑"。

Codex 死循环的特殊预警

Codex 是最容易"无声烧钱"的工具。我专门为 Codex 设了预警:

  • 单次 Codex 任务超过 30 分钟 → 通知
  • Codex session message 数超过 200 → 通知
  • Codex 单 session token 超过 500 万 → 通知

任何一个触发,立刻去看 Codex 在干什么。多数时候它已经走偏了,立刻 Ctrl+C 停。

总结:三层防御

  1. Provider hard limit——硬封顶,绝对不会超
  2. 本地实时监控(Vibe Usage 这种)——分钟级反馈
  3. 任务前预估——养成习惯,开跑大任务前心里有数

第二层是免费的——装 Vibe Usage 就有了。但很多人省了这一步,第一层等收到邮件已经晚了,第三层从来没养成习惯——结果就是出事再后悔。

相关阅读

相关阅读

如何给 AI 编程工具设置预算预警?