xAI OAuth:用订阅登录 Grok,而不是绑死 API Key
订阅配额干活;Key 留给自动化。
导语
若你已为 Grok 订阅付费,@piex-dev/xai-oauth 让 pi 走同一套配额;API Key 通道仍留给自动化与按量场景。
问题背景
pi 内置 xai 走 API Key 按量计费。许多用户已有 SuperGrok / X Premium+ 订阅,却还要再开 Key。订阅模型目录会变,写死列表只能等发版。
@piex-dev/xai-oauth 用设备码 OAuth 登录,发现模型,与内置 xai 并存。
技术原理
RFC 8628 Device Flow:device_code → 浏览器确认 → 轮询 token → refresh。公开 API 与订阅代理双通道发现 /v1/models,/reload 即可用新模型。
实现方案
xai-oauth.ts + models.ts;错误体截断、端点校验、token skew;PI_XAI_OAUTH_MODELS 过滤。piex 少数带单测的包。
设计参考
| 项目 | 机制 | piex 取舍 |
|---|---|---|
| oh-my-pi xai-oauth | Device Authorization Grant 完整流程;双 endpoint 模型发现;pi 标准 OAuth provider 注册 | 采纳:OAuth 流程链路、client_id、端点校验、错误截断与 skew。不采纳:Bun 运行时细节(改 Node) |
| stnly/pi-grok | 模型发现:拉取 /v1/models + 合并进 provider 表 | 借鉴:实时发现理念(/reload 即可),但发现实现与路由独立重写 |
| pi 内置 xai | API Key 认证、固定模型集 | 并存:同一实例可同时用内置 xai(Key/CI)+ xai-oauth(订阅/交互) |
核心取舍:订阅 token 存 pi 标准存储(扩展层不落盘),模型发现 best-effort(失败回退),安全姿态「宁可少报不错报」。
优化计划
发现来源可观察;错误分类动作化;与 Key provider 区分更醒目;契约测试跟 xAI 变更。
源稿 Markdown: docs/notes/xai-oauth.md