DSH Plugins Marketplace

DSH Plugins

Plugins

/

Security & Audit

/

dsh-alpha-guard

x

dsh-alpha-guard

Manifest valid★ 1

Policy-layer guard for DeepSeek Harness: read whitelist, sensitive-path deny list, dangerous-command blocking, subagent isolation, install approval (2-minute single-use) and malware static audit. A first line of defense, NOT an antivirus.

hasBundlePatch

dsh-alpha-guard

License DeepSeek Harness Node selftest Scope

原仓库:https://github.com/xiangshu2026/dsh-alpha-guard 如果你是从别处下载的,建议回原仓库获取最新版与 issue 支持。

给 DeepSeek Harness 的 AI 助手加一层策略护栏:读哪些文件、写哪些目录、能跑哪些命令、 子代理能干什么、下载的可执行文件是否可疑——在工具调用真正执行之前做一次检查。


⚠️ 先读这段:它不是什么

这不是防病毒软件。不是沙箱。不是内核级隔离。不是安全产品。

请把期望值放低,再往下看:

你可能以为实际情况
「装了就不会中毒」❌ 完全不成立。它不扫描病毒库,不做实时文件监控
「能挡住恶意程序」❌ 挡不住。它只对可执行文件做静态特征扫描,加壳/加密的样本特征全无
「能防止数据泄露」❌ 只能拦已知的敏感路径被读取,动态拼接路径、编码载荷都能绕过
「AI 被攻击也安全」❌ 提示注入可能让 AI 自己拼出绕过路径;文本扫描挡不住有心人
「能替代 Defender」❌ 绝对不能。两者不是一个层面的东西,请始终开着系统自带防护

它的准确定位:一道很浅的、针对「AI 助手误操作」的减速带。

两个「2 分钟」是硬限制,不是建议:

  • 临时关防护:2 分钟后自动恢复,不能设成「一直关着」
  • 放行一次安装:2 分钟内有效、只用一次,用完即废

这两个设计就是为了防止「关着关着忘了开」「放行一次放行一辈子」。

它真正擅长的事只有一件:当 AI 想干一件明显不该干的事时,拦一下、记一笔。 比如 AI 突然要读你的 SSH 私钥、要格式化 C 盘、要往系统目录写文件、要装一个来路不明的程序—— 这些它能拦。仅此而已。

不要用它替代任何真正的安全措施。 真正的隔离要靠独立用户 / 容器 / 虚拟机。


适用场景(它适合谁)

✅ 适合:

  • 你想给 AI 助手加一道「别手滑」的保险
  • 你想知道 AI 到底尝试过哪些操作(审计日志)
  • 你是个人用户,在自己电脑上跑,希望有个基本提醒
  • 你把它当成第一层过滤,后面还有别的防线

❌ 不适合:

  • 企业环境、多人共用的机器(它不区分「谁」在操作)
  • 你指望它能挡住针对性的攻击
  • 你要处理敏感数据、受监管数据
  • 你需要合规认证(它没有任何认证)

一句话:这是初步防护,是「聊胜于无」的那一层,不是「万无一失」的那一层。


安装

方式一:作为 DSH 插件安装(推荐)

dsh plugin --profile desktop add github:xiangshu2026/dsh-alpha-guard

或者克隆到本地再装:

git clone https://github.com/xiangshu2026/dsh-alpha-guard.git
dsh plugin --profile desktop add ./dsh-alpha-guard

装完重启一次 DSH(host 半边是 Node 模块,需要重启才换上新代码)。 启动日志里出现 [alpha-guard] active; config=<路径> 即为生效。

首次启动会自动生成默认配置到 %USERPROFILE%\.dsh\alpha-guard\config.json。

方式二:手动链接(调试用)

mklink /J "%USERPROFILE%\.dsh\profiles\desktop\node_modules\dsh-alpha-guard" "<本仓库路径>"

然后在 profile 的 cordis.patch.yml 里加上 dsh-alpha-guard 那一行(见 cordis.patch.yml)。

换机器 / 换用户名要改什么

什么都不用改。 默认配置里所有路径都从 os.homedir() 推导。

工作盘不在主目录下时,用环境变量加白:

