DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Privacy Gateway — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
P

dsh-privacy-gateway

Privacy Gateway

DeepSeek Harness 的本地隐私网关:在对话消息到达模型前,将个人数据替换为占位符,仅在本地界面显示原始内容,并创建 CSV/XLSX 文件的脱敏副本。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:ethanrise/dsh-privacy-gateway#d5a23dae5c85a8ffae96aac9da8e9dee4490953d
README兼容性版本

兼容性与来源证明

Privacy Gateway 以 dsh-privacy-gateway 发布,当前版本为 0.3.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/9/30

版本

0.3.0stable
2026/9/30
0.1.0stable
2026/9/30

相关插件

正在加载相关插件…

最新版
0.3.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/9/30
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 security-access 分类下经过校验的插件。

Cc Safety Netcc-safety-net编码代理 CLI 钩子——阻止破坏性命令和访问机密文件Doctor@linxin666/dsh-doctorDSH 配置档案的事务性救援模式,配备受监督的启动器、隔离的恢复容器、确定性修复、健康监控以及本地 Web 恢复控制台Mobiledsh-mobileDeepSeek Harness 移动端适配与安全访问插件,支持局域网、远程连接、Android App 和手机浏览器。Codex Subscriptiondsh-codex-subscription通过 OAuth 在 DeepSeek Harness 中使用 ChatGPT 和 Codex 订阅,支持配额管理、安全重置、网页搜索、图像和快速模式

README

dsh-privacy-gateway

English · 简体中文

Local privacy gateway for DeepSeek Harness (DSH).

I want AI to work with customer data, but I do not want real names, phone numbers and ID numbers to reach the model.

It does two things:

  • Conversation masking. Before each model request, personal data in your messages is replaced with placeholders. The model and the session log only ever see the placeholders; your screen shows the originals, marked with 🔒.
  • Spreadsheet safe copy. A CSV/XLSX file is scanned column by column on this machine and turned into a redacted copy that you can hand to AI instead of the original.

Everything is in the 🔒 Privacy Gateway tab of the right sidebar (the 🔒 button in the session header opens it). The UI follows DSH's language setting (Chinese or English).

Install

In DSH Desktop, open Settings → Plugins → Add plugin and enter:

https://github.com/ethanrise/dsh-privacy-gateway

Reload DSH afterwards. With the CLI: dsh plugin --profile web add github:ethanrise/dsh-privacy-gateway.

Conversation masking

You type:     给客户张三发邮件 zs@example.com,电话 13812345678
Model sees:   给客户[PERSON_7C1E0A93B2]发邮件 [EMAIL_41D0E6F8A5],电话 [PHONE_2B9F4C07D1]
Your screen:  给客户🔒张三发邮件 🔒zs@example.com,电话 🔒13812345678

What is detected by rules:

TypeHow
PERSONChinese names with context: a label before them ("客户张三", "联系人:欧阳"), a title after them ("王经理", "李建国女士"), or "的" plus a contact word ("王小二的邮箱")
PHONEMainland-China mobile numbers, with or without +86, spaces or dashes
EMAILEmail addresses
ID_CARDMainland-China resident ID numbers, checksum-validated
BANK_CARD16–19 digit card numbers, Luhn-validated
IPIPv4 addresses (off by default: frequent in technical text)

Word list. Names the rules cannot catch (companies, people without context, project code names) go into the word list in the sidebar, one term per line, or imported from a column of a CSV/XLSX customer list. Each term is matched exactly (Latin text case-insensitively, longest term first). No short forms are derived: listing 字节跳动有限公司 does not mask 字节跳动; list that separately if you write it that way.

Placeholders are HMAC-derived from a local secret: the same value always gets the same placeholder, so the model can still tell people apart and refer back to them, and the prompt cache stays stable. You never maintain placeholders yourself.

On screen, placeholders are restored in place, prefixed with 🔒 and highlighted, including in the model's replies (with or without the brackets). Click one to see its type, the placeholder the model saw and the original, with copy buttons. Turn "show originals" off to see exactly what the model saw. Anything without a 🔒 was sent as plain text.

Spreadsheet safe copy

  1. Pick a CSV or XLSX file in the sidebar. It is parsed in memory on this machine.
  2. Each column is classified from its header and values (PERSON, PHONE, EMAIL, ID_CARD, IP, ORG, ADDRESS) with a confidence and a recommended action.
  3. Choose KEEP, MASK (138****5678), TOKENIZE (stable HMAC token) or REMOVE per column.
  4. Download <name>.safe.csv / <name>.safe.xlsx and send that copy to AI yourself.

Where data lives

All of it stays on this machine, under ~/.dsh-privacy-gateway/ with mode 0600:

FileContent
token-secretHMAC key for placeholders and tokens
vault.jsonplaceholder → original, so the UI can restore history after a restart
dictionary.jsonyour word list

The browser reads originals only through the plugin's own local routes. See SECURITY.md for the boundary.

Limits

  • Name detection is rule-based: a bare name with no label, title or contact word is not caught unless it is in the word list, and a name followed by an unusual word may be cut one character long or short.
  • Addresses and company names are not detected by rules; use the word list.
  • DSH does not let plugins rewrite tool arguments, so when the model writes a file or runs a command it uses the placeholder, not the original.
  • Tool results (file reads, command output) are masked only with maskToolResults: true, off by default because the model may then write placeholders into files it edits.
  • Message copy buttons copy the stored text, which contains placeholders; selecting restored text copies the 🔒 marker with it.
  • Masking and word-list changes apply to messages sent afterwards, not to messages already sent.
  • A spreadsheet safe copy is handed to AI by you; the plugin does not attach it to the session.

Configuration

In the plugin's cordis.patch.yml row:

KeyDefaultMeaning
maskMessagestruemask conversation messages before the model sees them (also switchable in the sidebar)
maskToolResultsfalsealso mask tool results
entities[PERSON, PHONE, EMAIL, ID_CARD, BANK_CARD]rule types to detect; add IP to enable it
persistVaulttruekeep vault.json on disk
maxVaultEntries20000oldest entries are dropped past this

Develop

npm install
npm run check   # typecheck, tests, build

lib/ is committed because DSH installs from the repository without running a build: the host entry is bundled with its dependencies by esbuild, and the browser entry is a single module. Run npm run build and commit lib/ after source changes. Bumping version in package.json on main publishes a release with a prebuilt dsh-privacy-gateway.tgz.