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_repair 的 apply 默認爲 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_scan、session_inspect、session_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
羽毛球分组比赛记分
小程序二维码

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

小夜