DeepSeek Harness Hub
← 返回列表

隐私脱敏中间件PerryLink/Pii-Stripper-Middleware

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

发送前自动脱敏隐私,回复后无缝还原

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/22 · 已提供中文文档

Automatically anonymize PII before sending to LLMs, seamlessly restore it after.自动脱敏中间件——在发送数据给 LLM 前自动替换敏感信息,回复后无缝还原。

综合分
28.2
GitHub 分
28.2
用户评分
★ Stars
1
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add PerryLink/Pii-Stripper-Middleware
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

Pii-Stripper-Middleware

在发送文本给 LLM 之前自动脱敏个人隐私信息,收到回复后自动还原。

已移植至 dsh-mask —— 属于 PerryLink DSH 插件家族。

License

English · 简体中文

功能简介

Pii-Stripper-Middleware 位于你的应用与 LLM 之间。发送请求前,它会将个人隐私信息替换为可逆占位符;模型只能看到脱敏后的文本,收到回复后占位符会被还原。

你输入的原始文本:
"帮我起草一封道歉邮件给客户张三,他的手机是 13812345678"

↓ 自动脱敏(真正发给模型的内容)

"帮我起草一封道歉邮件给客户 ,他的手机是 "

↓ 模型返回(含占位符)

"尊敬的 ,感谢您一直以来的支持……如有疑问请拨打 "

↓ 自动还原(你看到的最终回复)

"尊敬的 张三,感谢您一直以来的支持……如有疑问请拨打 13812345678"

你的客户数据从未离开本地。

核心特性

- 正则检测 —— 中国大陆手机号、18 位身份证、邮箱、IPv4 地址
- NLP 识别 —— 集成 Microsoft Presidio + SpaCy,识别人名、地名、组织机构、信用卡等
- 无损还原 —— 相同原始值始终复用同一占位符,100% 可逆
- 多轮对话 —— 内置交互式 REPL,历史上下文自动脱敏存储
- 代理友好 —— 支持自定义 API Base URL,适配各类 OpenAI 兼容代理
- Python API —— 两行代码集成进任意 Python 项目

快速开始

基础安装(正则模式,无需 SpaCy)

pip install pii-stripper-middleware

完整安装(含 NLP 实体识别)

pip install "pii-stripper-middleware[nlp]"

下载中文 SpaCy 模型(推荐)
python -m spacy download zh_core_web_sm

或英文模型
python -m spacy download en_core_web_sm

使用 Poetry

poetry add pii-stripper-middleware
含 NLP 支持
poetry add "pii-stripper-middleware[nlp]"

使用指南

命令行

本地演示(无需 API Key)
pii-stripper demo

仅脱敏文本,查看效果
pii-stripper strip "联系张三,手机 13812345678,邮箱 zs@example.com"

脱敏后发给 AI(需要 OPENAI_API_KEY)
export OPENAI_API_KEY=sk-...
pii-stripper chat "帮我给客户张三(13812345678)写一封感谢信"

交互式多轮对话
pii-stripper chat --interactive

显示脱敏详情
pii-stripper chat "..." --verbose

处理文件
pii-stripper strip --file customer_data.txt --output cleaned.txt

配置 API Key(三种方式)

方式 1:环境变量
export OPENAI_API_KEY=sk-your-key

方式 2:.env 文件(项目根目录)
echo "OPENAI_API_KEY=sk-your-key" > .env

方式 3:命令行参数
pii-stripper chat "..." --api-key sk-your-key

使用自定义代理(兼容 OpenAI API 的任意端点)
pii-stripper chat "..." --base-url https://your-proxy.com/v1

Python API

from pii_stripper_middleware import PIIStripper

stripper = PIIStripper()  # 自动检测 SpaCy 模型,失败降级为正则模式

脱敏
original = "客户张三的手机是 13812345678,身份证 110101199001011234"
anonymized = stripper.strip(original)
print(anonymized)
→ "客户  的手机是 ,身份证 "

查看映射表
print(stripper.mapping)
→ {"": "张三", "": "13812345678", "": "110101199001011234"}

还原
restored = stripper.restore(anonymized)
print(restored)
→ "客户张三的手机是 13812345678,身份证 110101199001011234"

与 OpenAI 集成

from openai import OpenAI
from pii_stripper_middleware import PIIStripper

client = OpenAI(api_key="sk-...")
stripper = PIIStripper()

user_message = "帮我给客户张三(13812345678)写一封道歉信"

def call_ai(text):
resp = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": text}],
)
return resp.choices[0].message.content

一步完成:脱敏 → 调用 AI → 还原
result = stripper.strip_and_call(user_message, call_ai)
print(result)  # AI 回复,张三和手机号已自动还原

支持的 PII 类型

| 类型 | 占位符 | 检测方式 | 示例 |
|------|--------|----------|------|
| 中国手机号 |  | 正则 | 13812345678 |
| 中国身份证 |  | 正则 | 110101199001011234 |
| 电子邮件 |  | 正则 | user@example.com |
| IPv4 地址 |  | 正则 | 192.168.1.1 |
| 人名 |  | NLP* | 张三, John Doe |
| 地名 |  | NLP* | 北京, Shanghai |
| 组织机构 |  | NLP* | 腾讯, OpenAI |
| 信用卡号 |  | NLP* | 4111 1111 1111 1111 |
| 银行卡号 |  | NLP* | 6222 0000 0000 0000 |

*NLP 类型需要安装 [nlp] 额外依赖和 SpaCy 模型。

CLI 参考

命令:
strip   仅脱敏文本(不调用 AI)
chat    脱敏后与 OpenAI 对话
demo    本地演示,无需 API Key

strip 选项:
TEXT                   要处理的文本
--file, -f PATH        输入文件路径
--output, -o PATH      输出文件路径
--show-mapping         显示替换映射表(默认开启)
--no-nlp               禁用 NLP,仅使用正则
--env-file PATH        .env 文件路径

chat 选项:
TEXT                   发送给 AI 的文本
--model, -m TEXT       模型名称(默认 gpt-4o-mini)
--interactive, -i      交互式对话模式
--api-key TEXT         OpenAI API Key
--base-url TEXT        API Base URL(代理 / 兼容端点)
--no-nlp               禁用 NLP
--verbose, -v          显示脱敏详情
--env-file PATH        .env 文件路径

技术栈

| 组件 | 库 |
|------|----|
| CLI 框架 | Typer + Rich |
| NLP / 实体识别 | Microsoft Presidio + SpaCy |
| LLM 集成 | OpenAI Python SDK |
| 打包工具 | Poetry |
| 测试框架 | pytest + pytest-cov |
| 代码检查 | Ruff |

隐私声明

- 数据不落盘 —— 原始 PII 仅在内存中保存,随进程结束释放。
- 发给 AI 的内容 —— 只包含占位符,真实敏感信息从不离开本地。
- 历史对话 —— 交互模式下,历史记录中存储的也是脱敏后的文本。

开发

poetry install
poetry run pytest
poetry run ruff check .

相关项目

- dsh-mask —— 本项目被移植进的 DSH 插件
- PerryLink —— PerryLink DSH 插件家族

许可证

Apache License 2.0 © 2026 PerryLink

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

💬 加入 DPharness 群聊

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

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