dsh-diff-approval

by 9087

0 开发与运行时github 检测到 manifest package.json#dsh收录于 08-16

DeepSeek Harness待审变更:整文件差异,每文件保留/回滚,创建/删除跟踪,重启安全持久化。

Pending-change review for DeepSeek Harness: whole-file diffs with per-file Keep/Revert, create/delete tracking, and restart-safe persistence.

安装

dsh plugin --profile web add github:9087/dsh-diff-approval

GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试

安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗

安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。

README

目录

English | 中文

npm 版本 CI

一个 DeepSeek Harness(DSH)待处理改动审核插件:自动跟踪每次成功的 edit / write / 编辑器(str_replace_editor)改动,把一个文件的全部未处理改动合并为一条待处理条目,在侧边栏展示每个文件的完整差异,支持保留 / 回退——全程不依赖 git。

待处理改动面板

✨ 功能

  • 差异视图:语法高亮与 +/− 统计,按差异块跳转(上一处 / 下一处)。选中 diff 文本后,底部状态栏显示 文件:起-止 引用——点击(或按 Ctrl+L)即可复制。
  • 高亮语言:diff 底部状态栏可选高亮语言——默认按扩展名自动检测(显示为「自动:…」),也可手动从下拉切换。
  • 保留 / 回退:每个文件一次决定。保留即接受;回退把文件写回最早基准(新建文件则删除,已被删除的跟踪文件则恢复)。
  • 打开 / 定位:从 diff 头部即可在默认应用中打开文件,或在文件管理器中定位它。
  • 持久化:待处理状态按 workspace 落盘至 <dshHome>/diff-approval/workspaces/<workspaceId>.json,跨重启保留——回来时未处理的改动仍在,即便换了新会话。

📦 安装

若 dsh 已在 PATH 中:

dsh plugin --profile web add dsh-diff-approval

若通过 npx 启动 harness(如 npx @deepseek-ai/dsh web):

npx @deepseek-ai/dsh plugin --profile web add dsh-diff-approval

或手动:把本包加入 profile 的 package.json 依赖,并在该 profile 的 cordis.patch.yml 中加入:

- insert:
    - id: diff-approval
      name: dsh-diff-approval
      # 可选:把落盘位置迁到别处(默认是
      # <dshHome>/diff-approval/workspaces)。
      # config:
      #   storageDir: ~/dsh-pending

然后重启 dsh web。

🚀 用法

  1. 照常和 agent 对话——成功的 edit / write 调用会自动记录。
  2. 点击侧边栏底部的 待处理改动 入口(角标显示数量)。
  3. 点击文件行展开该文件的完整差异,用 上一处差异 / 下一处差异 在差异块间跳转。选中文本后点击底部状态栏的引用(或按 Ctrl+L)即可复制行引用。
  4. 保留 接受该文件的改动;回退 恢复其最早基准。处理后该行离开列表。

📝 注意事项

  • 只记录被跟踪的改动(edit、write 与编辑器 str_replace_editor 调用)。通过以上工具以外的删除(如 shell rm)只能对已跟踪的文件感知:条目显示"文件已不存在",回退即恢复。
  • 回退新建文件会删除该文件(文件系统接缝没有删除 API)。
  • 没有 workspace 的会话条目仅存内存;损坏的落盘文件会被拒绝,删除即可重置。

🛠 开发

corepack pnpm install
pnpm run typecheck   # 两个编译面的 tsc
pnpm run build       # 产出 lib/index.js 与 lib/client.js
pnpm test

原始 README: https://github.com/9087/dsh-diff-approval/blob/main/README.zh.md ↗