← 返回列表
✓ 可直接安装
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-masknpm 包 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 贡献者
扫码进群