Skip to content

feat: add client key routing scopes with fail-closed enforcement - #813

Open
chenyme wants to merge 1 commit into
mainfrom
keys
Open

feat: add client key routing scopes with fail-closed enforcement#813
chenyme wants to merge 1 commit into
mainfrom
keys

Conversation

@chenyme

@chenyme chenyme commented Jul 28, 2026

Copy link
Copy Markdown
Owner

概要

  • Client Key 新增渠道、订阅和模型三层调用范围。
  • 选号严格按照「渠道 × 订阅 × 模型」交集执行,不会越界回退。
  • 模型目录、创作控制台与实际选号范围保持一致。
  • 补齐多实例缓存失效、历史数据迁移和明确错误响应。

主要改动

  • 渠道范围支持 Grok Build、Grok Web、Grok Console 多选。
  • 订阅范围支持 Free、Super、全部及 Free + Super 组合。
  • 模型范围支持全部模型或指定模型。
  • Build/Web 按真实账号判级选号;Console 不受订阅范围限制。
  • 范围内账号不可用时返回 client_key_account_scope_unavailable,不会使用范围外账号。
  • 模型无权限时正确返回 403 model_not_allowed
  • 显式空范围返回 400,避免错误配置放宽权限。
  • /v1/models 仅返回当前 Key 范围内真正可用的模型。
  • 创作控制台按所选 Key 动态加载可调用模型。
  • 修改渠道或订阅后清空旧模型选择,避免隐藏权限意外恢复。
  • Client Key 变更通过 invalidation bus 同步清理多实例认证缓存。
  • 旧 Key 自动迁移为全部范围,保持现有调用行为。

安全与兼容性

  • 不改变客户端请求格式。
  • 不修改计费、审计或额度扣减逻辑。
  • 不在推理热路径增加数据库查询。
  • previous_response_id、图片和视频请求同样受范围约束。
  • 未配置范围的旧 Key 继续使用全局账号池。

验证

  • 相关后端单元与集成测试通过。
  • 相关包 go test -race 通过。
  • go vet 通过。
  • pnpm lint 通过。
  • pnpm build 通过。
  • git diff --check 通过。

@chenyme chenyme linked an issue Jul 28, 2026 that may be closed by this pull request
3 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature]: 支持将客户端密钥绑定到指定账号或账号池

1 participant