用 AI API 多了之后,一个很现实的问题是:钱花在哪了? DeepSeek 的后台只给余额数字,不给每次调用的明细。这篇文章记录我如何用 Cloudflare Workers 的免费额度,搭一个精确到单次请求的费用监控。
思路
方案其实很简单:在客户端和 DeepSeek 官方 API 之间加一层代理,每次请求经过代理时 记录 token 用量和费用,再按官方单价换算成人民币。
你的程序 ──▶ Worker 代理 ──▶ api.deepseek.com
│
└─ 记录 usage → D1 数据库 → 面板 + 微信推送
三个关键点
1. 流式请求也能记账
DeepSeek 支持流式输出,但流式响应的 token 统计在最后一个数据块里。
解法是给上游请求自动注入 stream_options.include_usage,
再在转发流时扫描最后的 usage 块。
2. Worker 的异步写入坑
第一次部署后发现:请求记录全部丢失。原因是 Cloudflare Workers 在响应返回后会
冻结环境,fire-and-forget 的异步写入会被直接丢弃。必须用
ctx.waitUntil() 让数据库写入在后台完成。
3. 价格表要可维护
模型价格会变(DeepSeek 最近还预告过涨价)。把单价抽成一个独立的
pricing.js 表,改价格不用动业务代码。
最终效果
- 每次请求:模型、输入/输出 token、缓存命中、费用(精确到厘)
- 手机端 PWA 面板:今日消耗、7 日曲线、最近 20 条明细
- 微信推送:每天 00:05 汇总 + 余额低于阈值自动告警
- 成本:0 元(Cloudflare 免费额度 + Server酱免费版)
完整代码和部署步骤在文章底部的项目页面,欢迎参考或改进。
整个项目从零到上线花了不到一天。如果你也在用 DeepSeek 或其他 OpenAI 兼容 API, 这套模式可以原样复用到任何供应商。