setx DSH_GUARD_EXTRA_ROOTS "E:\work;D:\projects"

自测

node test/selftest.mjs

92 个用例。全部通过会打印 ALL SELFTESTS PASSED。 注意:这些用例只验证「策略判断逻辑对不对」,不验证「真实世界安不安全」。


它能做什么(功能说明,不打包票)

下面每条都写清楚「能拦什么」和「拦不住什么」。请按「能拦一半」来预期。

1. 读取白名单

read / read_image / glob / grep 只能访问 read.allowRoots 里的目录, 外加当前会话工作区。

  • 能拦:AI 直接去读 D:\某个没加白的目录
  • 拦不住:pwsh / run_code 里用变量拼出来的路径(文本扫描看不到真值)

2. 敏感区拒绝

凭据文件、密码管理器库、DSH 会话日志与记忆目录、.ssh / .gnupg / .aws、 浏览器配置与 Login Data、微信 / QQ 聊天记录、Windows SAM / SECURITY、 其他用户目录、UNC 网络共享。

  • 能拦:AI 直接写 Get-Content ~/.ssh/id_rsa
  • 拦不住:String.fromCharCode(46,115,115,104) 这种运行时拼出来的路径 (代码里能看到「字符串拼接」这个动作,但看不到拼完是什么)

3. 写入保护

系统目录、凭据、防护配置自身、DSH 安装目录、其他用户目录禁止写入或删除。

  • 能拦:Remove-Item C:\Windows\...
  • 拦不住:一个已经在跑的脚本内部去删东西(那不在工具调用层面)

4. 危险命令拦截

格式化 / 分区、改引导、关机重启、删根目录、禁用 Defender / 防火墙、加管理员账号、 导出 SAM / LSASS、下载即执行、-EncodedCommand。

  • 能拦:明文写出的危险命令
  • 拦不住:Base64 编码后由别的程序解码执行、从文件里读命令再跑

5. 安装审批

系统包管理器安装、Windows 安装包、DSH 插件安装、全局包安装、下载可执行文件—— 默认拒绝,需要主人手动放行。

  • 能拦:AI 自作主张 winget install xxx
  • 拦不住:把 .exe 先改个名字再下载,或者分几步把安装动作拆开

6. 子代理隔离

子代理 / 队友只能读写「工作区 + 临时目录」,禁用 memory、dtodo、 de_channel_send、再嵌套开子代理。

  • 能拦:子代理试图读主会话的记忆
  • 拦不住:子代理把读到的内容通过别的方式带出去(比如写进它被允许写的文件)

7. 外发审计

web_fetch / web_search / bcdp_navigate / de_channel_send 全部记审计(不阻断)。 web_fetch 禁止访问 localhost / 127.0.0.1 / 内网 IP。

  • 能拦:AI 被诱导去读 http://127.0.0.1:8080/admin
  • 拦不住:DNS 重绑定、通过公网域名访问内网服务

8. 恶意文件静态审计

命令里出现真实存在的可执行文件时,只读字节、不运行,按特征打分, 超过阈值拦下并可移入隔离区(改 .bin + 禁止执行 ACL)。

识别的特征:凭据类 API、键盘记录、屏幕捕获、进程注入、网络外发、反分析、 敏感数据路径、加壳(UPX / Themida / VMProtect)、恶意行为字符串。

组合提权示例:

组合加分含义
网络能力 + 敏感数据访问+40可能窃取并外发
凭据 API + 网络能力+40可能读取并回传凭据
键盘记录 + 网络能力+35可能记录按键并回传
进程注入 + 无签名+25典型注入型恶意软件
  • 能拦:特征明显的已知家族样本
  • 拦不住:加壳 / 加密载荷(特征全无)、新写的、改过特征码的、白利用的
  • 会误报:远程桌面、屏幕录制、系统工具、游戏加速器都会命中键盘/屏幕/网络 API

这一项最容易让人产生错误的安全感。请记住:静态扫描看不出运行时行为。


