前言¶
在 DSH 中,agent 会调用 edit、write 与 str_replace_editor 修改文件。若没有统一的审查入口,开发者需要在多个文件之间手动确认哪些改动保留、哪些改动回退。
dsh-diff-approval 提供一个侧栏审查面板:它把成功的文件变更汇总成待处理列表,用整体文件 diff 展示差异,并支持按块、按范围、按文件或全部执行 Keep / Revert。
这是什么¶
dsh-diff-approval 是一个 DeepSeek Harness(DSH)插件,定位为 pending-edit review:它自动记录成功的 edit、write 与 str_replace_editor 变更,并在侧栏汇总为待处理列表。
仓库所有者是 9087,许可证为 MIT。
核心功能¶
下面介绍已核实的能力。
自动跟踪与待处理列表¶
正常使用 agent 时,成功的 edit、write 与 str_replace_editor 变更会被自动记录,并汇总到侧栏的待处理列表。
整体文件 diff 视图¶
面板提供整体文件 diff 视图,包含语法高亮、+/− 计数、滚动条概览、文件内搜索和虚拟化行。
Keep / Revert¶
支持在变更块之间跳转,并对单个块执行 Keep 或 Revert。
也支持拖选行范围后,对选中范围执行 Keep 或 Revert。
支持按文件 Keep/Revert,以及 Keep all / Revert all。
撤销、重做与快捷键¶
提供 Ctrl+Z / Ctrl+Y 的撤销/重做。
支持以下快捷键:
Ctrl+D 快速打开审查面板
Esc 关闭面板
Ctrl+Tab 切换待处理文件
Ctrl+Shift+Tab 切换待处理文件
行引用与 composer¶
支持从 diff 选择文本获得 (file:line) 或 (file:start-end) 行引用,并可复制/按设置自动粘贴到 composer。
语言高亮与换行¶
支持自动检测高亮语言、按语言覆盖和按语言记忆自动换行。
对比视图¶
支持可选的 side-by-side split view 对比视图。
导入工作区版本控制变更¶
支持导入工作区 Git/SVN/Perforce 本地修改、删除和可选 untracked 文件。
持久化¶
支持将 pending 状态持久化到工作区文件并在重启后保留。
安装与启用¶
先确认 DSH 环境中可以使用 dsh 命令。下面命令用于将插件添加到 web profile:
dsh plugin --profile web add dsh-diff-approval
安装后,可以通过侧栏底部的 Pending changes 操作进入审查面板。
典型用法¶
1、正常使用 agent 时,成功的 edit / write / editor(str_replace_editor) 调用会被自动记录。
2、点击侧栏底部的 Pending changes 操作,查看每个文件的 diff 并执行 Keep / Revert。
3、当待处理列表为空时,使用 Import workspace changes 导入工作区的 Git/SVN/Perforce 本地变更。
适用场景与注意¶
适合在 DSH 中审查 agent 产生的文件变更,尤其是需要逐个确认改动、保留部分修改或回退部分修改的场景。若工作区使用 Git、SVN 或 Perforce,也可以在待处理列表为空时导入本地版本控制变更。
需要注意:
- 仅自动跟踪成功的
edit、write与str_replace_editor变更;工具外删除只会在已跟踪文件中显示File is gone,Revert 可恢复文件。 - VCS 导入通过 shell executor 运行只读 Git/SVN/Perforce 命令,相关 CLI 必须位于 PATH。
- 导入 untracked 文件默认关闭,且会扫描整个工作区,大型目录可能较慢。
- Reverting 一个创建的文件会删除该文件,因为 fs seam 没有 delete API。
- Reverting 文件时会按当前行尾(LF/CRLF)保留并写回。
- 无工作区会话的条目仅保存在内存;损坏的持久化文件会被拒绝,可删除以重置。
- 侧栏底部入口会与其他插件垂直堆叠,并在存在
dsh-footer-order插件时让位。 - 插件以当前 dsh 进程权限运行,安装前应检查源码与许可证。
结尾¶
经过上面的步骤,dsh-diff-approval 能把 DSH 中的文件变更集中到可审查、可撤销、可批量处理的列表中。仓库地址如下:
https://github.com/9087/dsh-diff-approval