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

对抗审查门 dingchenhui0618-arch/dsh-warden

DeepSeek Harness
dingchenhui0618-arch24 天前有提交已提供中文文档扫描:含敏感能力

危险工具调用执行前由小模型复核并实时报告

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

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dingchenhui0618-arch/dsh-warden
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:待复验
是什么
dsh 原生插件 · security
装得上吗
曾在 dsh 0.2.0-rc.2 下真实安装成功,但当前 dsh 已更新至 0.2.1-rc.5,本站尚未在新版下复验
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 24 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件发起外部网络请求
查看扫描证据(共 5 处,展示前 5 条)
  • 读取本地文件
    lib/index.js:105
    info = statSync(rulesPath)
  • 读取本地文件
    lib/index.js:112
    const text = readFileSync(rulesPath, 'utf8').trim()
  • 写入本地文件
    lib/index.js:132
    appendFileSync(auditPath, JSON.stringify(entry) + '\n')
  • 发起网络请求
    lib/client.js:37
    fetch(API + '/state', { headers: { accept: 'application/json' } })
  • 发起网络请求
    lib/client.js:50
    return fetch(API + '/' + method, {
扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 危险调用执行前复核
  • 独立小模型审查
  • 实时报告审查结果

DeepSeek Harness 的对抗式审查门:危险工具调用执行前,先由一个独立小模型复核,并汇报每次判定结果。

README

由 DeepSeek 最新模型翻译生成
dsh-warden 给 DeepSeek Harness 的对抗式审查门:危险的工具调用在执行前由一个独立的小模型复核,并在 Web GUI 里实时显示每一次判定。 为什么要有它 DSH 自带的工具审批只有一种粒度——弹窗问人。要么每次都问(打断心流),要么整个关掉(危险操作彻底没人把关)。warden 给第三种:平时零打扰,只在真正危险的那一类调用上花一次便宜的模型调用。 它挂在 DSH 留给插件的唯一前置钩子上: tools/pre-execute -> { kind: 'allow' } | { kind: 'deny', reason } | { kind: 'ask' } 它拦什么 两层,第二层只对第一层的命中者触发: 第一层(零延迟,本地正则) - 破坏性命令:rm -rf(任意旗标顺序)、Remove-Item -Recurse、rmdir /s、format、mkfs、dd if=、DROP TABLE/DROP DATABASE、git push --force、git reset --hard、git clean -f、shutdown、Clear-Disk …
展开完整文档(README 剩余 1 节)
dsh-warden

给 DeepSeek Harness 的对抗式审查门:危险的工具调用在执行前由一个独立的小模型复核,并在 Web GUI 里实时显示每一次判定。

为什么要有它

DSH 自带的工具审批只有一种粒度——弹窗问人。要么每次都问(打断心流),要么整个关掉(危险操作彻底没人把关)。warden 给第三种:平时零打扰,只在真正危险的那一类调用上花一次便宜的模型调用。

它挂在 DSH 留给插件的唯一前置钩子上:

tools/pre-execute -> { kind: 'allow' } | { kind: 'deny', reason } | { kind: 'ask' }

它拦什么

两层,第二层只对第一层的命中者触发:

第一层(零延迟,本地正则)
- 破坏性命令:rm -rf(任意旗标顺序)、Remove-Item -Recurse、rmdir /s、format、mkfs、dd if=、DROP TABLE/DROP DATABASE、git push --force、git reset --hard、git clean -f、shutdown、Clear-Disk …
- 敏感路径写入:.env、credential、id_rsa、.ssh、.git/、settings.、cordis.yml、AGENTS.md、$DSH_HOME 下任何文件

第二层(一次模型调用) 把「工具名 + 风险类别 + 完整参数 + 当前会话目标」交给审查模型,按自然语言规则判该不该拦。

普通读写(read/grep/glob)完全不进这套逻辑;普通命令和普通文件写入只计数、不送审。日常工作的额外延迟是 0。

安装

已发布到 npm,装到的是预构建版本(lib/ 是入库的构建产物,不是装的时候现编),不需要授权任何构建脚本:

dsh plugin --profile <你的 profile> add dsh-warden

也可以直接从 GitHub 装:

dsh plugin --profile <你的 profile> add github:dingchenhui0618-arch/dsh-warden

装好后重启 DSH,对话视图里出现「审查」Tab。(桌面端在应用里安装插件,profile 由应用自己管理,不用手敲上面的命令。)

规则

内置一份默认规则(默认放行,只拦不可逆破坏与明显跑偏)。要改就写 $DSH_HOME/adversary.md——文件存在时完全覆盖内置规则,且按 mtime 自动重载,改完点面板上的「重载规则」即可,不用重启。

面板

对话视图 →「审查」Tab:

- 计数:工具调用 / 有风险类别 / 送审 / 放行 / 拦截 / 异常降级
- 最近 60 条判定:时间、工具名、风险类别、耗时、实际使用的模型、拦截理由
- 当前规则来自内置还是文件、文件路径、规则预览

审查面板:一次真实会话里的计数与判定列表

审计

每一次送审的调用追加一行 JSON 到 $DSH_HOME/warden-audit.jsonl(时间、工具、类别、决定、理由、模型、耗时)。未送审的普通调用只进内存环形缓冲,不落盘——否则审计会被普通命令淹掉。

运行时卸载

dsh 0.1.6 起,插件依赖在运行时解析,并且支持在会话中途卸载插件。所以这个插件的每一处注册都有对应的拆除:

- tools/pre-execute 监听器随 fiber 回收
- /dsh-warden 路由与注入的 各自持有 disposer
- client 的共享轮询计时器有一条独立的清理路径——它活在模块作用域,卸载时不能只指望 React 卸载

面板是可丢弃的那一半:如果路由注册失败(webServer 契约变动、宿主没有 web server),插件会吞掉这个失败继续跑。闸门必须活着,面板没有就没有。

test/host.test.mjs 里有一组测试专门钉这件事:跑完全部 disposer 之后路由和监听器都必须消失;webServer.register 抛异常时闸门仍要能拦截;一次跨过卸载点的审查既不能抛异常也不能把自己重新注册回去。

它不做什么(重要)

- 不阻塞正常工作。 任何异常路径一律放行:模型不可用、上游报错、流被取消、输出无法解析、参数无法序列化、目标查询抛异常……全部 allow。这个插件最坏的表现是「什么都不做」。
- 永远不返回 ask。 审批弹窗关闭时 ask 会退化成拒绝,一个犹豫不决的审查员会静默掐死用户的正常工作。
- 分类基于工具名 + 参数模式,不是工具自报的类型。这是刻意的:插件作用域里读不到 agent 作用域的工具注册表。未知工具靠参数里的破坏性特征兜底。
- 不是安全边界。 它降低误操作概率,不防恶意代码——同一进程内的插件本来就能绕过它。

开发

node scripts/build.mjs # 零依赖构建(不需要打包器),产出 lib/
node --test # 30 个测试

测试分两组:classify 是纯函数覆盖;host 用 stub ctx 驱动真实的 apply(),把四个结局都钉住——拦截、放行、五种失败降级、以及「惰性调用一次模型都不调」。

lib/ 是构建产物,改 src/ 后必须重新 build。

License

MIT
预览分享卡片长什么样 ↓dingchenhui0618-arch/dsh-warden
分享 · DeepSeek Harness Hub
dingchenhui0618-arch/dsh-warden

危险工具调用执行前由小模型复核并实时报告

回到顶部