DSH plugin add 装插件后会话打不开?DeepSeek Harness 会话缓存修复
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,发生在装完插件重启之后。 报告者实跑遇到(讨论原文):
- 报告者执行
dsh plugin add装dsh-web-search-exa插件; - 重启后会话打不开,报「preset standard failed to mount」+ Stopped Working;
- 关键点:报错归因到 preset/插件挂载上,但真正拖垮会话的往往是会话文件本身被写脏——装插件这一动作触发的写入(或并发写)污染了磁盘上的会话日志。
常见根因:session.jsonl.zstd 被写脏
dsh plugin add 之后会话打不开,常见不是 preset 本身坏了,而是磁盘上的 session.jsonl.zstd 被某次写入弄脏,重启后官方从磁盘恢复就整份拒读。 社区归纳了三种污染形态(来源):
- seq gap:事件序号断层(常由双进程并发写导致,详见《DeepSeek Harness 会话日志报 seq gap 打不开》);
- 未知事件类型:插件往会话里写了官方不认识的
unknown-type事件; - 缺 id:
user/message事件缺 id,物化时解析失败。
无论哪种,官方恢复路径的策略都是「整份拒读」——宁可打不开也不冒险恢复脏数据。
排查步骤:用会话医生检查文件健康
检查手段是 dsh-session-surgeon,它不走官方 history 物化,先看文件健康再决定修不修。 按步骤操作:
- 安装工具:执行:
dsh plugin --profile web add "github:xiaoshenming/dsh-session-surgeon#main"
- 定位会话文件:确认出问题的会话在磁盘上的位置(
session.jsonl.zstd):
ls -lh ~/.dsh/profiles/<name>/sessions/
- 重启:重启
dsh web(Ctrl+C后重新启动),左侧「会话医生」选中出问题的那条会话; - 看 inspect 输出:把 health / issues 贴出来(不要上传整份会话文件,只贴健康摘要);
- 按 health 分类决定处理方式,见下一节。
按 health 分类处理
两类处理路径,先判断再动手,全部先备份。 具体如下:
seq-gap-*/torn/message-missing-id:默认 dry-run 预览,确认后再 apply(工具会先落.bak.<utc>备份);缺 id 只补 id,不丢内容;unknown-type:插件写了官方不认识的事件。不要给别人的自定义事件补ignorable,也不要删行——这时先卸掉那个插件,或把会话目录移出~/.dsh/sessions再开新会话;preset standard failed to mount单独处理:这是配置/插件挂载问题,修文件救不回 preset;但把坏日志移走或修好之后,Web 往往能重新起来——两条线分开排查。
社区提醒:报告者后续尝试直接
rm -rfnpx 缓存里的子模块(node_modules/@deepseek-ai/*),这是清缓存动作,与会话修复无关;先按上面流程查会话文件健康,别在错误方向上折腾。
修复与预防:可信来源与集中管理
修复顺序是「先备份 → 查健康 → 按分类修 → 移走/卸载异常源 → 重启」,预防要点是装插件来源可信、避免插件往会话里写官方不认识的事件。 装插件本身不危险,危险的是插件把会话/配置环境搞脏还看不出来——如果你希望装插件的过程更可控、装了什么一目了然,DeepSeek Harness 桌面端内置的 DSH Plugin Hub(dsh-plugin.org)集中管理插件安装与卸载,每个插件的来源、状态、会话影响都能直观查看,出问题时也能快速定位并清理。
注意事项
- 先把坏会话日志移走或修好再重启 Web——否则每次重启都卡在恢复脏会话。
- 别上传整份会话文件求诊,只贴 inspect 的 health/issues 摘要即可。
- 会话损坏的 seq gap 类根因与修复,参见《DeepSeek Harness 会话日志报 seq gap 打不开?双开进程与中断重试排查》。
- 同类插件报错还汇总在《DeepSeek Harness 插件报错合集:DSH plugin 不加载、Web UI 异常与会话缓存修复》里。
常见问题
常见不是 preset 坏了,而是磁盘上的 session.jsonl.zstd 被某次写入弄脏(seq gap、未知事件类型 unknown-type、或 user/message 缺 id),重启后官方从磁盘恢复就整份拒读(来源)。
不是。preset 挂载失败是配置/插件挂载问题,修会话文件救不回 preset;但把坏会话日志移走或修好之后,Web 往往能重新起来——两条线要分开处理。
先装工具(不走官方 history 物化):dsh plugin --profile web add "github:xiaoshenming/dsh-session-surgeon#main",重启 dsh web 后在左侧「会话医生」选中该会话,用 ls -lh ~/.dsh/profiles/<name>/sessions/ 确认文件位置,再看 inspect 输出的 health/issues(不要上传整份会话文件)。
seq-gap-* / torn / message-missing-id:默认 dry-run 预览,确认后再 apply(先备份 .bak.<utc>),缺 id 只补 id 不丢内容;unknown-type:插件写了官方不认识的事件,先卸掉那个插件,或把会话目录移出 ~/.dsh/sessions 再开新会话。
装插件来源要可信,避免写入官方不认识的会话事件;发现坏会话先移走/修复日志再重启;会话损坏的 seq gap 类根因(双进程并发写)可参考《DeepSeek Harness 会话日志报 seq gap 打不开》。
来源
- deepseek-harness Discussion #4263:dsh plugin add 后会话打不开,preset standard failed to mount· deepseek-ai(GitHub Discussions)
- dsh-session-surgeon:会话文件健康检查与修复工具· xiaoshenming(GitHub)
- deepseek-harness Discussion #4598:双进程并发写导致会话日志 seq gap· deepseek-ai(GitHub Discussions)