前言¶
在 DSH 里让智能体调用 Shell、读写配置时,有一类风险不依赖「模型有没有听懂你的话」:参数里已经带了 API Key、命令行里已经写了 Stop-Service 或改防火墙的 netsh。这类调用可以靠模式匹配在执行前拦住,却很难指望每次都写进 AGENTS.md 并被模型遵守。
下面介绍社区插件 dsh-agent-guard(维护者 lyc0110,分类 admin-security)。它挂在 DSH 的 tools/pre-execute 上,在工具真正跑起来之前,对可机械判定的危险调用统一走「先问你再执行」,而不是做语义层面的策略引擎。
这是什么¶
dsh-agent-guard 是 DSH 的 pre-execute 门禁插件:在工具调用泄漏凭据、停止服务、提权、或改写本机网络/注册表状态之前,把命中情况交给用户审批。
README 明确说明:它不替代 AGENTS.md 里的软规则(例如「先诊断再修复」);只管一眼能看出来、也不该指望模型每次都记住的那部分。所有规则命中后返回 ask,不硬性 deny;没有可用审批器时,按框架规则会降级为拒绝,方向偏安全。
- 目录页:https://www.skillhub.cn/plugins/lyc0110/dsh-agent-guard
- 源码:https://github.com/lyc0110/dsh-agent-guard
- 许可证:MIT(package.json 版本 0.1.0,
private: true,不走 npm 公开发布)
核心功能¶
规则分两类,定义在 lib/index.js 顶部的 VALUE_RULES 与 SHELL_RULES,纯正则,改完需自检并重启 DSH。
凭据类(任意工具)¶
扫描任意工具的任意字符串参数(含嵌套对象和数组)。触发条件包括:
sk-开头且总长 16 位以上的片段- GitHub 类 token:
ghp_/gho_/ghs_/ghu_/ghr_ AKIA…(AWS 访问键形态)xox?-…(Slack 类 token 形态)
命中后审批弹窗里的片段会对密钥打码(例如 sk-a…yz),避免明文再进对话记录。短占位符(如 sk-10086)低于门槛不触发,减少误报。
Shell 命令类(仅命令行)¶
仅针对 shell 命令行,并按命令边界锚定,避免把命令名写在字符串字面量里时误报(例如 Write-Host "Stop-Service is forbidden")。
| 规则 | 触发条件 |
|---|---|
service |
Stop-Service、Set-Service、Restart-Service、sc.exe stop\|config\|delete\|create |
elevation |
Start-Process … -Verb RunAs、runas |
registry |
reg.exe add HKLM…、New-ItemProperty … HKLM: |
network |
netsh … advfirewall\|firewall、Set-DnsClientServerAddress |
driver |
pnputil /delete-driver |
安装与启用¶
本包不走 npm 公开发布。官方 README 给出两种分发方式;装完后必须重启 DSH(host 插件不做热重载)。
本地目录¶
在 DSH 里通过 plugin_manager 的 install_bundle,target 指向本机解压或克隆后的目录,例如:
file:D:\AgentGeneralWorkSpace\tools\dsh-agent-guard
路径按你本机实际位置填写。
Git 仓库¶
把仓库地址加入 profile 依赖,并把 bundle 名写进 profile:
pnpm add dsh-agent-guard@git+https://github.com/lyc0110/dsh-agent-guard
随后在 profile 配置里把 dsh-agent-guard 加入 dsh.profile.bundles(具体字段以你当前 DSH profile 文档为准)。
维护者在本机用目录联接指向仓库时,改源码只需重启;若 pnpm install 把联接冲掉,可再跑一次 install_bundle。
典型用法:改规则与自检¶
需要扩充或收紧规则时,直接编辑 lib/index.js 中的 VALUE_RULES / SHELL_RULES,然后在插件目录执行自检:
node lib/index.js
README 说明会跑 11 个用例,覆盖每条规则的命中与不命中(含字符串字面量对照)。改规则后应跑一遍,不要只凭肉眼判断正则。
适用场景与注意¶
适合谁: 在本机或固定环境跑 DSH、希望智能体调工具时有一层「凭据与高危主机操作」硬门槛的开发者;与 AGENTS.md 里的行为约束互补,不重复。
务必知晓的边界(来自 README):
- 只看工具参数,看不到你在对话里打了什么字。
- 只认得写死的模式;等价写法(如
& 'Stop-Service'、变量拼出的服务名)拦不住。 - 插件随当前 dsh 进程权限运行;安装前请自行审阅源码与 MIT 许可证,确认规则集符合你的环境。
社区目录 SkillHub 与 DeepSeek / 幻方无官方从属关系;DSH 生态是「一切皆插件」,本插件是其中的 admin-security 类门禁,不是语义安全产品。
结尾¶
dsh-agent-guard 把 pre-execute 用在可机械判定的风险上:凭据形态、停服务、提权、注册表与网络、删驱动等。命中一律 ask,由你决定放行与否;规则集中在 lib/index.js,用 node lib/index.js 自检后再重启 DSH。