在 DeepSeek Harness (DSH) 的 Web 开发场景中,Agent 执行文件修改或 Shell 命令时,开发者往往难以实时掌握变更细节,且对破坏性操作缺乏有效的阻断手段。dsh-edit-guardian 插件正是为了补齐这一短板而生。
这是一个 DeepSeek Harness Web 插件,由 LWLAymh 维护。它通过在浏览器 UI 中增加文件变更可视化、保留/撤销控制以及危险命令的安全审批流程,帮助开发者更清晰地监控 Agent 的操作。
核心功能¶
1. 文件变更栏¶
当 Agent 通过 write、edit 或 str_replace_editor 修改文件时,工具行会显示 文件 +N行 -M行 [show diff]。点击按钮可展开上下文感知的内联 Diff。变更摘要会显示在输入框上方的持久化栏中,即便 Agent 正在持续工作,该栏也会实时更新。
2. 保留与撤销¶
变更摘要栏允许对每个文件进行精细化控制。每行包含:
* 可打开的文件路径
* 行数统计(+N / -M)
* 显示/隐藏 Diff 切换
* 保留 按钮:标记变更为已接受并移出摘要
* 撤销 按钮:执行 /undo <path> 命令并移出摘要
栏顶部的“全部保留”和“全部撤销”按钮分别对应批量操作。撤销操作依赖于后端的 /undo 命令,该命令会记录 write 和 edit 工具的成功结果,并在撤销时恢复文件状态或删除新建的文件。
3. 危险命令审批与高亮¶
插件监听 tools/pre-execute 事件,对 bash 和 pwsh 命令进行安全检查。如果命令匹配破坏性模式(如 rm、Remove-Item、git reset --hard、curl|sh 等),执行流程会被路由至审批流程,在命令运行前弹出提示。
在 Shell 工具行中,匹配的危险文本会以红色高亮显示。当工具调用请求沙箱权限提升(sandbox_permissions)时,受影响的路径或工作目录也会标红并显示“需要权限”徽章。如果用户拒绝审批或取消操作,命令将不会执行。
安装与启用¶
使用官方安装命令将插件添加到 Web 配置文件:
dsh plugin --profile web add dsh-edit-guardian
安装完成后,需重启 Web 进程以使插件生效:
dsh --profile web
插件不支持热重载到已运行的进程。
典型用法¶
- 跳过审批:在 Web UI 中切换到“Full access”预设(
danger-full-access沙箱模式),可以跳过危险命令的审批提示,匹配 DSH 的现有语义。 - 查看变更:点击工具行上的“show diff”按钮查看详细的上下文感知变更。
- 撤销操作:使用
/undo命令可以撤销由write或edit产生的变更。注意,此功能仅适用于write和edit工具的结果,str_replace_editor和 Shell 命令的变更无法通过此命令恢复。
注意事项¶
- 撤销限制:
/undo命令仅能恢复由write或edit工具产生的变更。通过str_replace_editor修改的文件无法通过撤销恢复;Shell 命令产生的变更也不受此限制。 - 重启要求:修改插件源码后,必须重新执行安装命令并重启 Web 进程才能生效。
- 卸载:如需移除插件,请使用以下命令:
dsh plugin --profile web remove dsh-edit-guardian
总结¶
dsh-edit-guardian 通过 UI 层面的增强,解决了 Agent 操作的可见性和安全性问题。如需了解更多或查看源码,请访问插件目录或GitHub 仓库。