Skip to content

v0.1.9

Choose a tag to compare

@github-actions github-actions released this 11 Apr 05:59
· 347 commits to master since this release

发布概览

本版本重构了网关的限流模型:移除不可配置的硬编码用户 RPM 限流,改为按 用户 × API Key 两层级联的并发槽位控制。管理员与用户都可以在面板按用户总额度 + 每把 key 独立额度做精细化配置,满足"用户 A 总并发 50,其中给 Claude Code 用的 key 单独限 10"这类场景。

主要更新

  • 移除硬编码的用户级 60 RPM 限流:原本按 user_id × platform 强制每分钟 60 个请求的逻辑粒度过粗、无法配置、误伤严重,已彻底下线。同时删除 internal/ratelimit 整个包以及挂在 auth 路由上实际为空转的限流中间件。账号级 max_rpm 与并发槽位继续保留用于保护上游账号。
  • 新增 API Key 级并发限制:api_key 表新增 max_concurrency 字段(默认 0 = 不限制),管理员/用户都可在密钥面板为每把 key 单独设置,达到上限返回 429 + apikey_concurrency_limit。Redis 槽位前缀 concurrency:apikey:<keyID> 与账号级隔离。
  • 新增用户级总并发限制:user.max_concurrency 字段首次被 forwarder 真正执行——同一 user 下所有 API Key 共享这个配额,与 api_key 级是 AND 关系。Redis 槽位前缀 concurrency:user:<userID>。user.max_concurrency 默认值同步从 5 改为 0。
  • 并发限流链路重构:plugin/forwarder 中新增 acquireClientSlots,按"先 user 后 key"顺序拿槽,失败时反向释放避免泄漏,Forward() 通过单次 defer 统一 release。跨 failover 尝试稳定,不会误清槽位。
  • 前端 UI 同步:管理面板与用户自管 key 页面都新增了"最大并发数"输入框,用户编辑页面已有的 max_concurrency 字段默认值从 5 改为 0;同时简化了 sell_rate / max_concurrency 的 hint 文案。

⚠️ 升级注意事项

v0.1.8 及以前 users.max_concurrency 的默认值是 5,但该字段从未被 forwarder 真正强制执行。 本版本首次把它接入实际限流链路,意味着数据库里仍停留在 5 的老用户升级后会被真正限制到每用户最多 5 个并发请求。

如果想继续不限制,请选一种方式:

  • 管理面板:进入"用户管理"页面,编辑目标用户,把 max_concurrency 改成 0
  • 直接改数据库(一次性批量):
    UPDATE users SET max_concurrency = 0 WHERE max_concurrency = 5;

新建用户不受影响,默认值已改为 0。

升级后如遇到客户端报 429 + rate_limit_exceeded / "请求过于频繁,请稍后重试" 的错误将会消失(这是被移除的硬编码限流的文案);取而代之的是可配置的 user_concurrency_limit 与 apikey_concurrency_limit,触发时说明对应用户或 key 的并发额度已达上限,按需在面板调大即可。

交付物

容器镜像

docker pull ghcr.io/doudou-start/airgate-core:v0.1.9
docker pull ghcr.io/doudou-start/airgate-core:latest

支持架构:linux/amd64 linux/arm64

二进制文件

支持平台:linux/amd64 linux/arm64 darwin/amd64 darwin/arm64

所有二进制文件均附带 .sha256 校验文件,可用于完整性校验。

完整变更

Full Changelog: v0.1.8...v0.1.9