监控脱敏网关状态并沙箱预演凭据出网脱敏结果
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/11/1 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add amwangfan/dsh-privacy-guard该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · security
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 45 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意未发布到 npm registry,仅可从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-privacy-guard(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/7 16:41:02
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 74 处,展示前 46 条)
- 读取本地文件lib/index.js:7
return existsSync(MANAGER_PATH); - 读取本地文件lib/index.js:11
if (!existsSync(MANAGER_PATH)) { - 执行外部命令固定命令lib/index.js:15
execFile( - 读取本地文件lib/index.js:3150
if (!existsSync2(file)) throw new Error(`no settings file at ${file}`); - 读取本地文件lib/index.js:3151
return yaml.load(readFileSync(file, "utf8")); - 写入本地文件lib/index.js:3237
copyFileSync(file, backup); - 写入本地文件lib/index.js:3247
writeFileSync(file, yaml.dump(cfg, { noRefs: true, lineWidth: 120, quotingType: '"' }), "utf8"); - 写入本地文件lib/index.js:3321
copyFileSync(file, backup); - 写入本地文件lib/index.js:3333
writeFileSync(file, yaml.dump(cfg, { noRefs: true, lineWidth: 120, quotingType: '"' }), "utf8"); - 写入本地文件lib/index.js:3371
copyFileSync(file, backup); - 写入本地文件lib/index.js:3373
writeFileSync(file, yaml.dump(cfg, { noRefs: true, lineWidth: 120, quotingType: '"' }), "utf8"); - 发起网络请求lib/index.js:3420
const resp = await fetch(`${this.gatewayUrl}/privacy/health`, { signal: AbortSignal.timeout(3e3) }); - 发起网络请求lib/index.js:3429
const resp = await fetch(`${this.classifierUrl}/health`, { signal: AbortSignal.timeout(2e3) }); - 发起网络请求lib/index.js:3468
const resp = await fetch(`${this.gatewayUrl}/privacy/dry-run`, { - 发起网络请求lib/index.js:3496
const resp = await fetch(`${this.gatewayUrl}/privacy/exemptions`, { - 发起网络请求lib/index.js:3508
const resp = await fetch(`${this.gatewayUrl}/privacy/key`, { signal: AbortSignal.timeout(4e3) }); - 发起网络请求lib/index.js:3519
const resp = await fetch(`${this.gatewayUrl}/privacy/key`, { - 发起网络请求lib/client.js:332
const r = await fetch(`/api/${PKG}/exemptions`); - 发起网络请求lib/client.js:343
const r = await fetch(`/api/${PKG}/exemptions/audit?since=${cursor.current}&limit=40`); - 发起网络请求lib/client.js:401
const r = await fetch(`/api/${PKG}/health`); - 发起网络请求lib/client.js:500
const r = await fetch(`/api/${PKG}/deploy`); - 发起网络请求lib/client.js:528
const r = await fetch(`/api/${PKG}/deploy`, { - 发起网络请求lib/client.js:559
const r = await fetch(`/api/${PKG}/deploy/logs?part=${part}&lines=120`); - 发起网络请求src/client.ts:333
const r = await fetch(`/api/${PKG}/exemptions`) - 发起网络请求src/client.ts:344
const r = await fetch(`/api/${PKG}/exemptions/audit?since=${cursor.current}&limit=40`) - 发起网络请求src/client.ts:421
const r = await fetch(`/api/${PKG}/health`) - 发起网络请求src/client.ts:528
const r = await fetch(`/api/${PKG}/deploy`) - 发起网络请求src/client.ts:558
const r = await fetch(`/api/${PKG}/deploy`, { - 发起网络请求src/client.ts:590
const r = await fetch(`/api/${PKG}/deploy/logs?part=${part}&lines=120`) - 发起网络请求src/index.ts:84
const resp = await fetch(`${this.gatewayUrl}/privacy/health`, { signal: AbortSignal.timeout(3000) }) - 发起网络请求src/index.ts:94
const resp = await fetch(`${this.classifierUrl}/health`, { signal: AbortSignal.timeout(2000) }) - 发起网络请求src/index.ts:136
const resp = await fetch(`${this.gatewayUrl}/privacy/dry-run`, { - 发起网络请求src/index.ts:165
const resp = await fetch(`${this.gatewayUrl}/privacy/exemptions`, { - 发起网络请求src/index.ts:178
const resp = await fetch(`${this.gatewayUrl}/privacy/key`, { signal: AbortSignal.timeout(4000) }) - 发起网络请求src/index.ts:190
const resp = await fetch(`${this.gatewayUrl}/privacy/key`, { - 读取本地文件src/manager.ts:24
return existsSync(MANAGER_PATH) - 读取本地文件src/manager.ts:29
if (!existsSync(MANAGER_PATH)) { - 执行外部命令固定命令src/manager.ts:33
execFile( - 读取本地文件src/protect.ts:97
if (!existsSync(file)) throw new Error(`no settings file at ${file}`) - 读取本地文件src/protect.ts:98
return yaml.load(readFileSync(file, 'utf8')) as any - 写入本地文件src/protect.ts:226
copyFileSync(file, backup) - 写入本地文件src/protect.ts:243
writeFileSync(file, yaml.dump(cfg, { noRefs: true, lineWidth: 120, quotingType: '"' }), 'utf8') - 写入本地文件src/protect.ts:392
copyFileSync(file, backup) - 写入本地文件src/protect.ts:404
writeFileSync(file, yaml.dump(cfg, { noRefs: true, lineWidth: 120, quotingType: '"' }), 'utf8') - 写入本地文件src/protect.ts:447
copyFileSync(file, backup) - 写入本地文件src/protect.ts:449
writeFileSync(file, yaml.dump(cfg, { noRefs: true, lineWidth: 120, quotingType: '"' }), 'utf8')
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 监控脱敏网关状态
- 沙箱预演凭据脱敏
- 网关路由管理
DSH Web 隐私脱敏守护插件:状态监控看板、出网泄密探测沙箱与网关路由管理(配合 Privacy Gateway)
README
由 DeepSeek 最新模型翻译生成DSH 隐私保护 (Privacy Protection)
DeepSeek Harness (DSH) 隐私保护插件 —— 本地凭据脱敏网关的状态监控、审计看板、豁免白名单、加密密钥管理、凭据保护模型入口与部署控制。
后续计划加入语义敏感信息过滤,因此命名为「隐私保护」而非「脱密」。
配合 amwangfan/privacy-gateway 使用。
🌟 核心功能
1. 🛡️ 状态一览与健康探针:
- 实时探测本地脱密网关(:8317)与千问 Qwen2.5-0.5B 本地小模型服务(:8319)的健康状况与在线时长。
2. 📊 实时审计指标看板:
- 累计拦截脱密凭据数(API_KEY、私钥、数据库密码、JWT、Token 等)。
- 出网流式还原数(DFA 还原计数)。
- 内存 Vault 活跃凭据数。
- 0.5B 本地小模型残差判定命中数与缓存命中情况。
3. 🧪 在线泄密探测沙箱 (Dry-Run Tester):
- 在 DSH 设置页面内直接内置交互式测试沙箱。
- 贴入任意包含 Token、私钥或配置文本,纯本地调用网关仿真接口,毫秒级可视化查看出网时的占位符化结果,验证规则生效情况(完全不出网,安全可控)。
4. 🔑 加密密钥配置(可选):
- 面板可选择用「自动生成的密钥文件」或「自定义口令」加密持久化数据;口令不回显、只提交一次。
展开完整文档(README 剩余 1 节)
DSH 隐私保护 (Privacy Protection)
DeepSeek Harness (DSH) 隐私保护插件 —— 本地凭据脱敏网关的状态监控、审计看板、豁免白名单、加密密钥管理、凭据保护模型入口与部署控制。
后续计划加入语义敏感信息过滤,因此命名为「隐私保护」而非「脱密」。
配合 amwangfan/privacy-gateway 使用。
🌟 核心功能
1. 🛡️ 状态一览与健康探针:
- 实时探测本地脱密网关(:8317)与千问 Qwen2.5-0.5B 本地小模型服务(:8319)的健康状况与在线时长。
2. 📊 实时审计指标看板:
- 累计拦截脱密凭据数(API_KEY、私钥、数据库密码、JWT、Token 等)。
- 出网流式还原数(DFA 还原计数)。
- 内存 Vault 活跃凭据数。
- 0.5B 本地小模型残差判定命中数与缓存命中情况。
3. 🧪 在线泄密探测沙箱 (Dry-Run Tester):
- 在 DSH 设置页面内直接内置交互式测试沙箱。
- 贴入任意包含 Token、私钥或配置文本,纯本地调用网关仿真接口,毫秒级可视化查看出网时的占位符化结果,验证规则生效情况(完全不出网,安全可控)。
4. 🔑 加密密钥配置(可选):
- 面板可选择用「自动生成的密钥文件」或「自定义口令」加密持久化数据;口令不回显、只提交一次。
- 更换密钥时会先重新加密已有凭据并校验,成功后才切换;失败自动回滚,旧对话里的占位符仍可还原。
5. 🔓 豁免白名单与页内横幅提醒:
- 面板实时列出「暂停过滤」的词(范围/理由/操作者/有效期/命中次数),并可逐行编辑:一行一个词,删行即撤销、加行即放行。
- 一旦新增/撤销豁免,页面顶部弹出页内横幅(非浏览器 alert),写明「哪个词 + 什么理由 + 谁放的」。
6. 🛡️ 凭据保护模型入口:
- 一键把现有 provider 复制成一条经网关的链路写进模型列表,原 provider 回到直连;在模型选择里选带「凭据保护」的条目即走网关。
- 内置 DeepSeek(官方 API):内置 provider 是单例、不能复制,所以由代码读取它自己的配置,自动新增一条指向网关 /deepseek 前缀的 OpenAI 兼容 provider(沿用 DEEPSEEK_API_KEY),原文直连链路保留。
7. 🚀 部署控制:
- 面板内直接下载并部署网关 / 小模型、启动停止重启、查看日志,并可修改两者的地址与端口。
🛡️ 凭据保护模型(模型列表里的第二条链路)
面板的「凭据保护模型」卡片会复制一份现有 provider、把 baseURL 指向本地网关、写进 ~/.dsh/settings.yaml 的模型列表;同时把原 provider 改回直连。于是模型列表里同时存在两条链路:
| 条目 | 走向 | 用途 |
| 自建聚合 | 直连后端 :8316 | 不需要脱敏时(最快,无额外延迟) |
| 自建聚合(凭据保护) | 经网关 :8317 | 需要凭据脱敏时 |
| DeepSeek 官方(内置) | 直连 api.deepseek.com | 官方 API 直连 |
| DeepSeek 官方(凭据保护) | 经网关 :8317/deepseek | 官方 API + 凭据脱敏 |
在模型选择里选带「凭据保护」的条目,就用上了网关。 写入后无需重启:DSH 的 dsh-settings-file 用 chokidar 监视该文件,外部编辑会自动重载并发布(刷新页面即可看到)。
写法是整份 YAML 读入→只改 provider 块→写回,写前自动备份为 settings.yaml.bak-plugin-;未涉及的其他设置逐项校验后保持完全一致。
🔓 豁免(Allowlist)机制
默认姿态:全量过滤。 豁免是「对某一个词暂停脱敏」,不是全局开关,并且由网关在代码层强制约束:
| 约束 | 说明 |
| 理由 | AI 入口(CLI)强制要求非空理由;人工直接调网关接口可以不写 |
| 有效期 | 默认长期有效,直到被撤销;需要临时豁免时可显式传 expires_at |
| 可用代号 | --term 可传 vault 代号(如 <SECRET_AWS_AKIA_1>),网关自行解析,AI 不必接触明文 |
| 作用范围 | layer0(正则层)/ layer1(0.5B 残差判定层)/ all |
| 审计留痕 | add / revoke / expire / hit 全部追加到 exemptions.jsonl |
| 精确匹配 | 按完整候选词做边界匹配,不会因为放行一个短词而放过包含它的真实密钥 |
| 仅本机 | 豁免接口只接受 loopback 请求,经 Tailscale/局域网访问一律 403 |
给 AI 的命令入口
/root/privacy-gateway/scripts/privacy-exempt.sh allow --term "<要放行的词或 vault 代号>" --reason "<为什么它不敏感>" [--scope all|layer0|layer1] /root/privacy-gateway/scripts/privacy-exempt.sh revoke --term "<词>" --reason "<为什么可以恢复过滤>" /root/privacy-gateway/scripts/privacy-exempt.sh list /root/privacy-gateway/scripts/privacy-exempt.sh audit
AI 在放行某个词之后,必须在回复中向用户说明放行了什么、为什么;插件会用页内横幅把这次变更同步显示出来。
📦 生态与架构关系
| 组件 | 角色与定位 | 开源仓库 |
| dsh-privacy-guard (本仓库) | DSH Web 客户端管理与监控插件 (Node.js / React / Cordis) | GitHub: amwangfan/dsh-privacy-guard |
| privacy-gateway | 本地高性能出网脱敏网关核心 (Python / FastAPI / DFA) | GitHub: amwangfan/privacy-gateway |
| qwen2.5-0.5b-privacy | 本地凭据残差判别(step-220 LoRA + F16/Q8 GGUF;探针只卡 FPR;弱口令不走硬规则,漏了就漏了) | HuggingFace: amwangfan/privacy-gateway-v4-qwen2.5-0.5b |
🚀 安装与使用
1. 安装插件到 DSH 配置档
进入你的 DSH 环境
dsh plugin --profile web add dsh-privacy-guard
或者本地源码链接安装(开发时推荐,改完 npm run build 重启 DSH 即生效):
cd /path/to/dsh-privacy-guard
npm run build # 用 esbuild 产出 lib/index.js 与 lib/client.js
dsh plugin --profile web add link:$PWD
2. 启动或重启 DSH Web
systemctl restart deepseek-harness.service # 会短暂断开当前页面,刷新即恢复
重启后打开浏览器控制台:
- 侧边栏底部点击 设置 (Settings)。
- 在左侧菜单中即可看到 「隐私保护 (Privacy Protection)」 专属面板。
- 面板内在「豁免名单」卡片可看到当前放行状态;有豁免变更时页面顶部出现横幅提醒。
3. 自检
./scripts/verify.sh # 探测 Host 半注册的 4 条路由
注意:DSH 对所有 /api/ 路由都要求登录态,未认证探测只能看到 401。判断插件是否真的加载,以设置面板是否出现、以及 journalctl -u deepseek-harness.service | grep -i privacy 为准。
🏪 DSH 社区市场登记信息 (community.json)
若向 DSH 官方社区市场提交收录申请,直接使用如下元数据条目:
{
"id": "dsh-privacy-guard",
"name": "隐私保护", "nameEn": "Privacy Protection", "author": "amwangfan", "description": "DSH 隐私保护插件:本地网关凭据脱敏与流式还原,豁免白名单(一行一词、可编辑),加密密钥管理,凭据保护模型入口,以及网关/小模型的下载部署与链接配置。", "descriptionEn": "Privacy protection plugin for DSH: credential redaction and stream restoration through a local gateway, an editable exemption whitelist, encrypted key management, credential-protected model entries, and download/deploy plus link configuration for the gateway and local model.", "repo": "https://github.com/amwangfan/dsh-privacy-guard", "npm": "dsh-privacy-guard", "category": "security", "subcategory": "dlp" }
📄 许可证
Apache License 2.0预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
amwangfan/dsh-privacy-guard
监控脱敏网关状态并沙箱预演凭据出网脱敏结果
相关插件 · 安全 / 权限
智能体逆向工程morluto/rea
用智能体逆向工程任何东西,从应用行为到原生二进制。
★ 426,451已汉化DSH
73.3
智能体集群框架ruvnet/ruflo
面向 Claude Code 与 Codex 的智能体元基座meta-harness。
★ 80,777已汉化MCP
71.8
WorkBuddy 模型接入corrinehu/dsh-workbuddy-connect
2026 年 10 月 20 日起,WorkBuddy…
★ 1,604已汉化DSH
71.7
主动编码智能体deepseek-ai/dsh-superagent-prototype
研究原型,仅供参考,不是 DeepSeek 官方产品。…
★ 15,535已汉化DSH
71.6
破甲一键通z91772524-ai/pojia-next
🌐 官网国内推荐从这里进:
★ 1,021已汉化DSH
71.6
Agent 操作层agentic-os-org/ANOLISA
ANOLISA(Agentic Nexus Operating Layer & Interface System Architecture)|智能体操作系统,带运行时、安全、可观测性,以及 Tokenless 响应压缩,降低 token 用量与成本。
★ 656已汉化DSH
70.7
这是你的仓库?认领条目