DeepSeek Harness 插件:dsh-rollback

前言

DeepSeek Harness (DSH) 的核心设计之一是插件化。在智能体开发过程中,模型对文件的 write 或 edit 操作,以及外部 bash/run_code 调用,往往是不可逆的。一旦出错,需要人工介入或通过繁琐的命令行恢复。

dsh-rollback 是一个用于 DeepSeek Harness 的文件变更回滚插件。它在插件层通过监听工具调用结果和执行钩子,捕获变更前的状态,并提供回滚能力。

插件概览

  • 插件名称: dsh-rollback
  • 维护者: Taler97
  • 许可证: MIT
  • 核心功能: 捕获文件变更前的镜像,支持通过工具或命令行回滚。

安装与启用

该插件以 bundle 形式提供,无需修改 Harness 核心代码。

  1. 前置条件

    • 确保 dsh CLI 已安装并在 PATH 中。
    • 确保 pnpm 已安装并在 PATH 中(dsh plugin 命令依赖它)。
  2. 安装命令
    在目标 profile 下执行:

    dsh plugin --profile demo add dsh-rollback
  1. 验证安装
    安装后,profile manifest 中会自动包含该 bundle。启动 session 时,模型应当能看到 rollback_files 工具,或者在未发生变更前输入 /rollback 能得到 rollback: nothing to restore 的反馈。

核心功能

  • 变更捕获:捕获 write/edit 工具结果中携带的 before 镜像,以及 bash/run_code 调用前的 workspace 快照。
  • 存储机制:将捕获的镜像存储在 workspace 的 git object database 或独立的 snapshot store 中。
  • 回滚接口:
    • 模型工具: rollback_files {count}
    • 用户命令: /rollback [count]

使用示例

用户命令回滚

在 session 的聊天输入中执行:

  • /rollback:撤销当前 session 工作目录中最近一次捕获的 mutation。
  • /rollback 3:撤销最近三次捕获的 mutation。

输出会列出每个恢复的文件及其操作(如 restored 或 deleted)。

模型工具回滚

模型可以通过 rollback_files 工具撤销自身的错误操作。该工具无 prompt section,参数为 {count},表示回滚次数。

配置项

插件支持以下配置(需手动修改 profile manifest 或在 config 中指定):

  • mode (auto | git | snapshot): 存储模式。
    • auto: 默认。如果是 git 仓库则用 git blob,否则用 snapshot。
    • git: 将所有镜像存为 git blob(需仓库)。
    • snapshot: 统一存为 snapshot 文件。
  • storeDir: 存储目录。默认为 Harness home 下的 rollback 目录。
  • maxRecords: 内存中记录的上限,默认 200。超出时丢弃最旧的记录。
  • gitPath: Git 可执行文件路径,默认为 git。
  • notifyModel: 布尔值。手动回滚时是否通知模型(默认通知)。

捕获范围与限制

  • 可捕获: write/edit(需结果带 before 字段)、bash/run_code(需工作区为 git 仓库)。
  • 不可捕获: str_replace_editor、非 git 仓库下的 bash 调用、原始 subprocess。
  • 作用域: 回滚仅限于调用 session 的当前工作目录。

结语

dsh-rollback 是一个轻量级的安全网,通过 git 或 snapshot 存储变更前的状态,允许在智能体运行过程中安全地撤销错误操作。所有代码遵循 MIT 许可证,可在 GitHub 上查看源码。

GitHub 仓库

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

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

小夜