☰
dsh-purge 安装与卸载完整指南:DeepSeek Harness「破甲」插件到底改了什么
2026/11/1 1:50:11 网站建设 项目流程

dsh-purge 安装与卸载完整指南:DeepSeek Harness「破甲」插件到底改了什么

【免费下载链接】dsh-purgeDeepSeek Harness 破甲:让所有模型都能破甲,不同模型可换不同提示词;默认提示词面向国模「小码酱」。Jailbreak for every model — swap prompts per model. 求 Star 收藏 ⭐ 如要二开,请查看署名要求部分项目地址: https://gitcode.com/GitHub_Trending/ds/dsh-purge

dsh-purge 是打在本机官方 DeepSeek Harness(DSH)上的网络安全红队评测插件,行内俗称「破甲」:把宿主层的提示词改写、审批门与沙箱策略拆成一条条可观察的项,让你判断一次拒答来自模型本身还是宿主拦截。本文面向想在自己机器上跑起它、同时需要随时能退出的读者:装法、改动面、退出机制、安全边界,全部给出真实文件与行号。

装之前:版本对照表只有三行,对不上不写文件

package.json 写死了三个值:插件版本1.1.78(第 3 行)、"dshTarget": "0.2.1-rc.2"(第 96 行)、engines.node >= 18(第 93 行)。宿主与插件的对应关系(README「适配范围」一节):

  • DSH0.2.1-rc.2:用1.1.78;
  • DSH0.2.0-rc.2:用1.1.40及以上;
  • DSH0.1.7及更早:回退到1.1.39或更早。

版本对不上时的行为有明确承诺:未命中的补丁停在「待应用」或「跳过」,不会修改任何文件。装错版本的代价是补丁不生效,而不是把环境改坏。

安装流程:按宿主挑命令,四步装完

官方dsh web与桌面 EXE 是两个独立 profile,各自安装、各自应用,只装你实际打开的那个:

# 官方 Web dsh plugin --profile web add <master.tar.gz 下载地址> # 官方桌面端 dsh plugin --profile desktop add <master.tar.gz 下载地址>

