dsh-agent-guard:在工具执行前拦截凭据泄露与高危主机操作

前言

在 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;没有可用审批器时,按框架规则会降级为拒绝,方向偏安全。

核心功能

规则分两类,定义在 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):

  1. 只看工具参数,看不到你在对话里打了什么字。
  2. 只认得写死的模式;等价写法(如 & 'Stop-Service'、变量拼出的服务名)拦不住。
  3. 插件随当前 dsh 进程权限运行;安装前请自行审阅源码与 MIT 许可证,确认规则集符合你的环境。

社区目录 SkillHub 与 DeepSeek / 幻方无官方从属关系;DSH 生态是「一切皆插件」,本插件是其中的 admin-security 类门禁,不是语义安全产品。

结尾

dsh-agent-guard 把 pre-execute 用在可机械判定的风险上:凭据形态、停服务、提权、注册表与网络、删驱动等。命中一律 ask,由你决定放行与否;规则集中在 lib/index.js,用 node lib/index.js 自检后再重启 DSH。

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

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

Xiaoye