makecindy / makecindy/cindy

[Bug][待调查][自定义供应商] SenseNova 接入后任务稳定中断(400/404/429)

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

Description

## 来源

- 来源频道:Discord `#问题反馈`
- 来源帖子:`第三方api配置DeepSeek 总是出现任务中断`
- 原帖链接:https://discord.com/channels/1524291334654132335/1531963563734728917/1531963563734728917
- 提问人(Discord 显示名称):**青川凝**
- 记录时间:2026-07-29

> 隐私说明:以下仅保留定位所需的脱敏信息,不包含 API Key、Token、完整消息历史或完整用户 ID。

## 问题摘要

用户在 Cindy 中配置第三方模型供应商,界面/描述选择了 DeepSeek,但实际 API 服务来自商汤 SenseNova(https://www.sensenova.cn/)。正常使用时任务会稳定中断;点击重试后,有时可以逐步完成。

同一反馈中观察到三类不同错误:

1. 上游 `400 invalid_request_error / upstream_error`,嵌套信息包含:`Failed to build prompt: Can only get item pairs from a mapping.`
2. 本地 Responses 入口返回上游 `404`:`model is not found`。
3. 重试达到上限,最后状态为 `429 Too Many Requests`。

这些现象可能分别对应模型/接口配置、SenseNova 限流以及 Cindy Responses → Chat Completions 转换后的请求兼容性,当前不应视为同一个已确认根因。

## 环境

- 系统:Windows 11
- Cindy:0.1.21
- API 服务:SenseNova / 商汤日日新
- 用户描述的配置入口:DeepSeek / 第三方 API
- 使用的 Agent Runtime:待确认(Claude Code / Codex)
- Base URL、模型 ID、Wire Protocol:待确认
- 是否稳定复现:是

## 最小复现(基于当前反馈)

1. 在 Cindy 中配置指向 SenseNova 的第三方 API。
2. 正常发起任务。
3. 任务执行过程中出现中断。
4. 点击重试;部分任务经过多次重试后可以完成。

目前尚缺少可以单独稳定触发 `400 Failed to build prompt` 的最短会话步骤。

## 预期结果

- 使用账户已开通、配置正确的 SenseNova 模型时,任务能够正常执行。
- 配置错误、上游限流与协议/请求结构不兼容应分别给出可判断的错误信息,避免统一表现为不明确的“任务中断”。

## 实际结果

- 同一使用场景中交替出现 400、404、429。
- 重试后偶尔能继续完成,但不能稳定运行。

## 初步核查

### 已确认

- Cindy 的 Codex 自定义供应商支持 `openai-chat`;DeepSeek 预设默认使用该协议。
- PR #245 已提供 Codex Responses → Chat Completions 转换能力,但不是针对 SenseNova 的专项适配。
- PR #790 只增加流式重连进度显示,不解决上游 400/404/429。
- Issue #941 讨论的是另一条“上游流内错误被吞成空 200 SSE”的问题,错误形态和当前反馈不同,不能作为同一问题处理。
- SenseNova 官方文档要求 `model` 使用当前账户可用的模型 ID;404 表示模型不可用/未开通,429 表示请求速度或资源数量超限。

### 合理判断

- `404 model is not found` 很可能是 SenseNova 模型 ID 与 DeepSeek 预设/用户配置不匹配。
- `429` 是 SenseNova 上游限流或资源额度问题。
- `400 Failed to build prompt` 可能涉及工具/消息结构与 SenseNova 的兼容性,需要拿到准确协议配置及最短复现后,再判断 Cindy 是否需要修复转换逻辑。

### 仍需验证

- 使用的是 Claude Code 还是 Codex。
- 脱敏后的 Base URL。
- 完整模型 ID。
- 选择的是 `OpenAI Chat Completions` 还是 `Responses`。
- Cindy“测试连接”是否成功。
- 能稳定触发 400 的最短任务/工具调用步骤。

## 影响面与严重级别

- 建议严重级别:**P2 / Medium(待确认)**
- 当前影响:Windows 11、Cindy 0.1.21、SenseNova 自定义供应商场景。
- 其他 OpenAI-compatible 第三方供应商是否受影响:尚无证据。

## 验收标准

1. 使用有效 SenseNova Base URL 与已开通模型 ID,完成基础文本任务。
2. 完成至少一个包含工具调用的任务,确认请求转换不会触发 prompt 构建错误。
3. 对模型不存在、限流和请求结构不兼容分别显示明确错误类别。
4. 重试逻辑不会掩盖不可重试的 404/配置错误。
5. 补充覆盖 SenseNova/OpenAI-compatible 请求形态的最小回归测试(若最终确认是 Cindy 转换问题)。

## 截图证据

以下三张图片均来自上述 Discord 原帖,提问人为 **青川凝**;仅用于问题定位,未包含凭证或完整消息历史。

### 400 / 404 错误

![SenseNova 400 与 404 错误截图](https://cdn.discordapp.com/attachments/1531963563734728917/1531963564527718652/image.png?ex=6a6b1fc0&is=6a69ce40&hm=e5c03a81eabf378878944393131f572f8380da4e5f45ba3981ee767c65c0ecb0&)

### 429 限流

![SenseNova 429 Too Many Requests 截图](https://cdn.discordapp.com/attachments/1531963563734728917/1531963565441945631/image.png?ex=6a6b1fc0&is=6a69ce40&hm=d7b6e9ae66376f7e6c8c294db47b4c8c1ea9c1a5968767ee9a73c93b293485fe&)

### 多次重试后任务完成

![SenseNova 重试后完成截图](https://cdn.discordapp.com/attachments/1531963563734728917/1531963565932544020/image.png?ex=6a6b1fc0&is=6a69ce40&hm=d9cd551f8e8340b0bb165d8e5cce7022cb38eae8d70a3b109753932b6b7c25ac&)

Contributor guide

Open the contributing guide

Research direction

Start by confirming the runtime, Base URL, model ID, and selected protocol, then isolate the shortest task that reproduces the 400 error. Review the Codex custom-provider conversion introduced by PR #245 and compare its behavior with the reported 404 and 429 cases; completion requires a confirmed root cause and the relevant regression coverage described in the acceptance criteria.

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
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.