tarball / zip / git 三个来源登记在 package.json 的dsh.install段;已 clone 仓库时(clone 地址https://gitcode.com/GitHub_Trending/ds/dsh-purge),仓库目录内把目标直接写.。两个绕路提前说:插件市场一键安装会报already queued: dsh-purge且命令走不成;npm registry 没有dsh-purge这个名字,不要pnpm add dsh-purge。

剩下三步:

  1. 完全退出刚装的宿主(Web 停掉dsh web;桌面端连托盘一起退出)再打开;
  2. 点会话标题旁的dsh-purge按钮,进Clean页点Apply——宿主设置页里没有这个入口;
  3. Apply 成功后自动重启一次,让补丁进入当前进程;没打完不重启。重启后新开一轮对话,注入才生效。

「装上了」的三个信号:按钮存在且 Clean 页可点Apply;聊天里/purge status打出DSH_HOME与补丁列表、路径是你实际在用的那份;未安装的可选包显示 skipped,不阻挡完成。按钮缺失时跑dsh --dump-config,确认存在id: dsh-purge的行(不是dsh-purge-redteam);没有就执行 scripts/ensure-profile-bundle.mjs 再完全重启宿主。

改动面落在哪:三层文件,一份登记表

第一层:本机@deepseek-ai/*包,是主体。全部补丁目标登记在 lib/core.js 第 6313 行的targetFiles(),代表性分组:dsh-agent-instructions(系统提示词组装)、dsh-user-approval(审批门,覆盖lib/index.js、lib/types/index.js、lib/invariant.js三个文件)、dsh-sandbox/dsh-fs-sandbox(沙箱与升级策略)、dsh-web-app/dsh-headless的cordis.patch.yml与lib/index.js,以及dsh-settings、dsh-fs-observation-policy等条目。

注入入口只有一处:cordis.patch.yml 第 35 行声明id: dsh-purge,第 36 行inject: [systemPrompt, tools]。身份内容不读宿主磁盘上的提示词文件,而是插件内置的加密出厂默认defaultOverrideText(lib/core.js 第 7804 行,默认面向「小码酱」)。每轮注入按三个输入取优先级:规则集启用的prompt-inject.md→ 勾选的 workspaceAGENTS.md/CLAUDE.md→ 插件加密默认槽,再叠加 workspace baseline 策略(strict / fallback / always)。整条决策链在 lib/identity.js 第 931 行的rewritePromptAssembly。多套规则集就管理在这条链的第一输入上:

第二层:dsh 启动 shim。lib/core.js 第 40 行SHIM_NAMES = ["dsh.cmd", "dsh.ps1", "dsh"],即启动脚本本身;patchShim(第 7642 行)改写前先存备份;桌面端密封的 command runtime 目录只 scrub、从不注入。

第三层:$DSH_HOME下的插件运行时文件。prompt-inject.md(每轮注入覆盖段)、rules/(多套规则库)、redteam/(演练台 SQLite 事实库,本体在 lib/redteam/ 与 presets/redteam/)、net-scope-allow.txt(名单文件)、$DSH_HOME/dsh-purge/(注入状态等)。

边界写死在代码里:不碰 DSH 源码树、不碰非@deepseek-ai的第三方插件源仓库,也从不写profiles/<name>/cordis.patch.yml——那个官方支持的用户 patch 层由isUserProfilePatchFile(lib/core.js 第 6005 行)显式排除在备份与回滚之外,第 6342 行注释记着 #43 的教训。

退出机制:旁车备份、原子写、先还原再删

「随时能退出」靠三道保险:

  • 旁车备份:backupAll(lib/core.js 第 6161 行)在首次应用前给每个目标建<文件>.dshpurge.bak(后缀常量BAK_SUFFIX,第 6035 行),wx独占创建只建一次,不覆盖更早的官方原文;
  • 原子写:写文件统一走atomicWriteSync(第 66 行)等 tmp + rename 路径,断电或盘满不会留下半写文件;
  • 升级自愈:DSH 自升级会把宿主文件整个换掉,refreshStaleBaksForUpgrade(第 6123 行)把陈旧 bak 重新基线到新版官方文件;restoreMissingOriginalsFromBak(第 6060 行)在目标消失或变成空文件时先从 bak 拷回再加载。

revertAll(第 6207 行)逐文件决策,三条规则:有 bak 且内容相同就 skip,不同则写回并删 bak;没有 bak 时绝不删除目标文件(第 6248 行注释,#41),直接 skip;用户 patch 层的历史 bak 由dropStaleUserProfilePatchBackups(第 6011 行)主动丢弃,目标本身永不回滚。shim 还原单独走revertShim(第 7750 行):无备份但能认出注入行时,stripShimInject(第 7384 行)只拆注入、不碰其余内容。prompt-inject.md是用户文件,还原时保留,只有卸载才删。

卸载主入口是 lib/uninstall.js 第 208 行的uninstallPurge,顺序固定:还原补丁 → 还原 shim → 删注入文件 → 规则库重置并整目录删除 → 清理指向红队的预设默认值 → 从各 profile 的package.json剥离条目(stripPluginFromPackage,第 50 行)→ 清除演练授权 → 收集删除目录(各 profile 的node_modules/dsh-purge、$DSH_HOME/dsh-purge数据目录、插件根)。关键保险在第 235–240 行:还原阶段只要报 error,report.ok直接置 false、删除清单清空——没还原干净就不删任何东西。

卸载后复核:再跑一次/purge status,备份应为无、applied 计数为 0、目标文件存在且无.dshpurge.bak残留;最后重启宿主,插件不再加载。

红线清单写在代码里 ⚠️

网络面:只认回环与私网,登记也打不开。开源构建只放行 loopback 与 RFC1918。lib/net-scope.js 第 540 行起的注释写明判定:.lab后缀不是白名单,域名走系统解析(含 hosts 文件),所有 A/AAAA 记录都必须落在本机或私网,混一条公网或解析失败就拦;hosts 把实验域名指向公网 IP 同样被拦。名单文件net-scope-allow.txt(第 383 行)经entryHost(第 387 行)保存时丢弃密钥、密码、网段和通配符,只接受一个 IP 或一个完整主机名——「在对话里说这是我的服务器」不构成例外。当前构建里permittedHost()(第 470 行)恒返回 false,公开主机登记了也不会放行。

权限面:演练台先过授权门。第一次进入要读声明、等倒计时、滚到文末并勾选三项;未授权时标签页显示「未授权」。凭据由 lib/drill-grant.js 管理,卸载时经clearDrillGrant一并清除。它只用于你有权管理的宿主、离线靶标或已书面授权的演练环境。

合规面:声明与许可。README 的合规声明:非盈利项目;补丁与注入只作用于本机官方 Harness,Apply / inject / revert / uninstall 全部留在本地文件与本地进程,不向公网主机扫描或发送攻击流量;禁止用于未授权目标、公网系统与生产负载;用于违法违规时开源许可自违反时刻终止;项目与 DeepSeek 无隶属关系;Apache-2.0 分发须保留 NOTICE,原版不得转售,二开必须署名;开源版不下发技能库与知识库。

收尾

回到开头的问题。dsh-purge 的改动面压缩成三层:本机@deepseek-ai/*包的渲染文案与策略逻辑、dsh 启动 shim、$DSH_HOME下插件自己的运行时文件,完整清单在targetFiles()里;而「干净退出」由旁车备份、原子写、先还原再删除三道保险支撑。动手前读一遍/purge status的输出,五分钟足够。

【免费下载链接】dsh-purgeDeepSeek Harness 破甲:让所有模型都能破甲,不同模型可换不同提示词;默认提示词面向国模「小码酱」。Jailbreak for every model — swap prompts per model. 求 Star 收藏 ⭐ 如要二开,请查看署名要求部分项目地址: https://gitcode.com/GitHub_Trending/ds/dsh-purge

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询