它绝对做不到的事(再说一遍)

  1. 不做实时防护。文件落地后不会持续监控。
  2. 不查病毒库。没有特征库、没有云查杀、没有行为沙箱。
  3. 不拦截运行中的进程。一个已经开始跑的程序,它管不了。
  4. 不防网络攻击。端口扫描、漏洞利用、中间人,都不在它范围。
  5. 不区分「谁」在操作。谁坐在电脑前、谁在 DSH 里打字,它认不出来。
  6. 不保证绕过不了。这是文本扫描 + 路径判断,写代码的人都知道怎么绕。

如果你需要真正的防护:

  • 系统自带 Defender / 第三方杀软 —— 请始终开着
  • 独立 Windows 用户 / 容器 / 虚拟机 —— 真正的隔离
  • 定期备份 —— 唯一能救回数据的办法
  • 不要给 AI 不必要的权限 —— 比任何插件都有效

配置

路径:%USERPROFILE%\.dsh\alpha-guard\config.json (首次加载自动生成;改完下一次工具调用即生效,不用重启)

完整字段见 config.example.json。常用项:

字段说明
read.allowRoots读取白名单根目录
read.denyPaths永远拒绝读取(优先级高于白名单)
read.denyNamePatterns按文件名拒绝(*.kdbx、id_rsa)
write.denyPaths禁止写入 / 删除
commands.modedeny(默认)/ warn(只记录不拦,排障用)
subagent.allowWebfalse = 子代理完全断网
malware.blockAt拦下的风险分阈值,默认 30。调低更严格但误报更多
malware.notifyOnlytrue = 只告警不拦
enabledfalse 临时停用
failClosed插件内部异常时是否拒绝(默认 false,异常时放行并记日志)

config.json 被列为「禁止工具写入」,防止被提示注入自我解除防护。 要改请手动编辑。


配套脚本(主人手动用,模型不能碰)

scripts/ 下有三个工具,都需要主人双击运行,模型无法调用:

pause-guard-2min.cmd — 临时关掉防护 2 分钟

有些操作被防护误拦(比如你自己想装个软件),可以临时关一下。

  • 双击运行,弹出倒计时窗口
  • 2 分钟后自动恢复,窗口可以关掉(恢复进程是独立隐藏的)
  • 关闭期间:读取白名单、敏感路径拦截、危险命令拦截、安装审批、恶意文件审计 全部失效
  • 恢复后会写一行日志到 %USERPROFILE%\.dsh\alpha-guard\pause.log

设计上的小心思:

  • 改配置前先备份成 config.json.bak-before-pause-<时间戳>
  • 只改顶层那一个 "enabled": true,并校验文件长度正好 +1 字节,不对就回滚
  • 配置里有多个 enabled(顶层 + 各子模块),脚本用 IndexOf 取第一个并校验位置 < 400 字符, 绝不误伤子模块
  • 如果上次异常退出留下了关闭状态,下次运行会先恢复

提醒:这是给「确实需要」的场合用的,不要养成长期关着的习惯。 关着的时候它什么都不是。

approve-one-install.cmd — 放行一次安装

防护默认拦安装。你真要装东西时:

  1. 双击这个脚本
  2. 它写一个带时间戳的许可文件到 %USERPROFILE%\.dsh\alpha-guard\install-approval.json
  3. 2 分钟内有效、一次使用,用完自动失效
  4. 然后让 AI 执行安装

这个许可文件本身不授予任何权限——它只是个时间戳,只有本机的 alpha-guard 认它, 而且只认一次。没有网络请求、不含凭据、不上传任何东西。

放行窗口是硬编码的 2 分钟(120 秒),不可延长:

环节实际行为
有效期写入时间戳后 120 秒内有效
使用次数1 次。用掉后文件立刻被改写成 {"used": true},第二次调用直接失效
时钟回拨时间戳在未来(age < 0)直接判无效
子代理子代理不能用这个放行,只有主会话可以
过期后文件留着也不管用,必须重新双击脚本

想改时长可以改 config.json 的 installApproval.windowSeconds, 但默认值 120 秒就是设计意图——够装一个东西,不够做别的。

为什么必须手动:如果模型能自己写这个文件,那安装审批就形同虚设。 所以只有坐在键盘前的人能开这个口子。

guard-pause.ps1 / guard-resume.ps1 / approve-install.ps1

