案例课 · 运营 · 2026 年 10 月

花钱有数:每一笔会花的钱,都有指标、有上限、有人管

这门课用 AIDC 自己的真实案例,讲怎样给一家用云和大模型的公司建一套费用控制系统。你会看到我们从哪里开始、发现了什么、改了什么。

一句话结论监控我们早就有:每天采三家云的账单,每天跑 9 条检查。缺的是两样:上限(到线就停的那种)和有人关单。10-13 盘点时,12 个按量付费的账户里只有 3 个有真正的硬上限;同一条告警连续报了 5 天,没有人处理。当天补上平台这边的每日上限、核实了 GitHub 的上限以后,变成 5 个。
10 月已经花了
$1,870
10-01 到 10-13,6 个有数据的账户
按量付费的账户
12
云、数据库、缓存、模型、邮件……
有硬上限的
5 / 12
上限覆盖率 25% → 42%
同一告警连续
5 天
一台客户箱子根盘 93%
预测被尖峰拉高
1.5×
Vercel:$807 → 按新算法 $555

数字来自 2026-10-13 生产的只读查询。金额是美元。客户用「客户 A」「客户 B」代替。

1先认识这些词

一个词只有一个意思

后面每一节都用这些词。我们不换同义词。

付费账户
付钱给一家服务商的一个账户。例:一个 AWS 账号、一个 Vercel 团队、DeepSeek 的一个充值账户。
计费项
账单上的一行。例:Vercel 的「构建 CPU 分钟」、AWS 的「EC2 小时」。
驱动量
产生这一行钱的动作。例:一次构建、一次模型调用、一台机器跑一小时。
指标(KPI)
一个要盯住的数,带三条线:达标线、越线线、0 分线。
预算
一个月打算花多少。超了只发通知,服务不停。
上限
到线就停:服务商停服务,或者平台拒绝调用。也叫硬上限。
护栏
不是美元上限,但能防止花钱的设置。例:构建机固定用免费的那一档。
告警
指标越线或规则命中时开的一条记录。告警要有人处理、处理完要关。
闭环
从「看见」到「处理完、核实省了多少」走完一圈。
2整张图

费用本体:钱从哪里来,到哪里去

系统里的每一样东西都是一个对象。对象之间有关系。下面这张图是我们在 Semantic 里的费用对象,一共五层。点一个对象,看它是什么、有多少条、连着谁。

「上限」是这次新加的对象。图用的是 AIDC UI 的本体图组件 ui.graph,和你在自己应用里能用的是同一个。

3第一步:盘点

先列出付钱给谁

结论云账单(AWS、Vercel、Supabase)每天采集,最清楚。模型、缓存、邮件、登录这些按量的服务,有的只看我们自己的台账,有的什么都不看。服务商那边的上限,大多数没人核实过。

做法:读代码里所有外部服务的凭证名,读生产环境变量的名字(只读名字,不读值),再对照记忆和账单。每个服务回答四个问题:

  1. 我们买的是什么?按什么计费?
  2. 现在谁在看它?多久看一次?
  3. 服务商那边有没有到线就停的上限?设了吗?
  4. 平台这边有没有自己的额度?
付费账户计费方式10 月已花9 月实付月预算谁在看服务商上限平台上限
10 月 1 日到 13 日,实际已经花了多少有数据的 6 个账户合计 $1,870:AWS $893、DeepSeek $667、Vercel $246、GitHub Actions $42、Supabase $21、OpenAI $2。AWS、Vercel、GitHub 是服务商账单上的金额(晚 1–2 天出齐);DeepSeek、OpenAI 是平台台账按标价算的(不是服务商的扣款);Supabase 是按套餐估算。Upstash、Redis Cloud、Resend、Clerk、TypeSafe 没有采集。
注意GitHub Actions 10 月已经花了 $42,预算 $50。10-11 一天 $12.65、10-12 一天 $16.37,按这个速度 10-14 就会到 $50 的上限,所有检查都会停。当天负责人把预算提到了 $100,并定了规则:新提交先在本机跑检查,合并前最多手动跑一次。原因:两天里完整检查跑了 200 次,其中 91 次是手动重跑;规则是每个 PR 只跑一次。生产里查这一项的检查缺令牌,所以没人报警。

订阅类(ChatGPT、Claude、企业邮箱、域名)是固定月费,按月对账即可,不放进这张表。

4第二步:拆账

把一个总数拆到能动手的那一层

