| # 503 错误(Service Unavailable)修复验证指南 |
|
|
| 本指南针对近期反馈的 503 错误(Issue #1794 及后端容量限制)提供测试验证示例。 |
|
|
| ## 1. 验证 Project ID 获取失败后的自动回退 (Issue #1794) |
|
|
| **场景描述**: |
| 部分账号(特别是 Free 账号或受限账号)在调用官方接口获取项目 ID 时会报错 `账号无资格获取官方 cloudaicompanionProject`。在修复前,系统会直接跳过该账号导致最终返回 503;修复后,系统将自动使用通用 Project ID (`bamboo-precept-lgxtn`)。 |
|
|
| ### A. 使用 `curl` 进行基础连通性测试 |
| 请使用一个之前报错 503 的账号对应的 API Key(或直接通过代理): |
|
|
| ```bash |
| curl http://localhost:8045/v1/chat/completions \ |
| -H "Content-Type: application/json" \ |
| -H "Authorization: Bearer sk-antigravity-key" \ |
| -d '{ |
| "model": "gemini-2.0-flash", |
| "messages": [ |
| {"role": "user", "content": "你好,请确认你的工作状态。"} |
| ], |
| "stream": false |
| }' |
| ``` |
|
|
| ### B. 观察服务端日志 (npm run tauri dev) |
| **预期现象**: |
| 当系统检测到权限问题时,日志中会出现如下 **Warn** 信息,但请求**不应报错 503**,而是继续执行: |
|
|
| ```text |
| WARN Failed to fetch project_id for user@example.com, using fallback: Account is not eligible for official cloudaicompanionProject |
| DEBUG [TokenManager] Using project_id: bamboo-precept-lgxtn for request |
| ``` |
|
|
| --- |
|
|
| ## 2. 验证 Quota Protection(配额保护)对 503 的预防 |
|
|
| **场景描述**: |
| 当账号配额耗尽或后端因高负载返回 503 时,系统应正确识别并尝试轮换账号,而不是直接透传 503 给客户端。 |
|
|
| ### 测试指令 (Claude CLI) |
| ```bash |
| claude "这段代码哪里有 Bug?[附带一段长代码]" |
| ``` |
|
|
| **验证点**: |
| - 如果当前账号返回 503,日志中应显示 `[RetryStrategy] Status 503 detected, rotating account...`。 |
| - 系统应自动尝试下一个可用账号,直到获得成功响应或消耗完重试次数。 |
|
|
| --- |
|
|
| ## 3. 区分“代码 Bug”与“后端容量限制” (Opus 4.6) |
|
|
| **场景描述**: |
| 由于 `claude-opus-4-6-thinking` 模型目前处于试验阶段,Google 后端时常返回 `No capacity available` (503)。 |
|
|
| ### 测试指令 |
| ```bash |
| claude --model claude-opus-4-6-thinking "执行一次深度的推理任务,比较 Rust 和 C++ 的异步内存模型。" |
| ``` |
|
|
| **预期结果分析**: |
| 1. **如果返回 503 且消息包含 "No capacity available"**: |
| - 这是 **Google 后端容量限制**,并非本软件 Bug。 |
| - 代理会自动通过重试策略尝试其他账号,但如果所有账号都遇到容量限制,最终会透传此 503。 |
| - **建议**:在此负载高峰期切换到 `gemini-2.0-flash-thinking-exp` 或 `claude-3-7-sonnet` 进行测试。 |
|
|
| 2. **如果返回成功**: |
| - 说明当前后端容量充足。 |
|
|
| --- |
|
|
| ## 调试辅助技巧 |
|
|
| 如果您想强制模拟 Project ID 失败的场景进行代码级验证,可以在 `src-tauri/src/proxy/token_manager.rs` 中暂时修改模拟逻辑。但在大多数情况下,通过观察日志中是否出现 `using fallback: ...` 字样即可确认修复生效。 |
|
|