dsh-session-surgeon:修复无法加载的 DSH 会话,并让新会话引用旧会话

前言

DSH 的插件生态把会话管理、侧边栏工具和 CLI 工具都当作可扩展部分。对使用 DeepSeek Harness 的人来说,有两类具体问题:一类是某些会话无法加载,常见原因包括 seq gap、torn zstd frames、lone surrogates;另一类是希望新会话能参考旧会话上下文,而不是重新从零开始。

dsh-session-surgeon 围绕这两件事提供能力:在 DSH 中复制会话 ID、inspect、dry-run repair,也提供 CLI 和 agent tools。下面按定位、功能、安装、用法和注意事项展开。

这是什么

dsh-session-surgeon 是 xiaoshenming 维护的 DSH 插件,许可证为 MIT。它的核心定位是:

Repair DeepSeek Harness sessions that refuse to load (seq gap, torn zstd frames, lone surrogates).

同时,它也提供“复制会话 ID”的路径,让用户在新会话中粘贴旧会话 ID,使新会话参考旧会话上下文。

已核实资料中给出的兼容信息如下:

Compatible with @deepseek-ai/dsh@0.1.0-rc.6

package.json@deepseek-ai/dsh-tools 设为:

^0.1.0-rc.6

并且是 optional。

核心功能

  • 在 DSH 会话 菜单中提供:
  • 复制会话 ID
  • inspect
  • dry-run repair

  • 在侧边栏“会话医生 / Session surgeon”中提供:

  • 浏览会话
  • 复制 id
  • dry-run repair
  • apply repair
  • compact preview
  • export JSONL

  • 修复不可加载的 DSH 会话,涉及:

  • seq gap
  • torn zstd
  • lone surrogates
  • 缺失 message id

  • inspect 会报告:

  • seq gap
  • missing id
  • dangling tool/call

  • 对 dangling tool/call,inspect 只警告,不伪造 tool/result

  • CLI 提供:

scan
inspect
repair
compact
export
index
  • repair 默认是 dry-run;使用 --apply 时先写 .bak.<utc>

  • 安装后提供 agent tools:

session_scan
session_inspect
session_repair

其中 session_repairapply 默认为 false

  • export 默认 redact secrets,可用 --no-redact 关闭。

安装与启用

安装命令如下:

dsh plugin --profile web add "github:xiaoshenming/dsh-session-surgeon#main"

安装后重启 dsh web

重启后,可在 DSH 的会话菜单和侧边栏中看到该插件提供的入口。

典型用法

1. 复制会话 ID,让新会话参考旧上下文

先点击会话 菜单,选择“复制会话 ID”。

然后在新聊天中粘贴类似内容:

Continue from session session-1e66cda9-a046-4893-8f4b-b817080acbea.

如果当前 agent 有工具,也可以写:

session_inspect id=session-1e66cda9-a046-4893-8f4b-b817080acbea

这种方式适合让新会话引用旧会话上下文,而不是直接复制会话文件。

2. 用 CLI 扫描、检查和修复

先扫描:

npx --yes github:xiaoshenming/dsh-session-surgeon scan

再检查指定会话:

npx --yes github:xiaoshenming/dsh-session-surgeon inspect <session-id>

默认 repair 是 dry-run:

npx --yes github:xiaoshenming/dsh-session-surgeon repair <session-id>

确认需要写入时,再加 --apply

npx --yes github:xiaoshenming/dsh-session-surgeon repair <session-id> --apply

--apply 会先写 .bak.<utc>

3. 从本地 checkout 运行

如果你已经在本地 checkout 中,可以直接运行:

node bin/dsh-session-surgeon.mjs scan

适用场景与注意

适合以下使用者:

  • 需要修复无法加载的 DSH 会话。
  • 希望在新会话中引用旧会话 ID 和旧上下文。
  • 需要在侧边栏中查看会话医生 / Session surgeon。
  • 需要通过 CLI 做 scan、inspect、repair。
  • 需要在带工具的 agent 中调用 session_scansession_inspectsession_repair

需要注意:

  • 默认是 read-only;写路径需要 --apply,并先写 .bak.<utc>
  • Windows 下 --apply 对只读备份句柄的 fsync 作为 best-effort 处理。
  • 不要把 @deepseek-ai/dsh-tools 放入 dependencies。
  • export 会 redact sk-*、PEM blocks、home paths,除非使用 --no-redact
  • 不要提交 ~/.dsh/sessions 原始文件,因为它们包含用户文本和 secrets。
  • 该插件不是 marketplace、token heatmap、memory plugin、Codex task store。
  • 插件会以当前 dsh 进程权限运行;安装前应检查源码和 MIT 许可证。
  • DSH 社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系。

链接

GitHub:

https://github.com/xiaoshenming/dsh-session-surgeon

目录页:在 DSH 插件目录中检索:

dsh-session-surgeon
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