发送前自动替换提示词中的邮箱、电话与密钥
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/4 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add JWE24-code/dsh-pii-anonymizer该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:待复验
是什么
dsh 原生插件 · security
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 28 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件
查看扫描证据(共 4 处,展示前 4 条)
- 写入本地文件src/anonymizer.mjs:108
mkdirSync(dirname(path), { recursive: true, mode: 0o700 }); - 写入本地文件src/anonymizer.mjs:122
if ((statSync(path).mode & 0o077) !== 0) chmodSync(path, 0o600); - 读取本地文件src/anonymizer.mjs:122
if ((statSync(path).mode & 0o077) !== 0) chmodSync(path, 0o600); - 读取本地文件src/anonymizer.mjs:123
return parseKey(readFileSync(path));
扫描于 2026/11/1(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-llm@deepseek-ai/schemastery给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 替换提示词敏感信息
- 邮箱电话密钥脱敏
- 单向匿名化处理
在 DeepSeek Harness 智能体循环起点做确定性单向 PII 匿名化
README
由 DeepSeek 最新模型翻译生成dsh-pii-anonymizer
dshfind
一个原生 DeepSeek Harness 插件,在智能体循环的起点放上一道确定性、单向的 PII 防护盾。
你的提示词由固定规则和校验和扫描(绝不用模型),检测到的每个值都会替换成稳定的占位符,然后消息才会提交并发送。真实值只存在于进程内存里——不进会话日志,不落盘,不上网。
有内容被屏蔽时,本地会给你一条提示。
you type: email a@x.com or call +31 6 1234 5678
model sees: email [[EMAIL_1]] or call [[PHONE_1]]
you see: 🔒 PII shield: 2 item(s) anonymized locally (1 EMAIL, 1 PHONE).
Real values did not leave this computer.
匿名化刻意做成不可逆:没有反向映射,也没有恢复路径,所以系统里任何东西都无法把真实值放回去。
挂在哪里
agent/pre-step——循环的步骤准入瀑布流(@deepseek-ai/dsh-agent)。
监听器调用 next(),把返回的 decision.messages 过一遍匿名器,再返回一个 decision,其 messages 携带占位符。
展开完整文档(README 剩余 1 节)
dsh-pii-anonymizer dshfind 一个原生 DeepSeek Harness 插件,在智能体循环的起点放上一道确定性、单向的 PII 防护盾。 你的提示词由固定规则和校验和扫描(绝不用模型),检测到的每个值都会替换成稳定的占位符,然后消息才会提交并发送。真实值只存在于进程内存里——不进会话日志,不落盘,不上网。 有内容被屏蔽时,本地会给你一条提示。 you type: email a@x.com or call +31 6 1234 5678 model sees: email [[EMAIL_1]] or call [[PHONE_1]] you see: 🔒 PII shield: 2 item(s) anonymized locally (1 EMAIL, 1 PHONE). Real values did not leave this computer. 匿名化刻意做成不可逆:没有反向映射,也没有恢复路径,所以系统里任何东西都无法把真实值放回去。 挂在哪里 agent/pre-step——循环的步骤准入瀑布流(@deepseek-ai/dsh-agent)。 监听器调用 next(),把返回的 decision.messages 过一遍匿名器,再返回一个 decision,其 messages 携带占位符。这是被接受的用户批次提交并发送给服务商之前的最后时刻。 为什么用原生插件,而不是钩子 Claude Code / Codex 的钩子桥接做不到这件事。 @deepseek-ai/dsh-hook-protocol 里的 HookOutput 只暴露 additionalContext;它的 updatedInput 文档写明是 "PARSED but NOT honored."。没有提示词重写通道。 只有挂在 agent/pre-step 上的原生 Cordis 插件,才能替换进入模型请求的消息。 检测范围 确定性意味着结构性。检测器找的是有语法或校验和的东西: | 类型 | 触发条件 | 校验 | | API_KEY | 已知前缀(sk-、sk-ant-、AKIA…、ghp_…、github_pat_…、xox…、AIza…) | — | | IBAN | CC00…,紧凑或空格分组 | mod-97 校验和 | | CREDIT_CARD | 13–19 位数字,允许空格/短横线 | Luhn 校验和 | | SSN | DDD-DD-DDDD | 无 | | EMAIL | 近似 RFC 的地址形态 | 无 | | IPV6 / IPV4 | 地址形态 | IPv4 校验八位组范围 | | PHONE | 数字串,含 + ( ) . - space,可选前导 (,7–15 位数字 | 拒绝 ISO 日期和版本号字符串 | 自由形式的姓名、邮寄地址,以及其他依赖上下文的 PII 不会被检测——确定性规则抓不到它们,除非付出不可接受的误正向用例。加一个 ML/NER 阶段会破坏「确定性」这一特性。 重叠按优先级解决(校验和类型优先于宽松的电话号码规则),然后按跨度长度,最后按位置。 假名化模型 PiiPseudonymizer 按会话保存: - forward:原始值 → 占位符(跨轮次稳定,这样模型可以一直引用 [[EMAIL_1]]) - 按类型编号,所以 token 读作 [[EMAIL_1]]、[[PHONE_2]]…… 没有反向映射。原始值只保存在进程生命周期内的易失内存里,所以任何人都无法还原,包括这个插件自己。这是有意为之的取舍:shield 在构造上就是安全的,代价是转录里只显示占位符。 范围 只重写人类用户消息(source.kind === 'user')。Harness 注入的上下文——运行时上下文、技能目录、工具结果——保持原样,因为它不是用户的提示词,脱敏它可能会破坏智能体合法需要的值(比如沙箱主机 IP)。 配置 - id: pii-anonymizer name: dsh-pii-anonymizer config: enabled: true # master switch notify: true # emit the local notice when something was shielded debug: false # log load/shield events (counts only, never values) 安装(作为 bundle) 这个包是 DSH bundle:package.json 声明了 dsh.bundle.patch,cordis.patch.yml 插入 pii-anonymizer 行。配置档在 dependencies 和 dsh.profile.bundles 里都列出它——moqi-tui 的 /plugins 选择器读的就是这里(它读 manifest,不读 Cordis loader)。 从 registry 安装到配置档: npm install dsh-pii-anonymizer # inside ~/.dsh/profiles/<name> or, from the terminal app: /plugins add dsh-pii-anonymizer tools/register-profile.mjs <profileDir> 为本地 checkout 做 manifest 编辑,并在旁边写一个 package.json.bak: node tools/register-profile.mjs ~/.dsh/profiles/tui 这个包还必须能从配置档解析到。在这台机器上它被符号链接到共享解析根: ~/.dsh/profiles/node_modules/dsh-pii-anonymizer -> /home/joeri/Projects/dsh-pii-anonymizer 安装状态: 已在全部六个配置档(dev-tui、headless、jev-dev、tui、tui-dev、web)注册并启用。重启应用即可加载。 按配置档回滚:恢复它的 package.json.bak。 开发 node --test # 16 detector + pseudonymizer + message-scope unit tests node_modules/@deepseek-ai 是指向本地 harness 安装的 dev-only 符号链接,这样 src/index.mjs 在模块加载冒烟测试里能解析它的 peer dependencies。已安装的插件则从配置档解析它们。 端到端测试(无需凭据,无需网络) tools/mock-provider.mjs 是一个极简的 OpenAI 兼容 SSE 服务器;tools/e2e.patch.yml 把 deepseek 适配器指向它,再加载这个插件。随后针对 mock 跑一轮真实的 harness 循环,tools/requests.jsonl 会精确记录服务商收到了什么。 1. throwaway harness home inside this project (never ~/.dsh) DSH_HOME=$PWD/../.dsh-scratch dsh --profile pitest \ --from-default-profile headless --dump-config 2. mock provider node tools/mock-provider.mjs & # writes tools/requests.jsonl 3. one real turn DSH_HOME=$PWD/../.dsh-scratch DSH_E2E_KEY=dummy \ dsh --profile pitest --patch tools/e2e.patch.yml \ "My email is jane.doe@corp.example and my IBAN is DE89 3704 0044 0532 0130 00" 4. confirm the provider only ever saw placeholders grep -o '\[\[[A-Z_0-9]*\]\]' tools/requests.jsonl | sort -u 验证结果:服务商收到的是 My email is [[EMAIL_1]] and my IBAN is [[IBAN_1]],外加 notice;原始邮箱和 IBAN 哪儿都没出现。 状态 - [x] 确定性检测器,带校验和验证 - [x] 按会话稳定假名化(单向,无反向映射) - [x] 人类消息作用域(注入的上下文保持原样) - [x] agent/pre-step 接线 —— 单元模拟并通过真实 headless harness 针对 mock provider 跑通 - [x] 向用户发送本地 notice - [x] 作为 bundle 安装进全部六个配置档,在 /plugins 选择器中列出并启用
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
JWE24-code/dsh-pii-anonymizer
发送前自动替换提示词中的邮箱、电话与密钥
相关插件 · 安全 / 权限
智能体逆向工程morluto/rea
用智能体逆向工程任何东西,从应用行为到原生二进制。
★ 415,267已汉化DSH
73.3
智能体集群框架ruvnet/ruflo
面向 Claude Code 与 Codex 的智能体元基座meta-harness。
★ 80,414已汉化MCP
71.9
WorkBuddy 模型接入corrinehu/dsh-workbuddy-connect
2026 年 10 月 20 日起,WorkBuddy…
★ 1,604已汉化DSH
71.7
破甲一键通z91772524-ai/pojia-next
十五个 AI…
★ 967已汉化DSH
71.6
AI 代理虚拟终端strukto-ai/mirage
Mirage 是给 AI 智能体用的虚拟终端:一层 shell,统管数据、命令行和运行时。Unix…
★ 3,756已汉化DSH
70.8
Agent 操作层agentic-os-org/ANOLISA
ANOLISA(Agentic Nexus Operating Layer & Interface System Architecture)|智能体操作系统,带运行时、安全、可观测性,以及 Tokenless 响应压缩,降低 token 用量与成本。
★ 649已汉化DSH
70.7