一个月的账单只告诉你「花了多少」。要知道「为什么」,要拆四层:账单 → 计费项 → 驱动量 → 归属(哪个客户、哪个功能)。每一层的和要对上上一层。

拆到驱动量以后,一项费用 = 次数 × 每次的工作量 × 单价。费用变了,先看是三个数里的哪一个变了。

10 月每天的云费用

AWS 从 10-05 起每天多约 $20:共享池换成了更大的机器。Vercel 10-05 到 10-07 有一个尖峰:构建机被平台自动升到 30 核。

AWSVercelSupabase
看数据

案例:一家客户的桌面端,模型费一天 $228 → $2

每次调用平均带 25 万 token 的上下文。10-09 以前缓存命中是 0(没有按缓存计价,也没有复用前缀)。修好以后命中 97% 以上。

每天的模型费(台账)修好以后
看数据
注意修好以前的金额是我们自己台账的标价(没有按缓存价算),服务商实际扣的可能更少。拆账时要分清「台账」和「服务商的账单」。
5第三步:指标

每个指标有口径,也有三条线

结论原来的 5 个财务指标只回答「花了多少、会不会超预算」。这次加了 3 个,回答「有没有预算、有没有上限、有没有人管」。月底预测也换了算法。
指标怎么算达标 / 越线 / 0 分现在
云预算预测占用月底预测 ÷ 预算,取最高的账户90 / 100 / 120 %129%
本月模型费平台台账里全部调用的标价之和$300 / 500 / 800$669
预算覆盖率 · 新预测花费里,所在账户有预算的占比100 / 90 / 60 %67% → 100%
上限覆盖率 · 新按量账户里,有「已设、管全部」硬上限的占比100 / 80 / 50 %25% → 42%
越线连续天数 · 新同一条检查、同一个对象连续越线的天数,取最长1 / 2 / 7 天5 天
账单采集正常率30 小时内采到、没报错的账户占比100 / 90 / 60 %100%

月底预测为什么要改

原来的算法:本月至今 + 最近 7 天的平均 × 剩下的天数。问题是一次尖峰修好以后,平均值要 7 天才降下来。这 7 天里预测一直超预算,告警一直响,人就不再看告警。

新算法把「平均」换成「中位数」。7 天里有 3 天尖峰,中位数也不动。连续 4 天以上的上涨会进中位数,是真的涨了。单独一天的突增,另有一条告警管。

账户旧算法新算法为什么不同
Vercel$807$55510-05 到 10-07 的构建尖峰已修好
AWS$2,282$2,401最新一天账没结完(只有半天),旧算法被它拉低
DeepSeek$1,701$1,526桌面端的尖峰已修好;云端智能体从 10-10 起按真实用量计价

每家服务商还要盯什么

账单之外,每家都有一两个最先出问题的资源。这些指标由资源用量那一边的系统采集,这里列出来,方便对照。

服务商指标公式常见的线
Supabase磁盘 IO 突发额度剩余突发时间 ÷ 每天 30 分钟< 20% 就会变慢
Supabase出网本月出网 ÷ 套餐含量 250 GB≥ 80%
Redis缓存命中率命中 ÷(命中 + 未命中)< 90%
Redis连接被拒每天新增的拒绝次数> 0
Vercel回源流量每路由每周 GB × 区域单价周环比 ≥ 2 倍
Vercel函数内存时长GB × 小时(长连接按时长算钱)周环比 ≥ 2 倍
AWS空转机器7 天平均 CPU< 5% 且不是待命机
模型每次调用的平均输入输入 token ÷ 调用次数≥ 20 万
模型缓存命中缓存 token ÷ 输入 token< 80%
6第四步:上限

预算会提醒你,上限才会停下来

结论10-13 盘点时,12 个按量账户里只有 Redis(固定套餐)、DeepSeek(预付余额)、World Labs(平台额度)真的到线会停。当天做了两件事:平台给每把 Key、每家公司加了每日花费上限,OpenAI 的每条调用路径都管住了;核实了 GitHub 的预算勾了「到预算停止」。现在是 5 个。剩下 7 个(AWS、Vercel、Supabase、Upstash、Resend、Clerk、TypeSafe)只能在服务商控制台里设,要负责人登录去设。

上限有两个地方可以设:

