dsh-rule-guard: Rule and Target Verification Before Side-Effect Execution

前言

在 DeepSeek Harness(DSH)里跑长任务时,Agent 常会改到未点名的文件、顺手重构,或把试探性话术当成执行指令。Harness 本身不会替你在每次写盘、跑 shell 前做「是否仍在当前目标内」的独立判断。社区插件 dsh-rule-guard(维护者 yunling-bionic,分类 admin-security)挂在 tools/pre-execute 钩子上:对有副作用的工具调用先做一次 fail-closed 复核,不在目标内则拒绝执行,并把违反点与修正建议回给模型。下面介绍其定位、送审范围、安装方式与规则来源。

这是什么

dsh-rule-guard 是 DSH 的护栏插件(当前版本 0.4.3,MIT 许可,依赖 DeepSeek Harness ≥ 0.2.x)。判据只有一条:这一动作是否在当前目标之内;是否写文件、技术风险、代码风格差异均不作为单独判据。复核输入为项目规则、本会话用户最近一条指令,以及待执行动作(工具名、参数与脚本正文开头 4 KiB)。插件不含硬编码项目规则,规则由工作区与插件数据目录中的 Markdown 文件提供;中英双语文档见 GitHub 仓库。

核心功能

Fail-closed 判决

情形 处理
明确不在目标内 拒绝
复核失败(模型调用异常) 拒绝
复核输出不可解析 拒绝
多路判决冲突 拒绝

本版本无 fail-open 放行分支,亦无豁免开关;表述模糊的指令会被直接拒绝,这是设计取舍。

送审与免审

送审(有副作用的动作)包括:文件写入与编辑(write / edit / str_replace_editor 及脚本内落盘);shell 非只读命令(重定向、装包、起服务等);网络请求、子代理、定时任务、桌面与 office 落盘;未知工具默认送审;读取工作区外路径。

免审:工作区内纯读取;只读 shell 白名单(如 Get-Content、git log)。

工作原理概要

有副作用的动作 / 未知工具 / 读取工作区外
        │
        ▼
   rule-guard 复核(temperature=0)
        │
   ┌────┴─────┐
   ▼          ▼
 allow      deny
   │          │
 正常执行   返回错误(违反的目标 + 修正建议)

拒绝判决按会话缓存 10 分钟;仅复用「拒绝」,不缓存放行。

规则来源(0.4.1 起三者按顺序拼接)

  1. <工作区>/AGENTS.md
  2. <工作区>/.dsh/rules.md(与①二选一即可)
  3. 插件数据目录 RULES.md(首次安装生成,用户改过则不覆盖)

未提供规则文件时,仅按当前目标判断。示例见仓库内 examples/AGENTS.md。

数据目录(与 dshHomePath('rule-guard') 等价):

  • Linux / macOS:~/.dsh/rule-guard/
  • Windows:%APPDATA%\dsh-desktop\harness\rule-guard\

其中含 RULES.md、INSTALL-NOTICE.txt、rule-guard.log 等。首次加载时客户端横幅提示可关闭(只弹一次);升级插件不会覆盖用户对 RULES.md 的改动。

安装与启用

官方安装命令(来自 README):

dsh plugin add dsh-rule-guard

从本地源码目录安装:

dsh plugin add ./dsh-rule-guard

安装前请自行查看 源码与许可证;插件以当前 DSH 进程权限运行,属于软约束,不应视为安全边界。已在 DSH Desktop 0.11.1(Harness 0.2.1-rc.2)实测加载。Node.js 要求 ≥ 20。

社区目录页(与 DeepSeek / 幻方无官方从属关系):https://www.skillhub.cn/plugins/yunling-bionic/dsh-rule-guard

典型用法

指令里写清「做什么、在哪里、为什么」

允许示例:

把 E:\SK\视觉\vision_mem_raw.py 的 --win-sec 默认值改为 60,
因为瞬时层窗口按 60 秒计算。

拒绝示例:

继续 / 优化一下 / 看着办

临时放宽授权范围(无配置开关,靠指令说明)

本轮允许修改 视觉/ 目录下的任何文件,无需逐条确认。
本轮仅执行只读操作,无需复核。

维护项目规则

在工作区根目录维护 AGENTS.md 或 .dsh/rules.md,例如:

# 项目规则

- 只修改用户明确要求的文件,不做顺手重构
- 不改动 dist/、build/ 等产物目录
- 依赖变更必须先说明理由
- 提交前必须通过 npm test

也可直接让 Agent 修改规则文件,例如:「把”提交前必须通过 npm test”加进 AGENTS.md 的项目规则里」。

被拒绝时会话中会显示原因;详细记录见数据目录下 rule-guard.log,event=deny 含 reason、fix 等 JSON 字段。

适用场景与注意

适合:希望 Agent 改文件、跑命令前多一道与项目规则、用户最近指令对齐的检查;团队把约束写进版本库里的 AGENTS.md。

成本与限制(README 说明):每次送审约增加 2–5 秒延迟与少量 token;复核用当前会话模型;模糊指令会被拒;模型可能被措辞误导。

注意:安装前阅读源码与 MIT 许可证;不要指望插件替代权限隔离或审计体系。

结尾

dsh-rule-guard 在副作用动作落盘前插入模型复核,规则来自 AGENTS.md、.dsh/rules.md 与数据目录 RULES.md,判决 fail-closed。安装使用 dsh plugin add dsh-rule-guard 即可接入 Harness 0.2.x 生态。

  • 目录页:https://www.skillhub.cn/plugins/yunling-bionic/dsh-rule-guard
  • GitHub:https://github.com/yunling-bionic/dsh-rule-guard
羽毛球分组比赛记分
小程序二维码

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

Xiaoye