mask-gateway-dsh-plugin

by ricardo33550336

工具与能力github收录于 08-23

mask-gateway(脱敏转发网关)的 DeepSeek Harness 插件版

DeepSeek Harness plugin edition of mask-gateway (the redaction forwarding gateway).

安装

dsh plugin --profile web add github:ricardo33550336/mask-gateway-dsh-plugin

GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试

安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗

安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。

README

目录

mask-gateway(脱敏转发网关)的 DeepSeek Harness 插件版

把本仓库作者的 mask-gateway(Go 版脱敏转发网关,设计灵感来自 AxonHub 的 Prompt Protection)移植来的提示保护功能做成 DeepSeek Harness(DSH)的 Cordis 动态插件:在模型请求进入会话之前对敏感内容脱敏(mask)或拦截(reject), 并提供设置页管理规则,规则持久化到工作区 mask-gateway-rules.json。

  • mask:命中规则 → 用替换文本把敏感内容替换掉,消息正常进入会话
  • reject:命中规则 → 拦截该 step / 模型请求(等效原网关的 400)

功能

能力 说明
脱敏 / 拦截 agent/pre-step:消息进入会话前 mask/reject;llm/stream:完整模型请求的 reject 兜底
规则管理 UI 设置页「Mask Gateway 脱敏网关」:列表 / 新建 / 编辑 / 启停 / 删除 / 预览
导入 / 导出 Import JSON(兼容原项目 rules.json 纯数组与本插件 {enabled, rules} 两种格式)、Export JSON
持久化 工作区 mask-gateway-rules.json(等价原项目的 rules.json)
正则 JS RegExp 原生支持 lookahead/lookbehind,含编译失败缓存;(?i) 等行内 flag 自动转换

快速开始

本插件是 DSH 动态插件:源码即插件,在 DSH 会话中粘贴定义即可,无需安装、无构建、无 npm 依赖。

方式一:让 AI 加载(推荐)

克隆本仓库后,在 DSH 会话里告诉 AI:

读取本仓库 src/host.js 作为 code.host、src/client.js 作为 code.client, 用 cordis_define 定义插件(idPrefix mask),然后 cordis_run 激活。

首次运行 Client 半部需要在界面上批准。

方式二:手动定义

  1. 打开 DSH,新建会话。
  2. 调用 cordis_define:
    • plugin.kind: "new",idPrefix: "mask"
    • code.host ← 粘贴 src/host.js 全文
    • code.client ← 粘贴 src/client.js 全文
  3. cordis_run 激活(Client 半部需在 Run 卡片上点击允许)。
  4. 侧边栏底部 设置 → Mask Gateway 脱敏网关 管理规则。

验证

node docs/verify-dsh-plugin.js   # 核心脱敏逻辑回归(对应 Go 版 main_test.go 语义,24/24)

规则模型

{
  "id": 1,
  "name": "mask-api-keys",
  "description": "脱敏 OpenAI key",
  "pattern": "sk-[a-zA-Z0-9]{20}",
  "enabled": true,
  "action": "mask",            // "mask" | "reject"
  "replacement": "[REDACTED]", // mask 时必填
  "scopes": []                 // 空 = 应用到所有角色
}

scopes 合法值:system / developer / user / assistant / tool(留空 = 全部)。

拦截语义

  1. mask 规则:agent/pre-step 消息进入会话前脱敏 —— 会话日志、模型请求、回放都只看到脱敏内容 (比原网关只在转发层脱敏更彻底,敏感内容不落盘)。
  2. reject 规则:双重拦截 —— 消息进入时 {kind:'reject'} 阻止该 step; 每次完整模型请求(llm/stream)只读扫描全部角色消息 + system 文本,命中即短路返回 PROMPT_PROTECTION_REJECTED error finish chunk(等效 400)。
  3. 无命中不破坏:无匹配时消息原样透传(对应 TestMaskNoMatchKeepsOriginalBytes)。

项目结构

src/host.js       Host 半部:规则模型/校验/正则缓存/脱敏引擎/持久化/两个 waterfall 监听器/RPC
src/client.js     Client 半部:设置页(settings.section)规则管理 UI
docs/             verify-dsh-plugin.js(回归脚本)

与 Go 原版的关系

mask-gateway(Go) 本插件(DSH)
forward 转发前拦截 agent/pre-step waterfall
protectBody 全请求兜底 llm/stream waterfall(只读 reject)
protect.go 脱敏核心 src/host.js 同构实现
store.go JSON 文件 fs 服务读写 mask-gateway-rules.json
/api/rules REST harness.handle RPC(mgw.*)
static/ 管理界面 src/client.js 设置页

原 Go 实现为仓库作者的 mask-gateway(目前尚未发布到 GitHub),其提示保护(Prompt Protection) 设计借鉴自 AxonHub。

License

MIT

原始 README: https://github.com/ricardo33550336/mask-gateway-dsh-plugin/blob/main/README.md ↗