OpenCode Zen 额度限流规则
2026年8月14日星期五
本文基于 OpenCode 官方开源仓库 anomalyco/opencode@39fb919a(2026-08-12)源码,与本机 Pi 实际使用会话记录整理。
统计范围:本文所有数据仅针对 DeepSeek V4-flash-free 模型调用(通过 OpenCode Zen 免费网关),不包含其他模型或其他网关的用量。本文的测试均基于携带 API Key 的调用;该网关也支持 API 系统的匿名访问,但本次未做相关测试。
OpenCode Zen 是什么
OpenCode 是一个开源的 AI 编程平台。除了终端里的命令行工具(CLI)和桌面应用之外,它还运营一个官方模型网关,叫做 Zen:
你的工具(Pi 等) → OpenCode Zen 网关 → 上游大模型(DeepSeek 等) → 结果返回
网关负责模型调度、用量统计和限流。deepseek-v4-flash-free 是 Zen 提供的免费模型,用于吸引用户试用。因为是免费开放,网关对每个使用者的用量做了限制,防止滥用和控制成本。
说明:以下测试均携带 API Key 进行。该网关也支持 API 系统的匿名访问,但本次未做相关测试,匿名访问的额度规则不在本文结论范围内。
额度是怎么算的(核心规则)
在本次携带 API Key 的测试中,Zen 网关按你的公网出口 IP 记录两个计数器:
| 计数器 | 含义 | 是否重置 |
|---|---|---|
| 终身计数 | 该 IP 从第一次使用起,累计成功发起的请求次数 | 永不重置 |
| 当日计数 | 该 IP 当天(按 UTC 日期)成功发起的请求次数 | 每天 UTC 午夜清零 |
所谓”一次请求”,就是一次完整的模型调用(发一条消息、拿到一次回复),与输出多长、是否命中缓存无关——发一次就算一次。
新用户与老用户
网关把使用者分为两类:
- 新用户:终身计数未超过”7 天的额度量”(约 2100 次)的使用者,被视为新手期,享受每日双倍额度。
- 老用户:终身计数超过该门槛后,降为普通额度。
具体数字(结合实测验证):
| 状态 | 每日额度 | 说明 |
|---|---|---|
| 新用户 | 约 600 次/日 | 基础额度 300 × 2 倍新手福利 |
| 老用户 | 约 300 次/日 | 新手期结束后降为单倍 |
每日重置时间
“每日”按 UTC(格林尼治)时间计算,即北京时间每天早上 8 点整重置当日计数,与使用者的首次请求时间无关。例如:北京时间下午 4 点被限流,第二天早上 8 点恢复。
实测情况(2026-08-14,DeepSeek V4-flash-free)
触发限流经过
- 08-14 上午 10:00 起,多个并行会话持续调用模型。
- 当日累计成功 601 次请求后,第 602 次左右开始被网关拒绝(HTTP 429,提示 “Rate limit exceeded”)。
- 限流响应给出的恢复时间为 15 小时 25 分钟,正好指向次日 UTC 午夜,即北京时间 08-15 早上 8 点恢复。
- 被拒后网关会在短时间内继续拒绝所有请求,直到重置时刻。
触发限流前的用量
| 指标 | 数值 |
|---|---|
| 成功请求 | 601 次 |
| 输入(缓存未命中) | 约 239 万 tokens |
| 输出 | 约 50 万 tokens |
| 缓存命中 | 约 4,286 万 tokens |
| 合计 tokens | 约 4,575 万(缓存命中率 93.7%) |
终身累计进度
从 08-10 开始使用至今,该 IP 的终身累计约为 1,626 次,尚未达到新用户门槛(约 2,100 次),目前仍处于新手期(每日 600 次)。按当前使用速度,预计 1~2 天内将用完新手福利,之后每日额度降为 300 次。
常见问题
缓存命中率很高,能省额度吗?
不能。额度按”请求次数”计算,与 token 数量、缓存命中率无关。缓存只影响 token 计费(缓存命中的 tokens 不计入按量费用),不影响请求次数额度。
被限流后怎么办?
- 等待重置:北京时间次日早上 8 点自动恢复。
- 减少并发:多个并行会话会快速消耗当日额度,建议错峰运行。
- 换 IP:终身计数与当日计数都按 IP 记录,更换全新出口 IP(代理、热点等)后计数器归零,可重新获得新手期双倍额度(600 次/日、终身 2100 次福利)。但注意终身计数永久累积、不会自己恢复,同一个 IP 用完 2100 次后就永远按老用户(300 次/日)计算。
每日额度还有剩余吗?
当前处于新手期,每日 600 次、UTC 日重置(北京时间 08:00)。可以通过本地会话记录自行核对当日已用次数。
API 调用格式
Zen 网关提供三种调用格式,对 DeepSeek 模型的兼容性如下:
| 调用格式 | 端点 | 兼容性 |
|---|---|---|
| Chat Completions(推荐) | POST /v1/chat/completions | ✅ 稳定 |
| Responses | POST /v1/responses | ⚠️ 存在兼容性问题 |
| Messages | POST /v1/messages | ⚠️ 存在兼容性问题 |
推荐使用 Chat Completions 格式调用 DeepSeek 模型。Responses 与 Messages 两种格式在 DeepSeek 模型上存在兼容性问题,目前遇到的主要是参数转换问题——请求参数在网关转换为 DeepSeek 上游格式时可能出现异常,这是 OpenCode Zen 网关自身的问题,与客户端无关。
建议在使用 Pi 或其他工具时,将 DeepSeek 相关模型的调用方式固定为 Chat Completions 格式,以获得稳定的体验和准确的用量统计。
示例请求:
curl https://opencode.ai/zen/v1/chat/completions \
-H "content-type: application/json" \
-d '{
"model": "deepseek-v4-flash-free",
"messages": [{"role": "user", "content": "你好"}],
"stream": false
}'
若已配置 API Key,可在请求头中携带
Authorization: Bearer <key>。
规则速查
| 问题 | 答案 |
|---|---|
| 被 429 限流后何时恢复? | 北京时间次日早上 8 点(UTC 午夜) |
| 新手期一天能用多少次? | 约 600 次 |
| 老用户一天能用多少次? | 约 300 次 |
| 终身新手福利总共多少次? | 约 2100 次,用完即转为老用户 |
| 缓存命中能省请求额度吗? | 不能,一次调用算一次 |
| 换 IP 有用吗? | 有用,可重新获得新手期额度 |
| 同一个 IP 能变回新用户吗? | 不能,终身计数永不重置 |
| DeepSeek 调用该用哪个接口? | 只用 Chat Completions,避免 Responses / Messages |