DeepSeek Harness 插件 dsh-zcode-rewind:Per-tool-call 工作区检查点

前言

DeepSeek Harness (DSH) 智能体在执行过程中会频繁修改文件或调用 Shell 命令(如 sed -i、rm 等)。现有的回滚插件往往只能捕获回合边界的快照,或者只能识别文件编辑工具的参数,无法记录 Shell 命令产生的副作用。这导致一旦操作出错,难以精确还原到某个步骤之前的状态。dsh-zcode-rewind 旨在解决这一痛点,提供细粒度的、基于工具调用的检查点系统。

插件简介

dsh-zcode-rewind 是 DeepSeek Harness 的一个工作流插件,由 BOWLUNA 维护。它为 DSH 提供了 per-tool-call 工作区检查点功能,能够捕获每一次文件变更和 Shell 命令,以内容寻址的方式存储 Blob,并提供行级差异预览和可逆的还原操作。

核心功能

该插件的核心能力集中在以下几个方面:

  1. 全量捕获:捕获所有 mutating tool call,包括 bash、pwsh、write、edit、MCP 工具以及 subagent 工具。
  2. 记录变更:记录文件的删除、创建和修改,并为每个路径附带可恢复的先前内容哈希。
  3. 内容寻址:存储内容寻址的文件内容(SHA-256),实现跨会话和跨工作区的去重。
  4. 持久化日志:提供按条目顺序排列的持久化变更日志,重启 DSH 后依然存在。
  5. 操作支持:支持手动创建检查点,以及 undo/redo 操作。

安装与前置条件

安装前,请确保环境满足以下要求:

  • Node.js >= 20.0.0
  • DSH >= 0.1.5-alpha.1

安装命令如下:

dsh plugin --profile web add dsh-zcode-rewind

安装完成后,需要重启 DSH 才能使插件生效。可以通过 dsh --profile web --dump-config | grep workspace-rewind 验证插件是否已正确绑定。

使用方式

插件提供了一系列工具命令来管理检查点。以下是主要工具及其用途:

  • rewind_now:创建一个手动检查点,例如在执行高风险操作前。
  • rewind_list:列出最近的记录,按时间倒序排列,显示 ID、时间、工具类型以及变更统计(+added ~modified -deleted)和路径样本。
  • rewind_diff:预览还原计划及行级统一差异,此操作不会实际修改文件。
  • rewind_restore:执行还原操作。mode=revert 用于撤销单条记录;mode=asof 用于将工作区恢复到某个检查点的时间状态。
  • rewind_undo:撤销上一次还原操作,重复执行可切换 undo/redo 状态。
  • rewind_status:显示存储统计信息,包括记录数、Blob 数、字节数、配额和当前配置。

配置项

插件支持通过配置文件调整行为。以下是一个典型的配置示例:

- insert:
    - id: workspace-rewind
      name: 'dsh-zcode-rewind'
      config:
        capture: all            # 捕获模式:all | fileTools | off
        maxFileBytes: 8388608   # 单文件最大字节数,超过仅记录事件
        maxFiles: 20000         # 单次遍历文件数量上限
        maxTotalBytes: 536870912  # 存储总字节数上限,旧 Blob 会自动清理
        keepRecords: 500        # 日志保留条目数阈值
        excludes: ['.git', 'node_modules', 'dist']
        secretNames: ['.env', '*.pem', '*.key']

注意事项

  • Shell 副作用捕获:与市场上其他 rewind 插件不同,本插件能捕获 Shell 命令的副作用(如 sed -i),因为其采用指纹差异对比而非解析参数。
  • 检查点粒度:捕获是基于“每次工具调用”,而非“回合边界”,因此能更精确地定位问题。
  • 存储位置:存储目录位于 $DSH_HOME/workspace-rewind/,位于工作区之外,不会污染 Git 仓库。
  • 去重机制:由于使用 SHA-256 内容寻址,相同的文件内容在多次修改中只占用一份存储空间。

总结

dsh-zcode-rewind 为 DeepSeek Harness 提供了细粒度的、可逆的工作区状态管理能力。对于需要高可靠性和精确控制回滚范围的智能体开发场景,该插件是一个实用的工具。其详细文档与源码位于 GitHub。

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

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

小夜