🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

命令守卫 john-walks-slow/dsh-command-guard

DeepSeek 客户端
john-walks-slow14 天前有提交已提供中文文档扫描:未发现敏感能力兼容 / 相关生态

按规则拦截危险 shell 命令,命中时弹审批或直接拒绝

30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/17 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/john-walks-slow/dsh-command-guard.git

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
装得上吗
该类项目属生态应用(桌面端 / Web 外壳),不以 dsh plugin add 方式安装,请按仓库说明部署
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 14 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
⚠︎ 实装验证未通过(unknown · 2026/10/18) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🟢 扫描:未发现敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。

扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

DSH 命令级守卫:默认放行,命中规则的危险 shell 命令弹审批或直接拒绝。

README

由 DeepSeek 最新模型翻译生成
dsh-command-guard DSH 的命令级守卫:默认一切放行,命中你配置的规则时 ask(弹审批等你点)或 deny(直接拒绝)。 规则两个维度:command(整条命令行的正则)与 workdir(工作目录正则)。两者都填是「且」,只填一个则另一维不限制;第一条命中的规则生效,其余一律放行。 安装 装插件和「让 ask 能弹出来」是两步——DSH 里这是两个独立的旋钮,本插件只管前者。 第一步:装插件 dsh plugin --profile web add github:john-walks-slow/dsh-command-guard pnpm ≥10 的用户按提示把包名加进 profile 的 pnpm-workspace.yaml → allowBuilds,再重跑一次(插件从源码构建,prepare 是自包含的)。建议 pin 到 commit:github:john-walks-slow/dsh-command-guard#<sha>。
展开完整文档(README 剩余 1 节)
dsh-command-guard

DSH 的命令级守卫:默认一切放行,命中你配置的规则时 ask(弹审批等你点)或 deny(直接拒绝)。

规则两个维度:command(整条命令行的正则)与 workdir(工作目录正则)。两者都填是「且」,只填一个则另一维不限制;第一条命中的规则生效,其余一律放行。

安装

装插件和「让 ask 能弹出来」是两步——DSH 里这是两个独立的旋钮,本插件只管前者。

第一步:装插件

dsh plugin --profile web add github:john-walks-slow/dsh-command-guard

pnpm ≥10 的用户按提示把包名加进 profile 的 pnpm-workspace.yaml → allowBuilds,再重跑一次(插件从源码构建,prepare 是自包含的)。建议 pin 到 commit:github:john-walks-slow/dsh-command-guard#<sha>。

第二步:加一档「全权 + 审批」的权限预设

出厂预设里没有这个组合(danger-full-access 绑死 approval: never;workspace-write 会限制文件写入),所以在 profile 的 cordis.patch.yml 里加一档:

- id: permission
name: "@deepseek-ai/dsh-permission-presets"
config:
presets:
guarded:
sandbox: danger-full-access
approval: ask
name: Guarded
defaultPreset: guarded

- 这一行是整块替换 permission 的 config:若你原本还配着别的预设(read-only / workspace-write / …),要一并写全,否则会被清掉。
- 不加预设也能用,只要会话的 approval 策略本来就是 ask(DSH 未显式设置时的默认值)。但如果会话落在 never 档(如 danger-full-access 预设),ask 规则会退化成硬拒:命令直接失败,并说明命中哪条规则,不会弹窗。

规则

- id: command-guard # 行 id 保持 command-guard:设置页按这个 id 找命名空间 name: dsh-command-guard config: rules: 丢工作区改动 / 改写历史的 git 命令 → 弹审批
- name: git-destructive
command: "(^|[;&|]\\s)git\\s+((reset|clean|rebase|filter-branch|restore)\\b|checkout\\s+(-f\\b|--\\s+\\.|\\.\\s($|[;&|]))|push\\s+(-f\\b|--force)|worktree\\s+remove|stash\\s+(drop|pop))"
action: ask
灾难性形态 → 直接拒绝(不依赖审批策略)
- name: disk-destructive
command: "(^|[;&|]\\s)(sudo\\s+)?(rm\\s+(-[a-zA-Z]+\\s+)(/(\\s|$|\\)|~(\\s|$))|mkfs\\.|dd\\s+[^|;&]of=/dev/|shutdown|reboot)"
action: deny
某个目录里的一切命令都要问
- name: system-dirs
workdir: "^/(etc|opt)(/|$)"
action: ask

正则匹配的是整条命令行的文本:命令里只要出现这个形态就算命中——脚本里的示例、注释、乃至 grep 的目标都算。所以别把危险命令的原文直接写进命令行。

设置页

插件带 web 端面板:设置页里会多出一节 Command Guard,可以增删改规则、逐字段编辑。改动写回 profile 补丁,profile 热加载后 apply 带着新规则重跑,不用重启 DSH。规则直接用文本编辑器改 profile 同样有效。

权限与兼容

- 只拦 bash 工具调用,读它的 command / workdir 两个字段;其它工具完全不经过守卫。
- 不联网、不读写你的文件、不执行任何命令:ask / deny 只是把决定交回 DSH 的审批与工具流水线。
- 走 DSH 保留的 tools/pre-execute 扩展点;运行时依赖只有宿主供给的 cordis / schemastery。
- ask 需要应答者(Web 客户端自带审批 UI)。应答者缺失或策略为 never 时按 fail-closed 拒绝——绝不放行。

MIT License.
预览分享卡片长什么样 ↓john-walks-slow/dsh-command-guard
分享 · DeepSeek Harness Hub
john-walks-slow/dsh-command-guard

按规则拦截危险 shell 命令,命中时弹审批或直接拒绝

回到顶部