dsh-publish-guard
DeepSeek Harness plugin publish armor: pre-publish leak scan + entry-safe obfuscation
- Stars
- 0
- Language
- JavaScript
- Created
- Oct 14, 2026
- Updated
- Oct 14, 2026
Introduction
dsh-publish-guard
DeepSeek Harness 插件发布前硬化工具链,两个命令:
| 命令 | 干什么 | 定位 |
|---|---|---|
dsh-leak-check | 发布前泄漏检查(只读,不执行任何脚本) | A:抓自己的漏洞 |
dsh-obfuscate | 入口安全的混淆(防"顺手党"逆向) | B:抬高别人读实现的成本 |
为什么是这两个
DSH 插件是 JavaScript,走 npm 分发 —— 任何用户都能把包下载下来看。所以:
- 真危险的不是"别人能看",而是你自己把不该发的东西发了出去(source map、密钥、.env、测试文件)→ A
- 真能做的防逆向不是"阻止",而是把成本从分钟级抬到小时级(挡顺手党,不挡决心党)→ B
dsh-leak-check
dsh-leak-check bundle <file> [--json] 扫一个构建产物
dsh-leak-check pack <dir> [--json] 扫包目录(files 白名单 + 磁盘)
dsh-leak-check preflight <dir> [--bundle f] 一键
分级:violation(会送掉源码/密钥的硬伤)· review(疑似,人工看)· note(提醒)。
铁律:宁 review,不 violation —— 密钥类一律 review,绝不公开指控。
检查项:source map、9 类疑似密钥、高熵长串、调试残留、test/.env/.pem/.map 混进包、
溯源指纹(正面加分)。不运行 npm、不执行被检查包的任何脚本(npm pack 会跑
prepack/prepare,对不受信任的包是危险的)。
dsh-obfuscate
dsh-obfuscate <in.js> <out.js> [--preset lite|medium|max] [--no-protect-entry]
- 入口保护:在
__ModuleLoader__标记前最近语句边界切分,挂载段逐字明文、只混淆载荷; 切分失败自动退回整文件(此时入口文本可能被 stringArray 编码,功能由冒烟保证) - 自动冒烟:混淆后模拟
window.__ModuleLoader__加载产物,入口坏了就失败 - 强制无 sourceMap;输入含 sourceMappingURL → 拒绝(除非
--allow-map) - 拒绝原地覆盖;
selfDefending默认关(它等于给用户机器装地雷) - 输出带溯源指纹:
built-from-src-sha256:xxxx obfuscated:lite|medium|max
诚实提醒(工具输出里永远带着):混淆只挡顺手党;别把密钥放进客户端;
发布前建议再跑一遍 dsh-leak-check。
测试
node --test # 18 项:A 12 项 + B 6 项
用在哪
dsh-leak-check适合任何插件作者的 CI / prePublishdsh-obfuscate适合"确实有闭源需求"的插件;不建议用在以信任为卖点的插件上 (用户看不见它在干什么 = 信任崩塌)
与其它工具的关系
| 工具 | 关系 |
|---|---|
dsh-contract-check | 检查契约(render/事件/打包白名单);本工具检查泄漏,互补 |
dsh-surface-check | 扫描指令文件投毒(运行时);本工具是发布前的静态检查 |