# R2.7.3 Grok 账号测试与网关路径复核报告

## 新证据

用户在 Sub2API 管理端对 `https://sub.yjxm1221.top grok` 执行账号连接测试成功：账号类型为 API Key，模型为 `grok-4.5`，上游返回正常文本。这证明账号凭据、base URL 和最小 xAI Responses 请求可用。

## 网关复测

使用绑定 Grok 分组的 Sub2API Key，经公开 `/v1/responses` 复测：

- 结构化 Codex 风格请求返回 502，请求 ID `86069838-2559-45a7-a683-8b029f03b447`。
- 账号连接测试同形态的 `input:"hi" + stream:true` 请求，在调度恢复后仍返回 502，请求 ID `dfd99f91-52e4-4de9-bea9-d64a3e8e623b`。
- 502 后 `v0.1.155` 会把 Grok 账号临时不可调度 2 分钟；期间请求返回 503 `no available accounts`。这解释了中间的 503，但不是首个 502 的根因。
- 原生窗口显示账号 36 可恢复为 `AVAILABLE=true`，因此不是永久禁用或认证错误。

## `v0.1.155` 源码路径差异

管理端 `testGrokAccountConnection`：

- 直接使用账号的 API Key 和 base URL。
- 请求体固定为 `model + input:"hi" + stream:true`。
- 不经过分组调度。
- 不注入 Grok prompt-cache identity。

公开 Grok gateway 的 `forwardGrokResponses`：

- 先经过分组调度和模型映射。
- 调用 `resolveGrokCacheIdentity`，按 Sub2API API Key、模型和请求内容生成租户隔离 identity。
- 即使是 Grok API Key 账号，也会向 Responses body 写入 `prompt_cache_key`，并写入 `X-Grok-Conv-Id` header；只有 Free OAuth 专属工具注入受 `IsGrokOAuth()` 限制。
- 第三方 base URL 因而收到的载荷不等同于管理端连接测试。

## 结论

“账号连接测试成功”与“Codex 经 Sub2API Grok 分组成功”并不矛盾。前者证明最小直连可用；后者当前稳定在上游账号 36 返回 502 后失败。根据 `v0.1.155` 源码，最值得优先验证的差异是公开网关为第三方 Grok API Key 上游增加的 `prompt_cache_key` / `X-Grok-Conv-Id` 及其他 Responses 净化，而不是本地 `config.toml.grok`、`auth.json.grok` 或账号凭据。

本任务保持只读，没有修改账号、runtime、分组或 Sub2API 源码。当前 Codex profile 配置仍正确，但该第三方上游尚未通过真实 Codex 网关载荷验收。
