dsh 规则执行引擎:解析 AGENTS.md、硬拦违反规则的工具调用、文本纠察与审计、/guard 命令、版本化文件守卫、自由区域支持(引擎跳过自由区内容)。
安装
# npm 包(预构建)
dsh plugin --profile web add dsh-rule-engine
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:jilian-dsh/dsh-rule-engine
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本。请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
DSH 规则执行引擎 v3 的插件实现。它把 ~/.dsh/AGENTS.md 当作唯一真相源,自动解析规则四要素与执行等级,再通过「工具守卫 + 文本检测 + 时序检查 + 审计台账」执行用户规则,而不是内置一套与用户无关的安全清单。
项目背景
这个项目来自一个非常具体的个人需求:
- 作者是零编程基础用户,但极其重视规则的制定、执行、遵守与复盘。
- 作者发现:规则如果只写在文本里、靠模型“自觉”执行,会反复失效(例如时间词写错、内联命令违规、交付前漏验证等)。
- 因此核心思路是:规则的执行不能只靠自觉,要尽量靠插件在机制层强制。
- 本插件所有规则均从
AGENTS.md动态解析,规则增删改后无需重写插件。
当前实现基于已有的 AGENTS.md 规则体系拓展,社区暂无类似插件供参考(大概率为该等约束可能限制开发自由性,不适用于专业编程人员),可能存在大量不完备、误判或边界问题。欢迎任何使用者提出调整建议、提交 issue 或 PR。项目仍处于“可运行但需要持续打磨”的阶段。
功能分层
- 阶段 1 容器:解析 AGENTS.md 全部规则 → 理解产物(
rule-understanding.json可生成) - 阶段 2 匹配机 + 工具守卫 + 文本检测
- 阶段 3 时序检查 + 授权询问集成
- 阶段 4 D 级自证调度 +
/guard命令完善
当前实现以「模式库兜底」为主,LLM 理解器预留扩展点;所有规则均从 AGENTS.md 实时解析。
命令
| 命令 | 作用 |
|---|---|
/guard status |
引擎状态(规则数/置信度/放行/解锁) |
/guard rules |
规则清单 + 理解产物 |
/guard active |
最近激活了哪些规则、为什么 |
/guard log [N] |
最近 N 条审计 |
/guard unlock [N] |
解锁配置写保护 N 分钟(仅用户) |
/guard bypass [N] |
临时整体放行 N 分钟(仅用户) |
/guard lock |
立即恢复全部守卫(取消解锁/放行) |
/guard revoke |
撤销全部授权记录 |
/guard reload |
强制重解析 AGENTS.md |
装配方式
本插件已按官方 bundle 规范打包,包内自带 cordis.patch.yml。
推荐安装方式:
dsh plugin --profile web add dsh-rule-engine
或手动将 dsh-rule-engine 加入 profile 的 dsh.profile.bundles 数组。包内的 cordis.patch.yml 会自动挂载插件行:
- insert:
- id: dsh-rule-engine
name: 'dsh-rule-engine'
如果你是从源码手动调试,也可以沿用 insert 方式挂载,但正式安装建议走 bundle。
安全设计
- 只读操作(read/grep/glob/read_image/str_replace_editor view)无条件放行,拦截只针对变更类操作
- 插件自身配置/理解产物对模型只读:直接
edit/write会被守卫拒绝,需/guard unlock - AGENTS.md mtime 变化后自动重解析(
fs.watch+ stat 兜底),规则增删改无需重启 - 低置信规则不参与硬拦,避免误伤;在
/guard rules中标记人工复核 - 授权证据按“操作类型 + 目标路径前缀”结构化匹配,区分“询问”与“授权”
- 备份证据按“目标路径 → 备份路径”记录,删除/覆盖前必须存在对应路径且备份文件真实存在
- 版本/手册类文件写后自检:版本号连续、append 不覆盖上一行,失败自动回滚并审计
- 跨工具一致性:同一敏感操作经
edit/write/str_replace_editor/pwsh必须得到相同拦截/放行结论 - 命令输出静默错误检测:全 false/0/null 或与上一条完全一致时审计 + 注入提醒,不阻断
- 技能目录实时联动:
ctx.skills目录变化后自动刷新,已禁用/不存在的技能不触发 12B - LLM 增量理解:对非 high 置信规则调用
ctx.llm补全结构化理解,失败自动回退模式库 - D 级自证泛化:按规则特征触发自证提示,每规则每会话限 3 次
- 授权记录默认 10 分钟 TTL,无路径的全局授权 TTL 缩短为 2 分钟;可用
/guard revoke撤销 - 用户直接命令式指令(如“删除这个文件”)也视为授权
- 规则 1 支持“用户明确要求重试”豁免
- 会话状态有容量上限并自动清理,防止长跑内存膨胀
- LLM 理解按“规则 + AGENTS.md mtime”去重,避免重复烧 token
- 审计日志:
~/.dsh/rule-engine.log.jsonl - 守卫使用
ctx.tools.guard()单调拒绝,模型无法自行绕过
当前局限与后续优化路线
当前版本已经具备完整四层骨架,但距离“成熟”仍有距离。以下是一些难度较高、尚未完全实现的优化方向,欢迎社区共同推进:
LLM 理解器深化 当前只对非 high 置信规则做一次 LLM 增量理解;未来应支持“规则变更窗口期”、增量重理解、低置信人工复核队列。
授权语义精确化 当前 ask 授权记录为宽泛
any+ 路径前缀;未来可要求 ask 面板显式声明操作类型,或支持“一次授权仅针对单个 callId”。备份证据完整化 当前校验备份文件存在;未来可增加哈希/大小一致性校验、备份链管理与自动清理。
规则 12C / 13B / 10 / 15 / 19 等流程类规则深度执行 这些规则需要更多业务语义(下载校验、会话三层验证、版本判断、知识沉淀),目前偏“自证提示”,尚未做到机器可判定。
跨会话持久化 授权/备份目前为内存态,重启失效。持久化涉及写入保护、并发与恢复,风险较高,暂未实现。
输出文本实时拦截 受 DSH 官方架构限制,
assistant/message无法“拦下不发”,只能事后审计 + 纠正注入;这是平台边界,不是插件能单独突破的。
致谢
感谢以下项目与作者的无私开源付出,本项目在开发过程中直接受益:
- DeepSeek Harness 官方团队(@deepseek-ai):提供了 DSH 平台、插件机制与官方文档。
- 本机已安装插件的作者们:
- dsh-guardian(lonelymoon87)
- dsh-visualize(Nagi-ovo)
- dsh-usage(kestiny18)
- dsh-rules-manager(jilian-dsh)
- dsh-vision-router、dsh-super-injector 等未列出的作者
- 学习参考的社区文档/库作者:
- dsh-handbook(Electricitysheep)
- SandBase deepseek-harness-handbook(sandbaseai)
- 以及 DSH 官方文档镜像与源码维护者
免责声明
本项目是个人/社区项目,不属于 DeepSeek Harness 官方项目,与官方无隶属关系。使用风险自负,请在生产环境前充分测试。
开发与测试
npm test
bash scripts/build.sh
License
MIT
链接
同类插件
PerryLink/dsh-auto-review★ 29
审批链上的第二模型自动审查:只读审查子代理返回带理由的 allow/deny 结构化裁决,默认 fail-closed。
omdsh-dev/dsh-security-audit★ 12
本机安全审计:配置/插件来源/会话/网络暴露面,只读脱敏风险报告。
slywalker2006/dsh-passwords★ 11
让 DeepSeek Harness 变成服务器级多租户平台:远程访问 + 自动 HTTPS、子用户权限与配额、沙盒强制、加密认证与审计日志。
PerryLink/dsh-permission-rules★ 8
Claude Code 风格的声明式权限规则:按序 allow/deny/ask 的 YAML 规则,在 tools/pre-execute 瀑布上匹配工具名、参数、工作区路径与 agent 身份,带完整会话日志审计、干跑模式与热重载。
Yuuz12/dsh-webui-auth★ 7
WebUI 身份认证:HTTP/传输层强制登录(资源、插件 bundle、/api、WebSocket 四层防护),服务端会话 + HttpOnly Cookie。
Letter2025/dsh-approval-llm★ 6
基于模型的权限审批:由独立审查模型自动应答 approval 权限请求。