dsh-warden: An Adversarial Review Gate for the DeepSeek Harness

前言

DeepSeek Harness (DSH) 的核心能力在于允许智能体调用外部工具。在没有防护的情况下,工具调用的误用或恶意行为可能直接破坏系统环境。DSH 自带的工具审批通常只有“弹窗询问”或“完全关闭”两种模式,前者会打断工作流,后者则失去了防护意义。

dsh-warden 旨在提供第三种方案:平时零打扰,只在真正危险的操作上触发一次低成本审查。它通过挂载在 tools/pre-execute 钩子上,在工具执行前拦截并评估风险。

它是什么

dsh-warden 是 DeepSeek Harness 的一个插件,由 dingchenhui0618-arch 维护,许可证为 MIT。

它是一个“对抗式审查门”:在工具调用执行前,由一个独立的小模型复核该调用是否危险,并返回放行或拦截的指令。所有的判定结果都会在 Web GUI 中实时展示,且每次判定都会记录到审计日志中。

核心功能

两层防御机制

插件采用两层防御策略,第二层仅在第一层未拦截时触发,以确保日常操作无额外延迟。

  1. 第一层(本地正则,零延迟)
    使用本地正则表达式匹配破坏性命令和敏感路径。

    • 破坏性命令:包括 rm -rf(任意旗标顺序)、Remove-Item -Recurse、rmdir /s、format、mkfs、DROP TABLE/DROP DATABASE、git push --force、git reset --hard 等。
    • 敏感路径写入:.env、credential、id_rsa、.ssh、.git/、settings.*、cordis*.yml、AGENTS.md 以及 $DSH_HOME 下的任意文件。
  2. 第二层(模型调用,按需触发)
    对于第一层未命中的调用,插件会将“工具名 + 风险类别 + 完整参数 + 当前会话目标”发送给审查模型,由模型判断是否拦截。

    • 普通读写操作(read/grep/glob)不会进入这套逻辑,不会产生额外延迟。

实时审查与审计

  • Web GUI:在对话视图的“审查”Tab 中,可以查看实时计数(工具调用总数、有风险类别数、送审数、放行数、拦截数、异常降级数)以及最近 60 条判定的详情(时间、工具名、风险类别、耗时、模型、理由)。
  • 审计日志:每一次送审的调用都会追加一行 JSON 到 $DSH_HOME/warden-audit.l,包含时间、工具、类别、决定、理由、模型和耗时。未送审的普通调用仅存在于内存环形缓冲中,不落盘。

可配置规则

默认规则内置在插件中,采取“默认放行,只拦不可逆破坏”的策略。
* 用户可以通过编辑 $DSH_HOME/adversary.md 文件来覆盖默认规则。
* 该文件支持按修改时间自动重载,修改后点击面板上的“重载规则”按钮即可生效,无需重启 DSH。

安装与启用

插件已发布到 npm,支持从 npm 或 GitHub 安装。安装后重启 DSH,对话视图的“审查”Tab 即会出现。

dsh plugin --profile <你的 profile> add dsh-warden

如果需要从源码安装:

dsh plugin --profile <你的 profile> add github:dingchenhui0618-arch/dsh-warden

注意事项

  1. 拒绝询问模式:插件永远不返回 ask。如果审批 UI 不可用或关闭,它会默认拒绝操作。不要依赖它来提供“请确认”的交互弹窗。
  2. 异常容错:插件不会在异常或错误时阻断执行。如果模型不可用、参数无法序列化或发生任何错误,插件会直接放行。它的设计目标是“最坏情况下什么都不做”,而不是“因为插件自身崩溃而锁死工作流”。
  3. 安全边界:它不是一个硬性的安全边界。因为它运行在同一进程内,恶意代码或插件本身仍有可能绕过它。它主要用于降低误操作的概率。
  4. 分类依据:分类基于“工具名 + 参数模式”,而非工具自报的类型。

结语

dsh-warden 通过正则预检与模型复核的结合,为 DSH 提供了精细化的工具调用控制。它不干扰正常的读写操作,只在危险边缘提供兜底保护。对于需要在生产环境或敏感数据上运行 DSH 的用户来说,这是一个值得尝试的安全增强手段。

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

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

Xiaoye