Replies: 2 comments
|
对 alpha.1(HEAD ① 错误泛化(TRANSPORT 丢弃真因)—— alpha.1 仍然成立
if (error instanceof LlmError) throw error
throw new LlmError(`DeepSeek API stream from ${connection.baseURL} failed`, 'TRANSPORT', { cause: error })附件读取 ② 写入时校验缺失 —— alpha.1 已修复(这是最重要的一处)rc.2 时代
也就是说,你复现步骤里"saveImage 传 PNG 声明 + JPEG 字节"在 alpha.1 写入时就会被拒绝,不会再产生坏引用。你那个坏引用是旧版代码写进去的——升级不会治愈已存在的坏引用(见 ③)。 ③ 无恢复路径 —— alpha.1 仍然成立(存量会话仍会被永久瘫痪)读取侧校验依旧严格且无降级分支:
所以升级到 alpha.1 后,历史遗留的坏引用依然每次请求都抛、会话依然打不开——写入时校验只防增量,不救存量。 修复建议(贴合现有机制,非新发明)
一句话:新代码已经拦住了源头(②),但错误分类(①)与存量恢复(③)仍是 alpha.1 的真实缺口——尤其 ③,升级用户手里的坏会话需要明确的处理路径。 |
|
补充已发布的附件排查更新(v0.5.285):https://github.com/sandbaseai/deepseek-harness-handbook/blob/main/docs/en/integrations/general-file-attachments.md\n\n本次把 metadata mismatch、被泛化为 TRANSPORT 的失败边界、写入时校验和不可变 Session 的 clone/omit 恢复契约加入指南。手册是独立社区资料,不是官方插件或 API wrapper。 |
Uh oh!
There was an error while loading. Please reload this page.
环境信息
deepseek-official/deepseek-v4-flash-vision-exp现象
{ mediaType: "image/png", bytes: 87349, width: 820, height: 582 },而其实际存储的字节是 JPEG(52×70)——格式/尺寸与引用不符;AttachmentError: Stored attachment metadata does not match its reference)。关键问题:这是确定性的、与网络无关的失败——同一时刻其它会话的模型请求完全正常,仅携带坏附件的会话瘫痪。但用户看到的错误信息是"网络/流"层面的 TRANSPORT,排查方向完全错误。
根因分析
1. 错误被泛化包装,丢弃真实原因(
dsh-llm-deepseek)lib/index.jsstreamWithConnection()的 catch 分支(约 L1417–L1421):任何非
LlmError的原始异常(包括附件解析阶段抛出的AttachmentError/ 文件读取错误)都被包装成统一的TRANSPORT。cause没有暴露到错误记录(会话 jsonl 中仅持久化message/code),用户和排查者都看不到真实原因。2. 附件校验严格且只在请求时才发现(
dsh-attachment-local)lib/index.jsreadImageFile()(约 L493–L508):对存储字节做 sha256 校验并探测媒体类型/尺寸,与引用逐项比对,不一致抛AttachmentError ATTACHMENT_CORRUPT("Stored attachment metadata does not match its reference")。由于附件写入时(
attachments.saveImage)未对字节做同样的探测/校验,三方插件可以轻易写入"字节与引用不符"的附件;失败被推迟到模型请求构建时,并且每次请求都重新失败——会话历史里没有任何机制移除或替换这条坏引用。3. 无恢复路径
AttachmentError的线索。影响评估
attachments.saveImage的三方插件(画图、截图、网页快照等)一次字段错误即可让一个会话永久瘫痪,且误导用户排查网络/代理/API;复现步骤
attachments.saveImage,传入mediaType: "image/png",但data为 JPEG 字节(可人工构造:把一张 PNG 重编码为 JPEG 后按 PNG 提交);DeepSeek API stream from https://api.deepseek.com failed(TRANSPORT),重试 5/5 全败;会话无法继续。建议改进(按优先级)
cause(至少是 error 类型/消息)持久化并显示;或对附件类错误单独给出明确的错误码(如ATTACHMENT_CORRUPT/ATTACHMENT_MISMATCH)与人类可读消息("附件 xxx (sha256:…) 校验失败:存储为 JPEG 52×70,引用为 PNG 820×582");attachments.saveImage在入库时即探测字节(mediaType/尺寸),与输入不一致时拒绝或修正引用,避免坏引用进入任何会话;本地证据
sha256:79d3e8293c1746d1710b8b87c2a62ae99012b2c0a27fce1351ed379597978c9f(JPEG,87,349 B,SOF0 52×70;引用声明image/png820×582)sha256:4228a140df28101dd47c80b96db7a9b4459ea2a17d4edb494ee104abef48e804(JPEG,82,935 B,SOF0 108×48;引用声明image/png)AttachmentError: Stored attachment metadata does not match its reference.(dsh-attachment-local/lib/index.jsreadImageFile)finish: error …TRANSPORT× 6(首次 + 5 次重试),turn/end error 同文案;两次独立测试均 100% 复现All reactions