Skip to content

feat(provider): 支持 Grok OAuth 订阅账号#684

Draft
qiaoen12 wants to merge 3 commits into
fawney19:mainfrom
qiaoen12:codex/grok-oauth-provider-20260719
Draft

feat(provider): 支持 Grok OAuth 订阅账号#684
qiaoen12 wants to merge 3 commits into
fawney19:mainfrom
qiaoen12:codex/grok-oauth-provider-20260719

Conversation

@qiaoen12

@qiaoen12 qiaoen12 commented Jul 19, 2026

Copy link
Copy Markdown

背景

Aether 已支持 Grok API Key,但尚缺少 Grok CLI 订阅账号的 OAuth 接入、账号池调度和订阅额度展示。本 PR 参考 Sub2API 的订阅账号能力,按 Aether 现有 OAuth、transport 与 provider-pool 架构补齐最小可运行链路。

实现范围

  • 新增独立的 grok_oauth provider 类型,接入 xAI OAuth2 PKCE、authorization code、refresh token 单个及批量导入。
  • 将 Grok OAuth 身份合并收敛到 aether-oauth 的共享 helper:id_token 优先,token response 与 access_token 作为回退,并保留 account_nameplan_type 等非身份字段。
  • 将 Grok OAuth 上游请求限定到 Responses runtime;外部 Chat 请求复用 Aether 现有 Chat → Responses 转换。
  • 接入 provider-pool 调度以及 weekly/monthly Billing 额度刷新、结构化 quota snapshot 和管理端展示。
  • Billing 请求从同一解析结果生成 x-grok-client-versionUser-Agent,避免客户端版本不一致。
  • 区分 401 与 403:401 可标记 OAuth 失效;Grok OAuth 的 403 保留账号,不改变其他 provider 的生命周期行为。

模块边界与非目标

  • OAuth、runtime、quota、pool、candidate selection 与前端入口均以 grok_oauth 精确隔离。
  • 保留 grok API Key/浏览器会话 provider 及其他 provider 的原有行为。
  • 本轮目标是“Grok OAuth 订阅账号可运行且不影响其他 provider”,不宣称与 Sub2API 全功能等价。
  • 不包含媒体端点扩展、Cookie 转换或无关 UI 重构。

与上游的集成

  • 功能历史已整理为一个可独立编译的原子提交。
  • 当前提交:9087b7133ae17d40464945bb918f68dc2ff2b790
  • 当前父提交:上游 main@7756c0913f2e0089575d019f1ca90d9867f35c52
  • 最后一次 rebase 与功能提交零文件冲突;range-diff 确认功能补丁保持等价。

本地验证

  • cargo fmt --all -- --check
  • git diff --check upstream/main...HEAD
  • Rust Grok OAuth 定向测试:44 项通过
  • cargo test -p aether-gateway grok_oauth:22 项通过
  • cargo check -p aether-gateway
  • 上游 CI 等价 Clippy:Gateway、Data、Workspace Rest 均通过
  • 前端相关测试:38 项通过
  • npm --prefix frontend run type-check
  • npm --prefix frontend run build

最后一次同步上游后,再次通过 cargo check -p aether-gateway 与 22 项 Gateway Grok OAuth 回归。

运行验证说明

  • 历史候选 9189545bf7d0de5cb302803bffaf2d9e21ec9b2a 已在隔离的 vps1 环境完成镜像构建、容器健康、readiness、Billing、quota refresh 与 Responses canary。
  • 当前最终提交 9087b7133ae17d40464945bb918f68dc2ff2b790 尚未重新部署到 vps1;本 PR 不把旧候选的运行结果冒充为当前提交的线上验证。

风险与回退

  • 改动跨 OAuth、runtime、provider-pool、quota、candidate selection 和管理端 UI,但功能分支均由 grok_oauth 隔离。
  • 无数据库 migration;provider_type 使用既有非约束文本字段。
  • 回退时可移除或禁用 grok_oauth provider;现有 grok 与其他 provider 无需迁移。

Add the xAI OAuth lifecycle, Responses runtime routing, provider-pool scheduling, Billing quota refresh, and minimal admin UI integration for Grok subscription accounts.
@qiaoen12
qiaoen12 force-pushed the codex/grok-oauth-provider-20260719 branch from 9189545 to 9087b71 Compare July 20, 2026 08:19
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.

1 participant