DeepSeek Harness Hub
← 返回列表

隐私脱敏中间件PerryLink/dsh-mask

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
✓ 可直接安装

DeepSeek Harness 的 PII 脱敏中间件——在个人数据到达模型之前将其匿名化,并在宿主侧保持可还原。

自动检查通过:npm 包已发布且 engines 声明满足基线(声明 Node ^22.19.0 || >=24.0.0);该结论来自程序自动检查,未经人工实机验证。 · 最近上游提交 2026/9/19 · 已提供中文文档

DeepSeek Harness 的 PII 脱敏中间件:在姓名、电话、邮箱、身份证、银行卡、密钥和地址到达模型之前,将其匿名化为占位符,在展示层恢复它们,将恢复表仅保留在内存和受控存储域中,绝不记录明文,并暴露 /mask 和 mask_test 工具

综合分
35.5
GitHub 分
35.5
用户评分
★ Stars
8
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add dsh-mask
npm 包 dsh-mask 已校验归属本仓库,走 npm 安装最省事
🟢实装验证通过· 2026/9/8
由 dsh-plugin-verify(GitHub Actions)在真实 dsh 环境安装成功,非静态推断。
数据截至 2026/9/19(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查✓ 自动检查通过

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

npm 包dsh-mask @ 0.2.10
Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
dsh CLI 依赖未声明 dsh 版本约束
入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/18 02:58:16

依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-attachment@deepseek-ai/cordis@deepseek-ai/cordis-plugin-include@deepseek-ai/cordis-plugin-loader@deepseek-ai/dsh-agent@deepseek-ai/dsh-commands@deepseek-ai/dsh-session@deepseek-ai/dsh-storage@deepseek-ai/dsh-storage-domain@deepseek-ai/dsh-storage-json@deepseek-ai/dsh-system-prompt@deepseek-ai/dsh-tools
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-mask
- 1024 商店渠道:执行一次 npm i -g dsh1024,然后执行 dsh1024 plugin --profile web add dsh-mask(计入 deepseek1024.com 安装排名)。
Gitee

DeepSeek Harness 的 PII 脱敏中间件——在个人数据到达模型之前将其匿名化,并在宿主侧保持可还原。

电话号码、邮箱、身份证、银行卡、密钥等在模型边界处变为占位符;明文永远不会进入你的会话日志。

License
DSH plugin
dsh-doctor
Node
CI
Version
npm version
npm downloads

English · 简体中文 · Español · Português · हिन्दी

兼容性

| 层面 | 状态 |
|---|---|
| Harness | DeepSeek Harness dsh-v0.1.6-alpha.2(适配于 2026-09-18):会话信封仅为了存储日志的读取兼容性而保留其可忽略字段——Session.append 仍无法为其打上标记,因此审计门控行为保持不变。已于 2026-09-18 针对 dsh-v0.1.6-alpha.2 master 检出进行验证(完整门控链 + profile 安装冒烟测试)。 |
| Node | ^22.19.0 \|\| >=24.0.0 |
| 平台 | 任何可运行 DSH 的环境(纯宿主、零依赖正则;无浏览器端) |
| 模型 | 完全支持文本模型;无需额外的模型能力 |

你将获得

dsh-mask 在模型边界处对个人数据进行匿名化——在消息到达模型之前——并在宿主侧保留一张还原表,使占位符保持可还原:

- 请求时脱敏——agent/pre-step 消息会被重写,使电话号码、邮箱、身份证、银行卡和密钥(默认开启)以及 IP(可选开启)变为  风格的占位符。被脱敏后的文本才会被记录并发送给模型。
- 还原表——placeholder → original 映射仅存在于内存和一个受控存储域(dsh_mask)中;明文永远不会进入会话日志。
- 审计,而非明文 — mask/applied 会话事件仅记录“替换了 N 个值 + 类型分布”,绝不记录原始文本或映射关系。
- /mask 命令 — status(计数 + 分布)、on/off(运行时开关)、restore (还原占位符)、help。
- mask_test 工具 — 将一段代码片段通过检测器运行,查看占位符结果;它绝不泄露原始值。

user message ──agent/pre-step──▶ placeholders ──model──▶ placeholders ──restore──▶ display
▲                                                    │
└──────── restore table (memory + dsh_mask) ────────┘

快速开始

1. install the bundle into your profile
dsh plugin --profile web add "github:PerryLink/dsh-mask#main"

or from npm (published releases)
dsh plugin --profile web add dsh-mask

2. verify the row mounts
dsh --profile web --dump-config | grep -A2 'id: mask'

然后在你的 profile patch 中定制实体列表:

- insert:
- id: mask
name: dsh-mask
config:
entities: [phone, email, id-card, bank-card, key]

/mask status
/mask restore

安装与卸载

- git 渠道(最新的 main):dsh plugin --profile web add "github:PerryLink/dsh-mask#main"(等同于从 git+https://github.com/PerryLink/dsh-mask.git 安装)。无需构建步骤 — index.mjs 和 lib/ 即为随附的产物。
- npm 渠道(已发布的版本):dsh plugin --profile web add dsh-mask。
- tarball 渠道:在本仓库中运行 pnpm pack,然后执行 dsh plugin --profile web add ./dsh-mask-.tgz。
- 卸载:dsh plugin --profile web remove dsh-mask(或从 profile patch 中移除该行)。

dsh-mask 不再捆绑存储栈。已经组合了它的 profile(web profile 通过 @deepseek-ai/dsh-web-app 组合了它)会提供 storageDomain,因此持久化开箱即用。在没有存储的裸 profile 上,插件仍会挂载并执行掩码,但还原表仅存在于内存中(重启后丢失)— 请在你的 profile patch 中组合存储栈,或设置 persistRestoreTable: false。

配置

所有可调项均为 Schemastery Config 字段(可从 cordis.yml 更改)。针对 id 的覆盖会替换整行 — 请重新声明你需要的每个键。cordis.patch.yml 内联记录了每个键。

| 键 | 默认值 | 含义 |
|---|---|---|
| enabled | true | 总开关;false 会注销监听器、/mask 命令和 mask_test 工具 |
| mode | regex | 检测模式;仅实现了 regex(用于姓名/地址识别的 regex+ner 为保留项,会显式报错) |
| entities | [phone, email, id-card, bank-card, key] | 要掩码的 PII 类型;ip 也支持正则(需选择启用),person/address 需要 NER |
| scope | [messages] | 掩码作用面;messages 对 agent/pre-step 消息进行掩码,tools 对 tools/post-execute 的工具结果文本进行掩码。接受字符串或数组,例如 [messages, tools] |
| registerCommand | true | 注册 /mask 命令 |
| registerTools | true | 当 tools 服务存在时注册 mask_test 工具 |
| persistRestoreTable | true | 将还原表持久化到受控的 dsh_mask 存储域(false = 仅内存) |
| maxRestoreEntriesPerSession | 500 | 每会话还原条目上限(最先淘汰最旧的) |
| maxSessions | 1000 | 内存中会话上限(淘汰最近最少使用的,映射按需重新加载) |
| maskClientEnabled | false | 浏览器端“显示”气泡的功能开关(防御性;默认关闭,直到实时槽位目录验证目标槽位)。该键已在 schema 中声明并经过验证,但尚无运行时代码读取它,因此在浏览器端发布之前它不会产生任何变化 |

在你的 profile 补丁中覆盖配置的示例:

- insert:
- id: mask
name: dsh-mask
config:
entities: [phone, email, id-card, bank-card, key, ip]
persistRestoreTable: false
registerCommand: true

工具与作用面

| 作用面 | 是否显示明文 | 备注 |
|---|---|---|
| agent/pre-step 掩码 | 从不 | 在消息被记录或发送给模型之前,将其改写为占位符 |
| tools/post-execute 掩码 | 从不 | 在工具结果文本块被记录或反馈给模型之前,将其改写为占位符(作用域:tools) |
| /mask status | 从不 | 启用状态、总替换数、类型分布 |
| /mask on / /mask off | 从不 | 运行时开关(重启后重置为 config.enabled) |
| /mask restore  | 是(显式) | 将占位符反向映射回为此会话存储的值 |
| mask_test | 从不 | 对片段进行掩码,并报告占位符结果 + 计数 |

权限与数据

- 权限:dsh-mask 不执行任何网络请求,也不存储任何凭据;它仅在 agent/pre-step 边界读取会话,并写入自己的 dsh_mask 存储域。dshWorkshop 清单声明了 network:none 和 credentials:none。
- 数据:placeholder → original 还原表存在于内存中,并且当 persistRestoreTable: true 时,存在于受控的 dsh_mask 存储域中——这是唯一存储明文 PII 的地方,并且它绝不会写入会话日志。
- 会话日志:mask/applied 在 types.d.ts 中声明,并且仅当宿主记录该类型时才会追加(参见已知限制)。其负载仅为计数 + 类型分布。

安全边界

- 明文绝不进入会话日志。 被记录并发送给模型的是掩码(占位符)形式,因此模型可见内容可以以占位符形式从日志中重建;原始值保留在还原表中。
- 显示/记录前先脱敏。 lib/sanitize.mjs 会在任何文本到达模型或日志之前,对 PII、密钥和 URL 凭据进行脱敏;mask_test 和 /mask status 绝不会回显原始内容。
- 受控恢复。 /mask restore 是唯一显式的揭示入口,并且它只读取当前活动会话的映射。
- 失败即关闭。 未实现的 mode(regex+ner)、未知的 scope 值、仅 NER 实体以及越界数字,都会在加载时大声失败。
- 注册即副作用。 监听器、命令、工具和存储域关闭都是 Cordis 副作用——停止/热重载会移除它们。

已知限制

- 仅支持正则。 姓名(person)和地址(address)识别需要外部 NER 识别器,而纯宿主零依赖形式并不捆绑该识别器;mode: regex+ner 和这些实体会在加载时大声失败。开箱即用的 PII 类型包括电话、电子邮件、身份证、银行卡、密钥,以及(可选启用的)IP。
- 区域特定模式。 phone 和 id-card 检测器仅匹配中国大陆格式:phone 是 1[3-9] 后跟九位数字,id-card 是 18 位中国居民身份证号(17 位数字加一位数字或 X)。其他国家的电话号码和国家标识符不会被检测到。email、ip 和 key 与区域无关;bank-card 接受任意 16-19 位数字串,但置信度分数较低。
- 显示层恢复需要客户端一半。 脱敏完全在宿主侧完成,但在客户端 UI 中透明地取消屏蔽助手气泡是浏览器侧功能,此纯宿主形式并不提供。宿主侧保留恢复表和导出的 RestoreStore 接缝(其方法接收会话 ID),因此未来的客户端一半将通过宿主远程访问它们,而不是直接访问;目前取消屏蔽的入口是 /mask restore  命令,而 maskClientEnabled 键虽被验证,但尚无运行时代码读取它。
- 0.1.6-alpha.2 上的会话事件。 测试框架记录了 58 种会话事件类型,其中没有一种是 mask/*;其 Session.append 也无法打上 ignorable 信封,因此会话日志审计追加会被跳过,会话继续加载。该门控对此并非沉默:每个会话的第一次拒绝会记录一条可见警告,指明被跳过的类型和此已记录的限制。一旦宿主记录了该类型或支持 ignorable 信封,插件就会自动启用追加。

开发

pnpm install                                       # node ^22.19 || >=24
pnpm run typecheck && pnpm run typecheck:ci        # two rulers: alpha.2 dev face + published-line face (paths cleared)
pnpm test                                          # node --test
pnpm run verify:self-contained                     # dependency specs resolve from the registry
pnpm run verify:artifacts                          # shipped files present + index.mjs importable
pnpm run check:readmes                             # five-language README consistencymarkdown
pnpm pack                                          # 发布的 tarball

没有构建步骤:纯 ESM,index.mjs 和 lib/ 就是交付的产物。

基准测试

PII 基准测试(针对 108 个合成样本的按类型 P/R/F1)发布在 benchmark/RESULTS.md;使用 node benchmark/run.mjs 重新生成(无构建步骤,零新增依赖)。

主题

dsh、dsh-plugin、deepseek-harness、deepseek、cordis、pii、mask、privacy、anonymization、security

贡献者

- @PerryLink — 创建者与维护者:从 Pii-Stripper-Middleware 移植的正则 PII 检测器、agent/pre-step 掩码接缝、恢复表、/mask 命令和 mask_test 工具,以及五种语言的文档。

PerryLink DSH 插件家族

本项目是由 PerryLink 维护的 40 个 DeepSeek Harness 插件之一。如果这个对你有帮助,其他的很可能也会:

| 插件 | 一句话简介 |
|---|---|
| dsh-auto-review | 审批链上的第二模型自动审查,默认故障关闭 | |
| dsh-background-agents | 持久化后台子代理,带 Web UI 侧边栏、消息传递和中断 | |
| dsh-budget | DeepSeek Harness 的成本治理:预算、碳足迹和延迟集于一个面板。 | |
| dsh-checkpoint-rewind | 等同于 Claude Code /rewind:快照、会话分叉、一次性恢复 | |
| dsh-claude-move | 将 Claude Code 会话、记忆、技能和 CLAUDE.md 迁移到 DSH | |
| dsh-click | DeepSeek Harness 的跨平台原生桌面控制——Windows 优先。 | |
| dsh-composer-history | Web 编辑器的终端风格输入历史:方向键、Ctrl+R 搜索 | |
| dsh-data-quality | 数据集质量检查和引用交叉核对(此处消费的可选数值桥接) | |
| dsh-defend | DeepSeek Harness 的提示注入、越狱和密钥泄露防御。 | |
| dsh-doublecheck | 工程纪律守卫:需求拷问、测试门禁、对抗性审查 | |
| dsh-draw | DeepSeek Harness 的统一静态图像生成路由。 | |
| dsh-fast | DeepSeek Harness 的只读性能诊断。 | |
| dsh-fund-research | 中国公募基金的确定性研究报告 | |
| dsh-github | 面向 DSH 的 GitHub PR/issue 集成,所有写入操作均需审批 | |
| dsh-industry-research | 行业研究编排,通过本插件的 ctx.researchReport.assemble 封存其交付物 | |
| dsh-library | 面向 DeepSeek Harness 的本地文档知识库。 | |
| dsh-local-ai | 面向 DeepSeek Harness 的本地模型(Ollama)集成。 | |
| dsh-lsp-actions | 基于语言服务器的 LSP 诊断、格式化、补全、代码操作与重命名 | |
| dsh-mcp-panel | 只读 MCP 运行时面板:/mcp 命令 + 设置标签页,显示状态、工具与错误 | |
| dsh-memento | 需审批的跨会话记忆:ctx.memory 接缝 + SQLite + memory 工具 | |
| dsh-observe | 面向 DeepSeek Harness 的 OpenTelemetry 与 Langfuse 可观测性导出器。 | |
| dsh-output-styles | 与 Claude Code outputStyles 等效的运行时样式切换 | |
| dsh-permission-rules | Claude Code 风格的声明式 allow/deny/ask 权限规则,带审计 | |
| dsh-personal-directive | 带顶栏开关的个人指令注入器(框架版) | |
| dsh-plugin-guide | 以按需智能体技能形式提供的插件开发知识库 | |
| dsh-plugin-doctor | 面向 DSH 插件的零依赖静态 + 沙箱冒烟检测器 | |
| dsh-reach | 多渠道审批/提问桥接:微信/Telegram/飞书,会话控制台 | |
| dsh-research-report | 可验证的研究报告引擎:内容寻址的证据账本与封存版本 | |
| dsh-score | 面向 DeepSeek Harness 插件的多维度质量评分。 | |
| dsh-session-pin | 在 Web 侧边栏中固定会话,并保持持久排序 | |
| dsh-session-sync | 面向 DeepSeek Harness 的跨设备会话同步——你会话存储的专用 git 镜像。 | |
| dsh-skill-pack-security | 安全审计技能包:密钥扫描、依赖与供应链审查 | |
| dsh-talk | 面向 DeepSeek Harness 的语音优先会话循环:对它说话,听它回答。 | |
| dsh-test-drive | 面向 DeepSeek Harness 插件的隔离式安装与冒烟测试驱动。 | |
| dsh-ticktick | TickTick/滴答清单任务桥接:会话头部面板 + 11 个工具 |
| dsh-translate | 面向 DeepSeek Harness 的厂商参数转换与确定性 JSON 修复。 | |
| dsh-wechat | 微信 ↔ DSH 桥接(腾讯 iLink 机器人):文本/图片/文件/语音,在聊天中审批 |
| dsh-autotier | 自动进行强/廉价模型层级路由,带确定性风险防护和 /tier 命令 | |
| dsh-catalog | PerryLink 系列的 DSH Desktop Market 标准目录源 | |
| dsh-cert-mcp | 只读 MCP 服务器,公开认证注册表:等级、快照和五维证据 | |
| dsh-kit | 一键安装核心系列插件的入门包 | |
| dsh-plugin-certification | 社区认证注册表,带可复现验证的等级和徽章 | |
| dsh-plugin-kit | 面向 PerryLink DSH 插件的共享零运行时依赖工具包 | |
| dsh-plugin-portal | 零依赖静态门户,将整个插件系列渲染为单个页面 | |
| dsh-plugin-upgrade-015 | 合并的 0.1.3-alpha.1 → 0.1.5-rc.1 升级通道卡片,外加零依赖接缝扫描器 | |
| dsh-team-rooms | 跨会话团队房间:共享消息总线、任务板和时线 | |

从 DSH Desktop Market 安装

所有 PerryLink 插件均可在内置的 DSH Desktop Market 中浏览:Market → Sources → add source → 粘贴 https://perrylink-dsh-catalog.perrylink.workers.dev/catalog-source.json → 选择它。安装仍会经过 Market 的 npm 身份验证和你的确认。

许可证

LICENSE(Apache License 2.0)© 2026 dsh-mask 贡献者

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群