GitDiagram 如何用 quota:today 脚本查看当日免费 Token 额度的已用与可用量?
【免费下载链接】gitdiagramFree, simple, fast interactive diagrams for any GitHub repository项目地址: https://gitcode.com/GitHub_Trending/gi/gitdiagram
GitDiagram 为没有自带 OpenAI API key 的访客提供每日免费 Token 配额,配额按 UTC 日期记账在 Upstash Redis 中。当你想确认当天免费额度还剩多少、已经被用掉多少时,可以直接运行仓库自带的quota:today脚本,它会查询 Upstash 并输出当日额度的已用、预留与可用量。该脚本在配好 Upstash 环境变量的本地开发环境或任何能访问同一 Upstash 实例的部署环境都可以执行,不需要先启动 Next.js 服务。
免费配额记账在哪里
先弄清脚本读的是什么,才知道输出数字代表什么:
- 配额键按UTC 日期 + 配额桶生成,桶名为固定的
openai-complimentary-small-models,见 complimentary-gate.ts; - 已用与预留量以
used_tokens、reserved_tokens两个哈希字段存放在 Upstash,键由 quota-store.ts 中的buildQuotaKey构造; - 每日上限默认是
10,000,000Token(DEFAULT_DAILY_LIMIT_TOKENS),可通过环境变量OPENAI_COMPLIMENTARY_DAILY_LIMIT_TOKENS覆盖,读取逻辑同样在getComplimentaryDailyLimitTokens()中; - 可用量计算为
上限 - used_tokens - reserved_tokens,且不为负,这与 complimentary-quota-today.mjs 中remainingTokens的算法一致。
reserved_tokens表示当前正在进行中的生成所预留的预算:请求被准入时先预留,生成结束后用实际消耗替换。因此「可用量」比「上限减已用」更保守,它扣掉了在途请求。
准备条件
按 docs/dev-setup.md 的配置要求准备环境:
- Node.js
20.9.0或更新版本(Next.js 16 的要求); - Bun:dev-setup 文档写的是
1.3.11或兼容的1.3.x,而 package.json 的engines字段要求>=1.3.14 <2,packageManager为bun@1.3.14。满足 engines 的版本即可运行本脚本。
安装依赖并准备.env:
bun install cp .env.example .env脚本通过dotenv从当前工作目录的.env加载配置(config({ path: ".env" })),所以执行脚本时该目录下必须存在.env。
脚本真正依赖的环境变量只有两个,来自 upstash.ts 的必填项:
UPSTASH_REDIS_REST_URL=... UPSTASH_REDIS_REST_TOKEN=...填成你部署所用的 Upstash 实例即可。可选变量OPENAI_COMPLIMENTARY_DAILY_LIMIT_TOKENS用于覆盖默认上限;不设时脚本按10,000,000计算可用量。
执行 quota:today
package.json 中定义了脚本入口:
"quota:today": "bun scripts/complimentary-quota-today.mjs"运行:
bun run quota:today它等价于直接执行bun scripts/complimentary-quota-today.mjs。脚本内部只发出HMGET与ZCOUNT这类只读 Redis 命令,不会写入配额计数,可以放心重复执行。
如何读懂输出
脚本会依次打印 8 行结果,字段含义如下:
| 输出字段 | 含义 |
|---|---|
Backend: | 固定为upstash,表示配额数据源 |
UTC date: | 配额所属的 UTC 日期(脚本取new Date().toISOString().slice(0, 10)),跨 UTC 0 点后会指向新的一天 |
Bucket: | 配额桶名,固定openai-complimentary-small-models |
Daily limit: | 当日 Token 上限,取OPENAI_COMPLIMENTARY_DAILY_LIMIT_TOKENS,未配置时为默认值 10,000,000 |
Used exact: | 当日已提交(finalize)的 Token 数 |
Reserved now: | 当前在途生成仍预留的 Token 数 |
Available now: | Daily limit - Used exact - Reserved now,下限为 0 |
Live leases:/Stale leases: | 生效中 / 已过期的预留租约数量。脚本注释说明:过期租约会在下一次准入(admission)时被回收,此处非零只表示它们过期之后还没有新的生成开始 |
判断依据很直接:Available now就是此刻还能放进免费额度的 Token 量;它归零说明当日额度(含在途预留)已用完。此时脚本不会报错,只是把可用量显示为 0。
边界与限制
- 配额按 UTC 日期重置。免费额度耗尽时的拒绝文案提示用户 00:00 UTC 后重试或改用自带 OpenAI API key(见 complimentary-gate.ts 中的
DEFAULT_DENIAL_MESSAGE)。 - 这个免费桶服务于「使用服务器默认 key」的请求。免费闸门仅在
OPENAI_COMPLIMENTARY_GATE_ENABLED开启、provider 为openai且请求未携带用户 API key 时生效,相关开关属于 docs/dev-setup.md 列出的可选生成控制项。 - 脚本查询的是共享配额状态:
Used exact是所有访客当日消耗总和,不是某个用户的个人用量。 - 上限值来自运行脚本时
.env中的配置,如果你在线上调了OPENAI_COMPLIMENTARY_DAILY_LIMIT_TOKENS,本地.env与线上不一致时,脚本算出的Available now会基于本地那份配置。
进一步查看记账细节可阅读 quota-store.ts(准入、标记开始、finalize 三段 Lua 脚本与键结构)和 dev-setup.md 的完整配置清单。
【免费下载链接】gitdiagramFree, simple, fast interactive diagrams for any GitHub repository项目地址: https://gitcode.com/GitHub_Trending/gi/gitdiagram
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考