makecindy / makecindy/cindy

充值后 XD Gateway 模型清单变更:自动审批持续不可用(审核 404),embedding voyage/voyage-4 报 400 INVALID_MODEL

Open
#2,369 2 comments 0 reactions 0 assignees View on GitHub
bug
Dominant language
TypeScript
Stars
2.7k
Forks
395
Avg merge
21h 48m
Merged PRs (30d)
776

Description

**提交人**: Vincent
**客户端版本**: 0.1.38

---

## 反馈类型
Bug(网关模型清单与客户端硬编码模型名失配,导致 Auto-review 持续 fail-closed)

## 环境
- macOS (Darwin 27.0.0),应用于 2026-08-09 19:12 自动更新后重启
- 网关账户:`aigw:v1:cindy:cms1f2qj7003grx01ija1z3ec`

## 时间线(2026-08-10,UTC+8)
1. 此前:网关预算耗尽,全部请求 429 `ExceededBudget: User=... over budget. Spend=3.21384071, Budget=3.0`;自动审批 fail-closed,需审核操作均报 “Automatic review could not complete”。
2. ~16:30 用户充值;最后一条 429 出现在 16:29:55,之后预算错误彻底消失 → 充值已生效。
3. 17:07 应用完整重启,重新拉取 endpoint manifest 与 model discovery(缓存文件时间戳可证)。
4. 17:10 起出现新故障,持续至今:
- `/v1/embeddings` 对 `voyage/voyage-4` 返回 `400: Invalid model name passed in model=voyage/voyage-4. Call /v1/models to view available models for your key.`,每 10–30 秒重试失败一次;
- 自动审批仍不可用:`AUTO_REVIEW_UNAVAILABLE` 持续(17:11+ 实测被拒),cc-proxy classifier observer 记录到 status 404;
- 多个会话(claude-fable-5 与 MiniMax-M3)均复现,与主对话模型无关。

## 分析
- 充值/重新下发后,该 key 的可用模型清单发生变化,客户端写死的模型名不再被识别:
- `CHAT_EMBED_MODEL_ID="voyage/voyage-4"` 硬编码于 app.asar,无用户配置入口;
- 审核分类器模型同期 404,疑为同因(清单中无对应别名)。
- 应用重启并重拉配置后仍失败 → 非本地缓存问题,本地无法自行修复。

## 影响
- Auto-review 模式下所有需审核操作被 fail-closed 拒绝,只能切 Default / Full Access 绕过;
- 对话语义索引持续失败刷日志。

## 期望
1. 网关侧为充值后的套餐补齐/对齐模型别名(`voyage/voyage-4` 与审核分类器模型);或
2. 客户端改为服务端下发模型名/提供兑底,并在审核不可用时给出更明确的降级提示(当前只有一句 “Automatic review could not complete”,用户难以定位)。

## 诊断入口(供官方复查)
- `logs/main-2026-08-10.log`:grep `ExceededBudget` / `INVALID_MODEL`
- `logs/agent-2026-08-10.ndjson`:grep `AUTO_REVIEW_UNAVAILABLE`,cc-proxy classifier observer status 404
---
**OS**: darwin arm64 (27.0.0)
**界面语言**: zh-CN

Contributor guide

Open the contributing guide

Research direction

Start with logs/main-2026-08-10.log and logs/agent-2026-08-10.ndjson, searching for INVALID_MODEL, AUTO_REVIEW_UNAVAILABLE, and the classifier observer's 404. Trace the model-discovery and auto-review entry points to determine whether model names come from the gateway or client. Done means valid embedding and classifier requests after a gateway model-list change, with a clear fallback or diagnostic when review is unavailable.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
api, backend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.