在 DSH 的开发场景中,使用 danger-full-access 权限虽然能最大化交互能力,但直接使用存在误操作风险。现有的基于 LLM 的自动审批机制(如 Claude Code 的 Auto Mode)虽然能缓解风险,但审查成本较高。dsh-auto-guard 插件旨在给全权限模式加一层 LLM 安全网,通过分层裁决和缓存机制,在降低审批成本的同时控制风险。

核心定位

该插件基于 danger-full-access 兜底,不限制文件系统能力,而是通过规则和 LLM 审查进行安全裁决。它将审批流程分为多个层级,优先使用规则和缓存,仅在必要时调用 LLM,从而减少 token 消耗。

安装与启用

安装插件后,cordis.patch.yml 会注册 auto-guard 预设,覆盖原有的 danger-full-access。

  1. 执行安装命令:
    dsh plugin --profile web add github:Ayle5678/dsh-auto-guard
  1. 在对话框的权限选择器中选择 Auto Guard 预设,即可启用。

功能特性

分层裁决机制

插件采用多层过滤策略,从简单规则到 LLM 兜底:
* File Tracker:写后执行检测。
* 绝对黑名单:危险命令直接拒绝。
* 目录删除复核:要求 agent 提供理由并经 LLM 复核。
* 复合命令处理:智能拆分 ;、&&、||,检测 export、cd 等环境改变命令,对管道进行确定性判断。
* 白名单与缓存:结合静态白名单(含白名单守卫)与动态白名单,支持模板缓存。
* 历史/学习层:利用历史记录和自动生成的学习规则进行低风险放行。
* LLM 兜底:上述规则均无法匹配时,由 LLM 进行裁决。

Guard Memory

具备会话级裁决记忆。首次 deny 后,同命令再次出现会转为 ask 请求人工确认。

审计与安全

  • 敏感路径门禁:对 .env、.ssh 等路径自动降级 LLM 审查。
  • 审查日志与审计加密:支持 SQLite 审计日志(默认关闭),敏感字段使用 AES-GCM 加密存储,开启前需设置审计密码。

配置与使用

启用与配置

插件的所有配置通过 DSH 设置体系管理,主要配置项位于 ~/.dsh/settings.yaml 的 auto-guard: 命名空间下。

auto-guard:
  apiBase: ''                # 直连 OpenAI 兼容端点
  apiKeyEnv: DEEPSEEK_API_KEY
  model: deepseek-v4-flash   # 审查使用的模型
  examineEnabled: false      # 审查日志开关
  auditPassword: ''          # 审计密码
  # ... 其他配置项

自定义规则

用户可编辑 ~/.dsh/auto-guard/rules.json 添加静态放行规则(如 git log)。
例如:

{
  "version": 1,
  "staticAllow": [
    { "pattern": "git log", "reason": "Read-only git log" }
  ]
}

使用示例

  • 在对话框权限选择器中选择 Auto Guard 预设启用。
  • 使用复合命令,如 git status; git branch --show-current,插件会智能拆分并处理。
  • 尝试删除目录时,插件会要求提供理由并经 LLM 复核。

注意事项

  • 安全边界:插件不是沙箱,不承诺绝对安全,不排除极少数隐秘危险命令可能通过审查。请将其视为“安全网”而非“安全边界”。
  • 密钥管理:密钥不落仓库,支持环境变量或 DSH settings 的 secret 字段本地存储。
  • 日志默认关闭:审查日志默认关闭,开启前需设置审计密码。
  • Fail-Closed 机制:无 UI 兜底时,DSH 本身会把 ask 退化为 deny(拒绝执行)。
  • 文件系统能力:插件不限制文件系统能力,尽量不打断正常开发。

总结

dsh-auto-guard 适合需要在 DSH 中使用全权限,但又希望对命令执行进行安全审计和自动化的用户。通过分层规则和缓存机制,它能在保障安全的同时控制审批成本。

GitHub 仓库
社区目录