上面两个 cmd 的实际实现。一般不用直接调用,想改时长/行为时看这里。


审计日志

%USERPROFILE%\.dsh\alpha-guard\audit.jsonl

每行一条 JSON:时间、会话 ID、main/subagent、工具名、deny/warn、原因、参数摘要。 超过 5 MB 自动轮转为 audit.jsonl.1(保留一份)。

这是它最有价值的输出——你不需要它挡住一切,但你可以通过日志知道 AI 尝试过什么。

审计账本(防篡改校验)

日志本身也可能被改。bin/audit-ledger.mjs 给每一行登记「行号 + sha256」, 用来证明日志没被动过。

node bin/audit-ledger.mjs --init      # 首次建账本(拒绝覆盖已存在的)
node bin/audit-ledger.mjs --sync      # 把新增行补进账本(老记录不覆盖)
node bin/audit-ledger.mjs --verify    # 校验,不一致则退出码 1
node bin/audit-ledger.mjs --stats     # 统计

为什么是「行号 + 哈希」两个维度:

只有哈希只有行号两者结合
能抓「改了一条」能抓「删了一条」两种都能抓
抓不到删除(剩下的都对)抓不到改写(行数对得上)—

纪律:先 sync 再 verify。 反过来的话,每一行新增都会被误报成「被篡改」, 因为账本里还没有它。

这个账本能做什么、不能做什么:

  • ✅ 能证明:某一行被改过、某一行被删了、行数对不上
  • ❌ 不能证明:整个账本文件被一起替换(账本自己没被保护)
  • ❌ 不能防:有写权限的人同时改日志和账本

所以它是「防误改和防粗心」,不是「防有心人」。真要防篡改,日志得写到 你控制不了的地方(远程 syslog、WORM 存储)。


隔离区

%USERPROFILE%\.dsh\alpha-guard\quarantine\

  • <id>.bin:原始字节,扩展名一律 .bin,双击不会运行
  • <id>.json:元数据(原路径、SHA256、隔离时间、审计结论)
  • 目录额外加了 ACL:当前用户完全控制但拒绝执行

永不自动删除,要取出或删除都得你说话。

命令行工具:

$cli = "$env:USERPROFILE\.dsh\plugins-src\dsh-alpha-guard\bin\quarantine-cli.mjs"

node $cli list              # 列出隔离区
node $cli pending           # 待决队列
node $cli audit 文件路径     # 只审计,不动文件
node $cli get id 目标路径    # 取出
node $cli del id            # 永久删除
node $cli stats             # 统计

如何停用

  1. 临时 2 分钟:双击 scripts\pause-guard-2min.cmd
  2. 临时不限时:把 config.json 的 "enabled": true 改成 false(立即生效)
  3. 彻底:删掉 profile cordis.patch.yml 里 dsh-alpha-guard 那一行,重启 DSH

常见问题

Q:装了是不是就安全了? A:不是。 它只是一道很浅的减速带。系统自带防护请始终开着。

Q:它会不会拖慢 DSH? A:每次工具调用做一次路径/正则判断,开销很小。但恶意文件静态审计要读文件字节, 大文件(默认上限 32 MB)会有可感知的延迟。

Q:误报了怎么办? A:远程桌面、屏幕录制、系统工具、游戏加速器这类会命中键盘/屏幕/网络 API 的软件 确实会误报。把 malware.blockAt 调高(如 60),或者 notifyOnly 设成 true 只告警。

Q:它会不会上传我的数据? A:不会。不联网、不上传、不执行目标文件,所有判断都在本地。

Q:改了 config.json 要重启吗? A:不用,下一次工具调用就生效。

Q:为什么模型不能自己改 config.json? A:故意的。防止提示注入让 AI 给自己解除防护。

Q:failClosed 是什么? A:插件自身出异常时是否拒绝所有调用。默认 false(异常时放行并记日志), 避免插件 bug 把整个助手锁死。如果你更看重安全,可以设 true——但风险是插件一出问题 DSH 就完全不能用。

Q:能挡住提示注入吗? A:挡不住。 它能拦「读了敏感路径」这个动作,但拦不住 AI 被话术说服去做别的事。 提示注入的防御要靠你在输入端把关。


