Skip to main content
J

dsh-rule-engine

jilian-dsh/dsh-rule-engine

Rules execution engine for dsh: parses AGENTS.md, hard-blocks rule-violating tool calls, text-based B/D rule auditing, /guard command, version-guard for versioned files, and free-zone support (engine skips free-zone sections).

Install

dsh plugin --profile web add github:jilian-dsh/dsh-rule-engine

README

dsh-rule-engine

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() 单调拒绝,模型无法自行绕过

当前局限与后续优化路线

当前版本已经具备完整四层骨架,但距离“成熟”仍有距离。以下是一些难度较高、尚未完全实现的优化方向,欢迎社区共同推进:

  1. LLM 理解器深化 当前只对非 high 置信规则做一次 LLM 增量理解;未来应支持“规则变更窗口期”、增量重理解、低置信人工复核队列。

  2. 授权语义精确化 当前 ask 授权记录为宽泛 any + 路径前缀;未来可要求 ask 面板显式声明操作类型,或支持“一次授权仅针对单个 callId”。

  3. 备份证据完整化 当前校验备份文件存在;未来可增加哈希/大小一致性校验、备份链管理与自动清理。

  4. 规则 12C / 13B / 10 / 15 / 19 等流程类规则深度执行 这些规则需要更多业务语义(下载校验、会话三层验证、版本判断、知识沉淀),目前偏“自证提示”,尚未做到机器可判定。

  5. 跨会话持久化 授权/备份目前为内存态,重启失效。持久化涉及写入保护、并发与恢复,风险较高,暂未实现。

  6. 输出文本实时拦截 受 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

Related plugins