前言¶
DeepSeek Harness(DSH)会把提示词、工具返回和附件原样发给模型提供方。对必须把内部文档、代码或客户资料交给云端模型的团队来说,安全评审里常会卡在一个问题:敏感数据会不会离开本机?单靠「让模型记得调用脱敏工具」并不可靠,一旦忘记调用就失效。
下面介绍的 dsh-redact-gateway 在传输边界拦截每一次模型请求:出站前把身份证号、手机号、银行卡、邮箱、地址、姓名、密钥等替换为编号占位符,模型侧只看到脱敏副本;回包再还原,会话里你读的仍是原文。维护者为 luokexiaoguo,在 DSH 社区目录中归类为 admin-security。插件以当前 DSH 进程权限运行,安装前请自行审阅 GitHub 仓库 源码与 MIT 许可证。
这是什么¶
dsh-redact-gateway 是面向 DSH 的出站脱敏网关(Egress redaction gateway):在请求离开本机前检测并替换敏感内容,对响应做流式或块级还原,并在本机保留加密映射表与可校验的审计日志。拦截点在 llm/stream 瀑布流,而非某个可选工具,因此主对话、子智能体、会话标题、压缩等路径上的模型调用都会经过它。
社区目录页:skillhub.cn/plugins/luokexiaoguo/dsh-redact-gateway。该目录为独立社区站点,与 DeepSeek / 幻方无官方从属关系;DSH 生态理念是「一切皆插件」,本插件即其中一类安全类扩展。
工作原理简述¶
会话日志保留原文(用户侧阅读对象)。经 deriveMessages() 冻结请求后,在 llm/stream 拦截链路上完成检测、替换与审计,脱敏后的副本发往模型提供方;返回流再经 rehydration 把占位符换回原文,助手消息仍以原文提交。
与此相关的三条性质(摘自上游说明):
- 模型侧难以绕过:拦截在传输层,不是「可选工具」。
- 用户侧无丢失:占位符只存在于出站副本,还原不依赖猜测或改写历史。
- 可审计:每次替换写入一条记录(类别、规则、占位符、部分掩码、指纹、哈希链),篡改或删行会破坏
verify。
占位符默认可读形状为 [EMAIL_1](单括号、大写类别、递增序号)。还原对多种变体较宽容;模型自行「发明」的占位符不会瞎猜还原,原样透传并计入统计。
法律表述上,这是去标识化(pseudonymisation)而非匿名化:映射可逆且保存在本机,在 PIPL 语境下仍属个人信息范畴,不能当作免除个人数据义务的万能方案。
能检测什么¶
| 类别 | 占位符示例 | 说明要点 |
|---|---|---|
secret |
[SECRET_1] |
厂商前缀、熵、关键词邻近;内置 UUID 等 allowlist 降误报 |
idcard |
[IDCARD_1] |
GB 11643 校验等 |
bankcard |
[BANKCARD_1] |
Luhn + 常见 IIN |
phone |
[PHONE_1] |
号段与边界 |
email |
[EMAIL_1] |
正则与结构检查 |
address |
[ADDR_1] |
省市区 + 路门牌等 |
name |
[NAME_1] |
姓氏表 + 上下文(默认 nameStrict) |
org |
[ORG_1] |
统一社会信用代码 + 名称后缀等 |
custom |
[TERM_1] |
自定义词典,最长匹配 |
优先级(重叠时):secret > custom > idcard > bankcard > phone > email > org > address > name。自定义词典 dictionary 对内部项目名、客户名单等通常比纯启发式更稳;也可通过 redact_dictionary 让智能体维护词条。
工作区策略¶
按会话工作目录最长前缀匹配,子目录可在豁免树内重新强制脱敏:
workspaces:
- path: 'D:/work/public-docs'
policy: bypass
- path: 'D:/work/public-docs/payroll'
policy: enforce
dictionary: ['salary bands', 'comp review 2026']
- path: 'D:/work/legacy-crm'
policy: audit
policy 取值:enforce(默认,替换并记录)、audit(只记不替)、bypass(完全跳过,连审计也不写)。
安装与启用¶
推荐从 npm 已发布包安装(dsh-redact-gateway,当前资料中版本 1.0.0)。官方示例命令如下,请按你环境中的 plugin_manager 用法执行,勿凭插件名自行拼接未出现在文档中的 CLI:
# 已发布包(推荐)— https://www.npmjs.com/package/dsh-redact-gateway
# plugin_manager action=install_bundle target=dsh-redact-gateway
# 目录安装(开发 / 内部分发)
# npm install
# plugin_manager action=install_bundle target=<包目录的绝对路径>
运行环境要求(来自 package.json):Node >=20,DSH >=0.2.2-rc.1 <0.4.0-0。
安装后打开 Settings → Egress redaction gateway 查看状态、切换模式、按类别开关、导出审计 CSV。插件配置落在 profile 的 cordis.patch.yml 对应段落;设置页改动会先作用于运行中进程,再写回配置(写回会重启插件,属预期行为)。
验收:发一条含测试数据(例如虚构手机号)的消息,确认设置页计数器增加;若始终为 0,说明拦截未生效,应先排查再用于生产。
典型配置¶
全局配置节选(字段名以 README 为准):
- id: redact-gateway
name: dsh-redact-gateway
config:
mode: enforce # enforce | audit | off
onError: block # block | pass
categories:
name: false
address: true
dictionary: []
allowlist:
values:
- 'example.com'
- '13800000000'
patterns:
- '@example\.(com|org)$'
minCustomLength: 2
nameStrict: true
promptHint: true
streamRehydrate: true
vaultTtlHours: 168
workspaces: []
dir: '' # 默认 <DSH_HOME>/redact-gateway
audit:
retentionDays: 90
mask: true
dedupe: true
dir: ''
数据落盘目录(默认 <DSH_HOME>/redact-gateway/)包括:master.key、fingerprint.key、按会话的加密 vault、审计链路等;密钥文件权限为 0600。
适用场景与注意¶
适合谁:必须把含 PII、密钥或内部命名的内容交给云端大模型、又希望在出站边界强制脱敏的小团队;需要可导出、可校验审计迹线的内控或合规沟通场景。
要注意什么:
- 插件与 DSH 同进程权限,能读写的范围取决于你如何配置工作区与
dir;安装前审阅源码与SECURITY.md。 - 这是传输层去标识化,不能替代访问控制、数据分类、合同与告知等同等义务。
name、address、org等启发式有误报可能,可用allowlist、categories与dictionary调优; rollout 阶段可对工作区设audit先观察。- 社区目录星标等元数据会变动;以仓库 README 与 npm 包为准。
结尾¶
若你的痛点是「数据会不会原样出网」而不是「模型会不会记得脱敏」,dsh-redact-gateway 把策略钉在 llm/stream 上:出站掩码、入站还原、本地加密映射与审计链一并收口。进一步了解请访问 社区目录页 与 GitHub:luokexiaoguo/dsh-redact-gateway。