dsh-session-repair:修復未知事件類型導致的 DSH 會話日誌

前言

DSH 插件會向會話日誌寫入事件。已覈實資料中,dsh 0.1.0-rc.x 沒有第三方事件類型註冊機制;當外置插件寫入類似 message-edit/version 的事件後,服務重啓恢復該會話時可能拋出 SessionFormatUnsupportedError,導致會話日誌無法正常打開。

dsh-session-repair 針對這個問題提供一個工具:先掃描 zstd 會話日誌中的未知事件類型,再按受控規則補齊 ignorable 標記並重寫日誌。

這是什麼

dsh-session-repair 是一個 DeepSeek Harness 插件,用於修復因未知事件類型導致無法打開的會話日誌。

  • GitHub 倉庫:Equinox7379/dsh-session-repair
  • 許可證:MIT
  • package.json 聲明版本:0.1.0
  • 適用問題:dsh 0.1.0-rc.x 缺少第三方事件類型註冊機制導致的 SessionFormatUnsupportedError

它主要做兩件事:掃描日誌中未知事件類型;在確認後可修復非 live 會話日誌,併爲未知事件補齊 ignorable 標記。

核心功能

掃描未知事件

使用 session_repair 工具的 action=scan 只做報告,默認零改動。輸出字段包括 actionfilesunknownfixable 等。

示例輸出:

{ "action": "scan",
  "files": [ { "file": "--E-surdet--/session-…/session.jsonl.zstd",
    "unknown": { "message-edit/version": { "count": 1, "ignorable": 0 } }, "fixable": true } ] }

修復會話日誌

  • action=repair:修復全部非 live 會話。
  • action=repair_id:修復指定會話,並支持 sessionId 參數。

可靠性約束

  • 修復前強制備份爲 .before-ignorable
  • 已標記事件不重複處理。
  • 保持幀格式合規:首幀恰爲 header 一行,之後每行一幀,壓縮帶校驗和。
  • 解壓失敗或首行非法時中止該文件並報告,不強行寫回。

運行時邊界

  • 零運行時依賴。
  • 無自定義會話事件。
  • 無 HTTP 路由。
  • package.json 聲明 dsh.bundle.patch./cordis.patch.yml

安裝與啓用

安裝命令使用本地路徑形式。將 /path/to/dsh-session-repair 替換爲插件目錄:

dsh plugin --profile web add link:/path/to/dsh-session-repair

安裝完成後需要重啓 dsh web,使插件配置生效。

典型用法

工具名:session_repair

參數:

  • action
  • sessionId

常用動作:

  1. 只檢查不修改:action=scan
  2. 修復全部非 live 會話:action=repair
  3. 修復指定會話:action=repair_id,並傳入 sessionId

scan 輸出示例:

{ "action": "scan",
  "files": [ { "file": "--E-surdet--/session-…/session.jsonl.zstd",
    "unknown": { "message-edit/version": { "count": 1, "ignorable": 0 } }, "fixable": true } ] }

適用場景與注意

適合在以下情況使用:

  • 會話日誌中存在第三方寫入的未知事件類型。
  • dsh 0.1.0-rc.x 中恢復會話時遇到 SessionFormatUnsupportedError
  • 希望先只讀檢查,再決定是否重寫日誌。

使用前注意:

  • 插件會在當前 dsh 進程權限下運行,並操作會話日誌文件;安裝前應檢查源碼、./cordis.patch.yml 與 MIT 許可證。
  • repair 會重寫會話日誌,但會先創建 .before-ignorable 備份。
  • repair 只處理非 live 會話文件;指定會話使用 repair_idsessionId
  • 解壓失敗或首行非法時,該文件會中止並報告,不會強行寫回。

結尾

dsh-session-repair 的價值在於把“未知事件導致會話日誌打不開”的問題拆成兩步:先 scan 報告,再按 ignorable 標記受控修復。

當前可覈實信息爲 MIT 許可證、package.json 版本 0.1.0,倉庫地址爲:

https://github.com/Equinox7379/dsh-session-repair

本文提供的資料未確認目錄頁 URL;如需目錄頁入口,請以可覈實的 DSH 社區目錄爲準。

羽毛球分组比赛记分
小程序二维码

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

小夜