dsh-session-repair:扫描并修复 DSH 会话日志

前言

DeepSeek Harness(DSH)会把对话过程写到本地会话日志里,路径一般为 ~/.dsh/sessions/**/session.jsonl.zstd。Harness 升级、手工压缩或日志格式演进之后,旧版 Harness 可能无法启动,或直接抛出 SessionFormatUnsupportedError,整段会话都打不开。

手工解压、重打包 zstd,或逐行改 JSON,成本高且容易再弄坏文件。下面介绍社区插件 dsh-session-repair(维护者 snow-The,分类:工作流):只针对会话日志做只读扫描和受控修复,把常见问题拉回 Harness 能识别的形态。

这是什么

dsh-session-repair 是 DSH 工作流类插件(npm 包名 @snow-the/dsh-session-repair,当前版本 v0.1.0,MIT 许可证)。它扫描并修复 DSH 会话日志,主要处理两类问题:

  1. 单帧损坏的 zstd 日志:文件被整段压成单个 zstd frame 时,Harness 启动会报错(first frame is not exactly one header line)。插件按规范的多帧布局重建:每个 zstd frame 对应一行 JSON。
  2. 未知事件类型:较新 Harness 写入的事件(例如 llm/failover)会让旧 Harness 拒绝整份日志。插件为这些事件加上 "ignorable": true(事件仍保留,Harness 会跳过)。

插件在 package.json 中声明与 DSH 0.2.0-rc.1~0.2.1-rc.2 兼容,并在 0.2.1-rc.2 上验证;engines 要求 dsh 为 >=0.2.1-rc.2 <0.3.0-0,peer 依赖 @deepseek-ai/dsh >=0.2.0-rc.1。

核心功能

修复项

  • 单帧 corrupt logs:重建为「一行 JSON 一个 zstd frame」的 canonical multi-frame 布局。
  • Unknown event types:对运行中 Harness 不认识的类型标记为可忽略,避免旧 Harness 因整日志不支持而失败。

提供的工具

工具名 作用
session_repair_scan 只读报告:每个会话日志的 zstd frame 数、行数、header 合法性、解析错误、未知事件类型。
session_repair_fix 修复问题日志(可限定某个 sessionId)。替换前将原文件备份为 <file>.bak-repair-<timestamp>,重建后校验 frames == lines。修复完成后需重启 Harness。

依赖与安全

  • 系统 PATH 上需要 zstd CLI(Debian/Ubuntu 示例:apt install zstd)。
  • 已知事件类型的白名单较保守;若某类型在你当前 Harness 中实际已支持,修复时可传 extraKnownTypes。
  • 不会原地覆盖:备份 → 写入临时文件 → 校验 → 原子替换;扫描严格只读。

安装与启用

已抓取资料与 SkillHub 目录页、GitHub README 中均未给出固定的 dsh plugin add … 安装命令。请按 DSH 插件安装流程,从社区目录或仓库说明完成安装与启用;安装前请自行查看源码与 MIT 许可证。

插件以当前 dsh 进程权限读写 ~/.dsh/sessions/ 下的文件,安装前应确认来源可信。

典型用法

建议按「先扫描、再修复、最后重启」操作:

  1. 调用 session_repair_scan,查看哪些 session.jsonl.zstd 存在 frame/行数不一致、header 无效、解析错误或未知事件类型。
  2. 对需要处理的日志调用 session_repair_fix(可选指定 sessionId)。确认目录下已生成 .bak-repair-<timestamp> 备份。
  3. 重启 Harness,用目标版本重新加载会话。

具体参数(如 sessionId、extraKnownTypes)以插件在 Harness 中暴露的工具 schema 为准。

适用场景与注意

适合谁

  • 升级或切换 DSH 版本后,旧会话无法打开或启动即报错。
  • 怀疑会话文件被错误地「整文件 zstd 压缩」,或日志里混入了旧 Harness 不识别的事件类型。

注意

  • 修复会改写会话文件(虽有备份与校验);重要会话可在扫描后自行额外复制一份。
  • extraKnownTypes 仅在你确认类型已被当前 Harness 支持时使用,避免误标导致行为异常。
  • 社区目录 SkillHub 是独立站点,与 DeepSeek / 幻方无官方从属关系;插件星标与更新节奏以 GitHub 为准(目录页显示 v0.1.0)。

结尾

dsh-session-repair 把会话日志的两种常见兼容性问题——单帧 zstd 与未知事件类型——收敛到可扫描、可备份、可校验的修复流程,适合在本地排障时快速恢复 Harness 可读性。

  • 目录页:https://www.skillhub.cn/plugins/snow-The/dsh-session-repair
  • 源码与说明:https://github.com/snow-The/dsh-session-repair
羽毛球分组比赛记分
小程序二维码

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

小夜