前言¶
DeepSeek Harness(DSH)的插件化架构允许开发者灵活扩展功能,但会话日志的损坏始终是一个风险点。即便有防止并发写入的插件,进程崩溃或冷加载时的数据损坏依然可能发生。dsh-session-snapshot 旨在填补这一残留的缺口。它在每个回合结束时验证日志是否可加载,若可加载则将其提升为快照。这样,当日志损坏时,损失被限制在当前正在进行的回合中。
定位¶
这是一个为 DeepSeek Harness 提供会话备份的插件。它提供滚动且经过完整性验证的备份,确保损坏带来的损失最小化。该插件由 po-et 维护,属于「记忆」类别。
核心能力¶
- 自动快照:在回合边界自动创建快照。
- 完整性验证:在将日志提升为快照前,先验证实时日志是否仍可加载。
- 良好副本保留:确保在回合边界保留经过验证的良好副本。
- 轻量级运行:零运行时依赖。
安装与启用¶
目前该插件未发布到 npm,需要直接从 GitHub 安装。
dsh plugin --profile web add github:po-et/dsh-session-snapshot
安装后,插件会在回合边界自动运行。如果使用 AI 代理,可以指示其安装此插件。
使用示例¶
即使 DSH 本身无法启动,也可以使用 npx 运行此插件。
列出所有会话的快照和健康状态:
npx github:po-et/dsh-session-snapshot
列出特定会话(通过 ID 片段)的快照:
npx github:po-et/dsh-session-snapshot list 37374e34
恢复最新的验证快照:
npx github:po-et/dsh-session-snapshot restore 37374e34
注意:restore 命令会先将当前文件备份为 <artifact>.pre-restore-<time>,且只恢复能够通过验证的快照。
手动立即创建快照:
npx github:po-et/dsh-session-snapshot snapshot 37374e34
配置说明¶
插件支持 YAML 配置,用于控制保留策略和执行频率。
- id: session-snapshot
name: dsh-session-snapshot
config:
keep: 5 # 每个会话保留的快照数量,超过此数量将删除最旧的
minIntervalMs: 0 # 同一会话快照间的最小间隔(毫秒),0 表示每次变化都创建
# home: /custom # 默认为 $DSH_HOME (~/.dsh)
快照文件保存在 $DSH_HOME/session-snapshots/<session-id>/ 目录下。
范围与注意¶
- 备份范围:快照仅包含会话日志的点时副本,不备份工作区文件。
- 格式支持:支持会话格式版本 0(
.l和.l.zstd)。由于 DSH 处于 1.0 版本前(预览版),不保证格式兼容性。 - 未知版本:遇到未知版本时,工具会拒绝处理并提示错误,而不是尝试猜测。
- 依赖:MIT 许可证,零运行时依赖(压缩处理依赖 Node.js 内置 zlib)。
结尾¶
dsh-session-snapshot 是会话完整性套件的一部分,配合会话防护和救援插件使用,能够有效降低会话数据丢失的风险。更多详情请访问插件目录页或 GitHub 仓库。