dsh-edit-guardian:文件变更可视化与命令安全门

在 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 仓库。

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

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

小夜