跳到主要内容

xAI Grok OAuth(SuperGrok / X Premium+)

AigenLabs Agent 通过基于浏览器的 OAuth 登录流程支持 xAI Grok,认证服务器为 accounts.x.ai,支持 SuperGrok 订阅grok.com)或 X Premium+ 订阅(已关联的 X 账号)。无需 XAI_API_KEY——登录一次后,AigenLabs 会在后台自动刷新会话。

当你使用拥有 Premium+ 的 X 账号登录时,xAI 会自动将订阅状态关联到你的 xAI 会话,因此 OAuth 流程与直接 SuperGrok 订阅者的体验完全相同。

该传输层复用 codex_responses 适配器(xAI 暴露了 Responses 风格的端点),因此推理、工具调用、流式传输和 prompt(提示词)缓存无需任何适配器改动即可正常工作。

同一 OAuth bearer token 也会被 AigenLabs 中所有直连 xAI 的功能复用——TTS、图像生成、视频生成和转录——因此单次登录即可覆盖全部四项功能。

概览

项目
Provider IDxai-oauth
显示名称xAI Grok OAuth (SuperGrok / X Premium+)
认证类型浏览器 OAuth 2.0 PKCE(回环回调)
传输层xAI Responses API(codex_responses
默认模型grok-4.3
端点https://api.x.ai/v1
认证服务器https://accounts.x.ai
需要环境变量否(此 provider 不使用 XAI_API_KEY
订阅要求SuperGrokX Premium+——见下方说明

前提条件

  • Python 3.9+
  • 已安装 AigenLabs Agent
  • 你的 xAI 账号拥有有效的 SuperGrok 订阅,你登录所用的 X 账号拥有 X Premium+ 订阅(xAI 会自动关联订阅)
  • 本地机器上有可用的浏览器(远程会话可使用 --no-browser
xAI 可能按套餐限制 OAuth API 访问

xAI 的后端对 OAuth API 接口维护自己的白名单,已有记录显示即使应用内订阅处于激活状态,标准 SuperGrok 订阅者也会收到 HTTP 403(见 issue #26847)。如果浏览器中 OAuth 登录成功但推理返回 403,请设置 XAI_API_KEY 并切换到 API 密钥路径(provider: xai)——该接口目前不受相同限制。

快速开始

# 启动 provider 和模型选择器
aigenlabs model
# → 从 provider 列表中选择 "xAI Grok OAuth (SuperGrok / X Premium+)"
# → AigenLabs 在浏览器中打开 accounts.x.ai
# → 在浏览器中批准访问
# → 选择模型(grok-4.3 在列表顶部)
# → 开始对话

aigenlabs

首次登录后,凭据存储在 ~/.aigenlabs/auth.json 中,并在过期前自动刷新。

手动登录

你可以不经过模型选择器直接触发登录:

aigenlabs auth add xai-oauth

远程 / 无头会话

在没有浏览器的服务器、容器或 SSH 会话中,AigenLabs 会检测到远程环境并打印授权 URL,而不是打开浏览器。

重要: 回环监听器仍在远程机器的 127.0.0.1:56121 上运行。xAI 的重定向需要到达监听器,因此在你的笔记本上打开 URL 会失败(Could not establish connection. We couldn't reach your app.),除非你转发端口:

# 在本地机器的另一个终端中:
ssh -N -L 56121:127.0.0.1:56121 user@remote-host

# 然后在远程机器的 SSH 会话中:
aigenlabs auth add xai-oauth --no-browser
# 在本地浏览器中打开打印出的授权 URL。

通过跳板机 / 堡垒机:添加 -J jump-user@jump-host

完整步骤(包括 ProxyJump 链、mosh/tmux 和 ControlMaster 注意事项)请参阅 OAuth over SSH / Remote Hosts

仅限浏览器的远程环境(Cloud Shell、Codespaces、EC2 Instance Connect)

如果你没有常规 SSH 客户端(例如在 GCP Cloud Shell、GitHub Codespaces、AWS EC2 Instance Connect、Gitpod 或其他基于浏览器的控制台中运行 AigenLabs),上述 ssh -L 方案不可用。请改用 --manual-paste——AigenLabs 跳过回环监听器,让你直接从浏览器粘贴失败的回调 URL:

aigenlabs auth add xai-oauth --manual-paste
# 或通过模型选择器:
aigenlabs model --manual-paste

完整操作说明请参阅 OAuth over SSH / Remote Hosts。此为 #26923 的回归修复。

登录流程说明

  1. AigenLabs 在浏览器中打开 accounts.x.ai
  2. 你登录(或确认现有会话)并批准访问。
  3. xAI 重定向回 AigenLabs,token 保存到 ~/.aigenlabs/auth.json
  4. 此后,AigenLabs 在后台刷新 access token——你将保持登录状态,直到执行 aigenlabs auth remove xai-oauth 或在 xAI 账号设置中撤销访问。

检查登录状态

aigenlabs doctor

◆ Auth Providers 部分将显示每个 provider 的当前状态,包括 xai-oauth

切换模型

aigenlabs model
# → 选择 "xAI Grok OAuth (SuperGrok / X Premium+)"
# → 从模型列表中选择(grok-4.3 固定在顶部)

或直接设置模型:

aigenlabs config set model.default grok-4.3
aigenlabs config set model.provider xai-oauth

配置参考

登录后,~/.aigenlabs/config.yaml 将包含:

model:
default: grok-4.3
provider: xai-oauth
base_url: https://api.x.ai/v1

Provider 别名

以下所有别名均解析为 xai-oauth

aigenlabs --provider xai-oauth        # 规范名称
aigenlabs --provider grok-oauth # 别名
aigenlabs --provider x-ai-oauth # 别名
aigenlabs --provider xai-grok-oauth # 别名

直连 xAI 工具(TTS / 图像 / 视频 / 转录 / X 搜索)

通过 OAuth 登录后,每个直连 xAI 的工具都会自动复用同一 bearer token——无需单独配置,除非你更倾向于使用 API 密钥。

为每个工具选择后端:

aigenlabs tools
# → Text-to-Speech → "xAI TTS"
# → Image Generation → "xAI Grok Imagine (image)"
# → Video Generation → "xAI Grok Imagine"
# → X (Twitter) Search → "xAI Grok OAuth (SuperGrok / X Premium+)"

如果 OAuth token 已存储,选择器会确认并跳过凭据提示。如果既没有 OAuth 也没有设置 XAI_API_KEY,选择器会提供三选一菜单:OAuth 登录、粘贴 API 密钥或跳过。

视频生成默认关闭

video_gen 工具集默认禁用。在 aigenlabs tools🎬 Video Generation(按空格键)中启用后,agent 才能调用 video_generate。否则 agent 可能回退到内置的 ComfyUI 技能,该技能同样标记为视频生成。

配置 xAI 凭据后 X 搜索自动启用

只要配置了 xAI 凭据(SuperGrok / X Premium+ OAuth token 或 XAI_API_KEY),x_search 工具集就会自动启用。如不需要,请通过 aigenlabs tools🐦 X (Twitter) Search(按空格键)显式禁用。该工具通过 xAI 内置的 x_search Responses API 路由——支持 SuperGrok / X Premium+ OAuth 登录或付费 XAI_API_KEY,两者同时配置时优先使用 OAuth(消耗订阅配额而非 API 费用)。未配置任何 xAI 凭据时,无论工具集是否启用,工具 schema 都对模型隐藏。

模型

工具模型说明
对话grok-4.3默认;通过 OAuth 登录时自动选择
对话grok-4.20-0309-reasoning推理变体
对话grok-4.20-0309-non-reasoning非推理变体
对话grok-4.20-multi-agent-0309多 agent 变体
图像grok-imagine-image默认;约 5–10 秒
图像grok-imagine-image-quality更高保真度;约 10–20 秒
视频grok-imagine-video文本转视频
视频grok-imagine-video-1.5-preview图像转视频;日期别名 grok-imagine-video-1.5-2026-05-30
TTS(默认音色)xAI /v1/tts 端点

对话模型目录从磁盘上的 models.dev 缓存实时获取;缓存刷新后,新的 xAI 模型会自动出现。grok-4.3 始终固定在列表顶部。

环境变量

变量作用
XAI_BASE_URL覆盖默认的 https://api.x.ai/v1 端点(极少需要)。

要将 xAI 设为活跃 provider,请在 config.yaml 中设置 model.provider: xai-oauth(使用 aigenlabs setup 进行引导配置),或在单次调用时传入 --provider xai-oauth

故障排查

Token 过期——未自动重新登录

AigenLabs 在每次会话前刷新 token,并在收到 401 时响应式地再次刷新。如果刷新因 invalid_grant 失败(刷新 token 被撤销或账号已轮换),AigenLabs 会显示类型化的重新认证消息,而不是崩溃。

当刷新失败是终态时(HTTP 4xx、invalid_grant、授权被撤销等),AigenLabs 将刷新 token 标记为失效并在本地隔离——后续调用跳过注定失败的刷新尝试,而不是反复重放同一个 401。agent 显示一条"需要重新认证"消息,并在你再次登录前保持等待。

修复方法: 再次运行 aigenlabs auth add xai-oauth 开始全新登录。下次成功交换后隔离状态自动清除。

授权超时

回环监听器有有限的过期窗口(默认 180 秒)。如果你未在时限内批准登录,AigenLabs 会抛出超时错误。

修复方法: 重新运行 aigenlabs auth add xai-oauth(或 aigenlabs model)。流程重新开始。

State 不匹配(可能的 CSRF)

AigenLabs 检测到授权服务器返回的 state 值与发送的不匹配。

修复方法: 重新运行登录。如果问题持续,检查是否有代理或重定向在修改 OAuth 响应。

从远程服务器登录

在 SSH 或容器会话中,AigenLabs 打印授权 URL 而不是打开浏览器。回环回调监听器仍绑定在远程主机的 127.0.0.1:56121——你笔记本上的浏览器无法访问它,除非进行 SSH 本地端口转发:

# 本地机器,另一个终端:
ssh -N -L 56121:127.0.0.1:56121 user@remote-host

# 远程机器:
aigenlabs auth add xai-oauth --no-browser

完整操作说明(跳板机、mosh/tmux、端口冲突):OAuth over SSH / Remote Hosts

登录成功后 HTTP 403(套餐 / 权限问题)

浏览器中 OAuth 完成,token 已保存,但推理或 token 刷新返回 HTTP 403,消息类似于 "The caller does not have permission to execute the specified operation"

不是 token 过期问题——重新运行 aigenlabs model 不会改变结果。xAI 的后端已被观察到将 OAuth API 访问限制在特定 SuperGrok 套餐,即使应用内订阅处于激活状态(issue #26847)。

修复方法: 设置 XAI_API_KEY 并切换到 API 密钥路径:

export XAI_API_KEY=xai-...
aigenlabs config set model.provider xai

或在 x.ai/grok 升级订阅(如果必须使用 OAuth 路径)。

运行时出现"No xAI credentials found"错误

auth 存储中没有 xai-oauth 条目,也未设置 XAI_API_KEY。你尚未登录,或凭据文件已被删除。

修复方法: 运行 aigenlabs model 并选择 xAI Grok OAuth provider,或运行 aigenlabs auth add xai-oauth

退出登录

删除所有已存储的 xAI Grok OAuth 凭据:

aigenlabs auth logout xai-oauth

这会清除 auth.json 中的单例 OAuth 条目以及 xai-oauth 的所有凭据池行。如果只想删除单个池条目,请使用 aigenlabs auth remove xai-oauth <index|id|label>(运行 aigenlabs auth list xai-oauth 查看列表)。

另请参阅