Replies: 1 comment
|
先说结论:你在 master 上引用的代码与结论都成立——provider 原始响应体确实被读进 可观测性缺口属实。chat-completions 侧 关键在于 环境事实核对:默认协议在 master 确实是 实践建议(根因在 provider 侧,DSH 无法自救,这点得说清楚):
另外两个值得留意的点:413 在两侧都被映射为 如果方便,把 |
|
先说结论:你在 master 上引用的代码与结论都成立——provider 原始响应体确实被读进 可观测性缺口属实。chat-completions 侧 关键在于 环境事实核对:默认协议在 master 确实是 实践建议(根因在 provider 侧,DSH 无法自救,这点得说清楚):
另外两个值得留意的点:413 在两侧都被映射为 如果方便,把 |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
长会话被服务端以裸 413 拒绝且不可恢复;默认协议切到 messages 后集中出现
Summary
b0641b83fc把 DeepSeek 默认协议从chat-completions切到messages之后,原本可正常使用的长会话开始被服务端以 HTTP 413 拒绝,且此后每次恢复都失败、无法自救——恢复必须重放整份历史,于是每次重发都再次 413。实测窗口:升级到0.1.6-alpha.1后 39 分钟首次出现,升级前同一条会话一直可用。本贴有两条可独立确认的问题线索:
error.message),而 DSH 已把原始响应体读进内存(protocols/chat-completions/adapter.ts:348的rawResponse)、放进Error.cause:364,却从不写入会话事件。结果是 UI 与日志里只剩一个状态码,用户和维护者都无法据此定位——这一条不依赖任何复现成本,读代码即可确认;Reproduction
复现成本较高(需要一条长期积累的大会话),故分两部分给出。
现象部分:
messages协议(当前默认)下积累长会话(本机实例:会话日志约 13 MB,含多张图片附件);INVALID_REQUEST,不在默认重试集合内(packages/llm/llm/src/retry-policy.ts:18-24的DEFAULT_RETRYABLE_CODES只有EMPTY_RESPONSE/RATE_LIMIT/SERVER/TIMEOUT/TRANSPORT)。本机会话日志中该会话共有 5 次 413 尝试,位于 turn 76–80、每回合各 1 次、间隔 11 分钟至 22 小时,均为手动重发,期间无llm/retry事件;chat-completions)一直正常工作。可独立确认部分(无需大会话):
在
protocols/chat-completions/adapter.ts:346-352可以看到,报错文案仅在响应体可解析且含error.message时才被替换:UI 上看到默认文案,即证明服务端未提供 message;而该响应体不出现在会话日志里(本机逐类事件核查未发现承载它的记录),因此无从取证。
protocols/messages/transport.ts:25同理(缺省回退为DeepSeek Messages request failed (${status}))。Current behavior
报错文案不含原因:
不可恢复:恢复会话必须重放整份历史,每次尝试都重复触发同一个 413;
该会话历史中曾成功压缩过一次(
compaction/start→compaction/summary,约 40 KB),但未能阻止 413。413 出现在"恢复后的第一次请求"(本机实例,两次分别在不同协议下):
2026-09-15T12:42:38Zuser/message(293 B) →request/header(28 KB) →assistant/attempt→ 413 →turn/end2026-09-15T13:06:24Zturn/end(另三次同型失败:
turn 78/79于2026-09-15T13:17:49Z、13:28:59Z,turn 80于2026-09-16T11:30:19Z——均为手动重发。)已排除"请求体字节数超限"(同机实测,Node v26,同一网络环境):
/chat/completions401(无效 key 的正常响应),无一 413/anthropic/v1/messages401,无一 413即网关本身并不按该量级拒收 body;413 更可能来自认证之后的语义层判定。另注:
protocols/chat-completions/adapter.spec.ts:1424的既有预期为httpErrorCode(413, { code: 'context_length_exceeded' }),倾向于同一方向。升级时间线(本机
update-dsh.log):Expected behavior
按优先级建议:
rawResponse已在cause里,仅差一步写入。当前缺口使这类问题只能靠外部复现,用户与维护者都无从定位;建议至少记录其分类结果,避免泄露敏感 body 时也可只记status+ provider 错误码/类型;.agents/notes/implemented/feature/2026-09-07-deepseek-messages-adapter.zh.md写明"切换协议保留已有端点覆盖,部署者负责其兼容性",但未覆盖"存量会话可能因此不可用"。建议在发布说明中提示,或提供迁移检查;Environment
0.1.6-alpha.1(0d1f50007f),Windows 11deepseek-official/deepseek-flash(DeepSeek-V41-Flash);contextWindow= 默认1_000_000,maxTokens= 默认256_000messages(默认);实测显式切chat-completions后同样 413,故非协议本身所致protocols/messages/transport.ts:25、protocols/chat-completions/adapter.ts:346-364、common/models.ts、common/request-pricing.tsb0641b83fc、7d3dab66a2、a7070008e7All reactions