DSH plugin add 装插件后会话打不开?DeepSeek Harness 会话缓存修复

故障排查发布于 2026-08-27作者: DSH Plugin 插件中心
DeepSeek HarnessDSH plugin add会话打不开session.jsonl.zstdpreset failed to mount
dsh plugin add 后会话打不开、报 preset standard failed to mount?preset 没坏,是磁盘 session.jsonl.zstd 被写脏(seq gap、未知事件、缺 id)。用 dsh-session-surgeon 检查后 apply,先备份。

dsh plugin add 装插件后重启,会话打不开、报 preset standard failed to mount——常见不是 preset 坏了,而是磁盘上的 session.jsonl.zstd 被某次写入弄脏(seq gap、未知事件类型、或 user/message 缺 id),重启后官方从磁盘恢复就整份拒读。 用 dsh-session-surgeon 先检查文件健康,按 health 分类处理(dry-run 预览后 apply,先备份);unknown-type 要卸掉写入该事件的插件。preset 挂载失败是配置/插件问题,修文件救不回 preset,但移走坏日志后 Web 往往能重新起来。

DSH plugin add 后会话打不开长什么样

报错表现为「Resumed Failed For Session」+ preset standard failed to mount,发生在装完插件重启之后。 报告者实跑遇到(讨论原文):

  1. 报告者执行 dsh plugin adddsh-web-search-exa 插件;
  2. 重启后会话打不开,报「preset standard failed to mount」+ Stopped Working;
  3. 关键点:报错归因到 preset/插件挂载上,但真正拖垮会话的往往是会话文件本身被写脏——装插件这一动作触发的写入(或并发写)污染了磁盘上的会话日志。

常见根因:session.jsonl.zstd 被写脏

dsh plugin add 之后会话打不开,常见不是 preset 本身坏了,而是磁盘上的 session.jsonl.zstd 被某次写入弄脏,重启后官方从磁盘恢复就整份拒读。 社区归纳了三种污染形态(来源):

  1. seq gap:事件序号断层(常由双进程并发写导致,详见《DeepSeek Harness 会话日志报 seq gap 打不开》);
  2. 未知事件类型:插件往会话里写了官方不认识的 unknown-type 事件;
  3. 缺 iduser/message 事件缺 id,物化时解析失败。

无论哪种,官方恢复路径的策略都是「整份拒读」——宁可打不开也不冒险恢复脏数据。

排查步骤:用会话医生检查文件健康

检查手段是 dsh-session-surgeon,它不走官方 history 物化,先看文件健康再决定修不修。 按步骤操作:

  1. 安装工具:执行:
bash
dsh plugin --profile web add "github:xiaoshenming/dsh-session-surgeon#main"
  1. 定位会话文件:确认出问题的会话在磁盘上的位置(session.jsonl.zstd):
bash
ls -lh ~/.dsh/profiles/<name>/sessions/
  1. 重启:重启 dsh webCtrl+C 后重新启动),左侧「会话医生」选中出问题的那条会话;
  2. 看 inspect 输出:把 health / issues 贴出来(不要上传整份会话文件,只贴健康摘要);
  3. 按 health 分类决定处理方式,见下一节。

按 health 分类处理

两类处理路径,先判断再动手,全部先备份。 具体如下:

  1. seq-gap-* / torn / message-missing-id:默认 dry-run 预览,确认后再 apply(工具会先落 .bak.<utc> 备份);缺 id 只补 id,不丢内容
  2. unknown-type:插件写了官方不认识的事件。不要给别人的自定义事件补 ignorable,也不要删行——这时先卸掉那个插件,或把会话目录移出 ~/.dsh/sessions 再开新会话;
  3. preset standard failed to mount 单独处理:这是配置/插件挂载问题,修文件救不回 preset;但把坏日志移走或修好之后,Web 往往能重新起来——两条线分开排查。

社区提醒:报告者后续尝试直接 rm -rf npx 缓存里的子模块(node_modules/@deepseek-ai/*),这是清缓存动作,与会话修复无关;先按上面流程查会话文件健康,别在错误方向上折腾。

修复与预防:可信来源与集中管理

修复顺序是「先备份 → 查健康 → 按分类修 → 移走/卸载异常源 → 重启」,预防要点是装插件来源可信、避免插件往会话里写官方不认识的事件。 装插件本身不危险,危险的是插件把会话/配置环境搞脏还看不出来——如果你希望装插件的过程更可控、装了什么一目了然,DeepSeek Harness 桌面端内置的 DSH Plugin Hubdsh-plugin.org)集中管理插件安装与卸载,每个插件的来源、状态、会话影响都能直观查看,出问题时也能快速定位并清理。

注意事项

  1. 先把坏会话日志移走或修好再重启 Web——否则每次重启都卡在恢复脏会话。
  2. 别上传整份会话文件求诊,只贴 inspect 的 health/issues 摘要即可。
  3. 会话损坏的 seq gap 类根因与修复,参见《DeepSeek Harness 会话日志报 seq gap 打不开?双开进程与中断重试排查》
  4. 同类插件报错还汇总在《DeepSeek Harness 插件报错合集:DSH plugin 不加载、Web UI 异常与会话缓存修复》里。

来源:Discussion #4263dsh-session-surgeon#4598(seq gap 根因)

常见问题

dsh plugin add 装插件重启后会话打不开、报 preset standard failed to mount 是什么原因?

常见不是 preset 坏了,而是磁盘上的 session.jsonl.zstd 被某次写入弄脏(seq gap、未知事件类型 unknown-type、或 user/message 缺 id),重启后官方从磁盘恢复就整份拒读(来源)。

会话打不开报 preset standard failed to mount 和 preset 挂载失败是一回事吗?

不是。preset 挂载失败是配置/插件挂载问题,修会话文件救不回 preset;但把坏会话日志移走或修好之后,Web 往往能重新起来——两条线要分开处理。

怎么用 dsh-session-surgeon 检查 session.jsonl.zstd 会话文件健康?安装命令是什么?

先装工具(不走官方 history 物化):dsh plugin --profile web add "github:xiaoshenming/dsh-session-surgeon#main",重启 dsh web 后在左侧「会话医生」选中该会话,用 ls -lh ~/.dsh/profiles/<name>/sessions/ 确认文件位置,再看 inspect 输出的 health/issues(不要上传整份会话文件)。

会话医生 inspect 显示 seq-gap-* / torn / message-missing-id / unknown-type 分别怎么处理?

seq-gap-* / torn / message-missing-id:默认 dry-run 预览,确认后再 apply(先备份 .bak.<utc>),缺 id 只补 id 不丢内容;unknown-type:插件写了官方不认识的事件,先卸掉那个插件,或把会话目录移出 ~/.dsh/sessions 再开新会话。

怎么预防 dsh plugin add 装插件后会话打不开?哪些插件会污染会话日志?

装插件来源要可信,避免写入官方不认识的会话事件;发现坏会话先移走/修复日志再重启;会话损坏的 seq gap 类根因(双进程并发写)可参考《DeepSeek Harness 会话日志报 seq gap 打不开》

来源