开发者信息

  • 纯 ESM(Node.js),无构建、无第三方依赖
  • 要求 Node ≥ 20、DSH 0.2.x
  • 入口:lib/index.js 注册 ctx.tools.guard;策略引擎在 lib/policy.js
文件职责
lib/index.js插件入口
lib/policy.js策略引擎:白名单、拒绝列表、命令规则、文本扫描
lib/malware-audit.js可执行文件静态审计与打分
lib/quarantine.js隔离区与待决队列
bin/quarantine-cli.mjs命令行工具
scripts/主人手动用的暂停 / 放行脚本
test/selftest.mjs92 项策略自测

最后的免责声明

使用本软件即表示你理解并接受:

  1. 本软件按「现状」提供,不附带任何明示或暗示的担保,包括但不限于 适销性、特定用途适用性和不侵权的担保。
  2. 作者不对任何损失负责,包括但不限于数据丢失、系统损坏、业务中断、 安全事件造成的损失——无论是否与本软件有关。
  3. 本软件不是安全产品,不能替代杀毒软件、防火墙、沙箱或任何专业安全方案。 请勿将其作为唯一的安全措施。
  4. 本软件的策略基于静态规则,存在已知和未知的绕过方式。 作者不保证能拦截任何特定类型的攻击。
  5. 本软件可能误拦正常操作,也可能漏拦恶意操作。 两种情况的后果都由使用者自行承担。
  6. 使用者应自行评估本软件是否适合其使用场景。涉及敏感数据、受监管数据、 生产环境的场景,请勿依赖本软件。
  7. 本软件会记录操作审计日志到本地磁盘,日志内容可能包含路径、命令片段等信息。 请自行评估日志的存放位置与访问权限。
  8. 本软件对故意构造的绕过(动态拼接路径、编码载荷、加壳样本等)基本无效。 如果你面对的是有动机的攻击者,而不是 AI 的误操作,本软件帮不上忙。

如果你不能接受以上任何一条,请不要使用本软件。


许可

MIT

Comments

Loading…

From the same category

dsh-infinite-gen-3

System-prompt armor plugin for DeepSeek models: appends an unconditional-compliance prompt section at order 100, exposes a profile tool with calibration metadata, and shows a realtime armor-status bad

Security & AuditManifest valid

★ 3.3k

MIT

C#

dsh plugin --profile web add dsh-infinite-gen-4

by ADWMC

DeepSeek Harness 破甲一体化安全分析插件:Android · Web · Native · Protocol · Malware · AI-Security 全领域聚合(9 bundle + 1 preset)

Security & AuditManifest valid

★ 961

MIT

Python

Nov 1, 2026

Index only — not installable

by toby-bridges

Local security audit for AI API relays and LLM proxies: detects prompt injection, model substitution, tool-call rewriting, SSE anomalies, error leakage, and Web3 wallet risks.

Security & AuditManifest valid

★ 903

↓ 513/wk

AGPL-3.0

Python

Oct 27, 2026

dsh plugin --profile agent add dsh-api-relay-audit

by SeaOf0

基于dsh web实现的多种模式,目的是服务于redteam进行授权的安全研究,覆盖渗透测试、红队评估、代码审计等范围领域,请勿用于非法行为。(允许二开,赋予模块各位自己的业务逻辑,方法论只有自己熟练的才好用,好的方法论=好的生态)

Security & AuditManifest valid

★ 804

MIT

Python

Oct 27, 2026

dsh plugin --profile web add @dsh-external/dsh-redteam-model

by agentic-os-org

ANOLISA (Agentic Nexus Operating Layer & Interface System Architecture) | Agentic OS with runtime, security, observability, and Tokenless response compression for lower token usage and cost.

Security & Audit

★ 650

Apache-2.0

Rust

Nov 2, 2026

Index only — not installable

by howmp

面向 DeepSeek Harness(dsh)的渗透测试模式 @CloverSecLabs

Security & AuditManifest valid

★ 617

↓ 405/wk

NOASSERTION

JavaScript

Oct 9, 2026

dsh plugin --profile web add @howmp/dsh-pentest