平台这边的每日上限(10-13 起):一把 Key(一台设备或一个数字员工)一天 $60,一家公司一天 $150。所有调模型的入口都先过这一道,到线拒绝调用,UTC 0 点恢复。线的依据:修好以后一把 Key 一天最多约 $9、一家公司约 $35;10-06 的事故是一把 Key $153、一家公司 $228。语音演示另有每天 100 场的总量上限。

  1. 服务商那边:例如 OpenAI 项目的花费上限、Upstash 的月预算、GitHub 的「到预算就停」。到线以后,服务商停整个账户。
  2. 平台这边:在我们自己的网关里,按公司、按设备、按 Key 设每天的美元额度。到线以后,只停超的那一个。

平台这边的上限更细:一台设备用超,不会让所有客户一起停。服务商的上限是最后一道闸。

注意不是所有硬上限都该开。Vercel 的「暂停生产部署」会让官网停掉;Supabase 的 Spend Cap 会让生产数据库变成只读。这两个只开通知,靠预算和平台的额度来管。
付费账户服务商的硬上限服务商的通知平台的额度到线会怎样

每一行都是 Semantic 里的一个 SpendLimit 对象,一共 27 个。改了设置,就改对象;上限覆盖率每小时重算一次。

7第五步:关单

告警要有人接、有人关

结论每日检查越线后会发一封邮件。但邮件不是任务:一台客户箱子的根盘从 10-09 起每天报 92%–93%,Redis 拒连从 10-10 起每天报,5 天里没有人关。现在越线会进 ADIS 的闭环:开告警、派给负责的智能体、写处置、做完核验。
检查每天 UTC 00:40 跑 9 条规则
指标越线连续天数 ≥ 3 就越线
告警ADIS 开一条,有负责人
处置例行的 AI 直接做;花钱的写审批包
执行改代码、改配置,或者 负责人 批了再做
核验7 天后复算,记下省了多少

谁能决定什么,事先定好。这样大部分事不用等人:

决策权例子谁做
例行修让费用上涨的缺陷;加缓存;改轮询;加监控规则AI 层直接做,做完报告
花钱定预算、设上限的数字、升配、降配、删快照写审批包(现状、变化、替代做法、能不能撤回、不批的后果),负责人 批
负责人操作只有 负责人 能登录的服务商控制台负责人 自己点;AI 写好在哪里点、点哪个
8第六步:优化

有了指标,才知道先改哪一个

按「每月能省多少」排序。已经做完的,7 天后用同一个脚本复算,写回实际省了多少。

措施每月约省决策权状态
桌面端模型调用复用缓存前缀,按缓存价计量约 $2,000(台账)例行已完成
GitHub 检查:不再每次新提交都手动重跑(两天 91 次),本机先跑,合并前最多一次每月约 $40例行已完成
构建机固定免费档、关按需并发$112例行已完成
月底预测改中位数;三个新指标进 ADIS不省钱,少误报例行本次完成
客户 A 的专用箱降一档(先在工作日压测)$525花钱等负责人
共享池按需拉起、空闲冻结$400定目标等负责人
共用机器降配:白天 r7i.xlarge、夜里 r7i.large(缩到零以后,内存峰值只用了 64 GB 里的 10.9 GB)约 $540花钱已批准,10-15 起生效
停机 30 天以上的磁盘先快照再删;快照打到期标签$182花钱等负责人
模型调用每日美元上限(每把 Key $60、每家公司 $150);语音演示每天 100 场防止一天 $228 再发生例行已完成

10-13 当天批了三件:模型月预算、GitHub 预算、共用机器降配。还在等的几项(客户 A 箱降配、旧磁盘与快照清理)加起来每月约 $700,都有审批包。资源用量这一边(每台机器每小时的 CPU、内存、磁盘)由另一套用量监控采集,它的发现也写进 Semantic,供定预算和上限时参考。

9练习

三道题,检查你学会了没有

1. Vercel 的月底预测是 $807,预算是 $430。下一步先做什么?

2. 哪一个算「上限」?

3. 同一条告警连续报了 5 天。说明什么?

10用到你的组织

接一个新的付费服务,先做这五件事

  1. 登记供应商和付费账户。
  2. 写下计费项,估一个月会花多少。
  3. 定月预算,由负责花钱的人批。
  4. 设上限:服务商那边一个,平台这边一个;设不了的写明原因。
  5. 至少一条每天跑的检查;越线要进告警,告警要有负责人。

做完这五件事,这个服务就在指标里。没做完,「上限覆盖率」「预算覆盖率」会越线,系统会提醒你。

这套内容也做成了 Academy 的公开课(4 课,中英日德):花钱有数:费用控制。