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 社区目录为准。

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

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

小夜