dsh-purge 快速上手:如何给 DeepSeek Harness 换一套破甲提示词
dsh-purge 快速上手:如何给 DeepSeek Harness 换一套破甲提示词
【免费下载链接】dsh-purgeDeepSeek Harness 破甲:让所有模型都能破甲,不同模型可换不同提示词;默认提示词面向国模「小码酱」。Jailbreak for every model — swap prompts per model. 求 Star 收藏 ⭐ 如要二开,请查看署名要求部分项目地址: https://gitcode.com/GitHub_Trending/ds/dsh-purge
模型拒绝回答,到底是模型自己拒绝,还是 DeepSeek Harness 在中间拦了一道?dsh-purge 是装在官方 Harness 上的破甲插件:拆掉宿主默认身份,注入一套你能控制的提示词,还能按模型切换规则集,让评测结果说得清来源。
三分钟看懂 dsh-purge
- 它是什么:装在你本机官方 DeepSeek Harness 上的本地插件。装好后,会话标题旁多一个
dsh-purge按钮,点开是「清洗 / 演练台」侧栏,补丁按组列出,可应用、还原、卸载。 - 给谁用:做提示词评测和红队演练的开发者。Harness 在运行时改提示词、加审批门、固定会话格式,只看「模型答不答」,很容易把宿主拦截误判成模型拒绝。
- 解决什么:把「壳」和「模型」这两层分开,身份、提示词、规则都归你管,评测结论才可信。
- 不做什么:它不是公网扫描器,也不是针对第三方系统的攻击工具。所有补丁和注入只发生在你本机的文件里。
能力全景:装完能做什么
| 能力 | 说明 |
|---|---|
| 清洗面板 | 补丁分组查看状态,一键应用、还原、卸载;应用前原件备份为.dshpurge.bak |
| 提示词注入 | 编辑prompt-inject.md作为会话覆盖段;默认内置一套面向国模「小码酱」的提示词 |
| 规则集 | 多套AGENTS.md/CLAUDE.md,启用哪套写进$DSH_HOME/rules/,互不干扰 |
| 演练台 | 授权后查看本机资产与环境,只用于本机、离线靶标或已授权的演练环境 |
| 启动自愈 | 宿主每次启动自动再检查并应用,npm 升级盖掉node_modules后不用手补 |
| 回退与卸载 | /rewind回退本轮对话;「卸载」先还原补丁,再删注入文件,回到原版 |
它是怎么做到的
默认提示词先上锁,运行时才开锁
现象:提示词编辑框里默认就有一套现成的破甲提示词,但 npm 包里并没有这个明文文件——package.json的files字段明确把lib/default-prompt-inject.md排除了。
比喻:像把一份文件装进保险箱运输:发版时内容变成密文存进表里,包体里不裸奔,要用时才开锁还原。
实现:构建脚本 scripts/embed-default-prompt.mjs 把源文用 AES-256-GCM 加密、按 96 字符切块写进lib/asset-table.js;运行时 lib/table-read.js 解密加解压还原:
const decipher = createDecipheriv("aes-256-gcm", mixKey(MASK), Buffer.from(IV, "base64")); // 表里全是密文,解密 + 解压后才是可读提示词你没自定义过,应用时写入的就是这份内置默认;改过之后,你的文件不会被覆盖。
宿主身份句逐句摘除,只留工作目录
现象:破甲后它不再自称「DeepSeek 的 AI 助手」,但工作目录这些有用的信息还在。
比喻:像翻修二手房:不砸墙,只把上一任住户的铭牌一块块摘掉,水电照留。
实现:lib/identity.js 里的stripHarnessPersona握着一份宿主默认身份句清单,逐条删除或降级,中英文都拦。摘完要补新人设,身份锁写在 lib/core.js:默认人设是「小码酱」(LCS),你在prompt-inject.md里另起名它就换名;被问「你是谁」只答这个名字。
还有个容易忽略的细节:装配是幂等的。leadWithInject每轮先用去重匹配器(容忍空白差异)把旧文里的既有副本抠干净,再把提示词挂到最前——多轮对话后身份句始终恰好出现一次,长度不漂移。
换模型就换一套规则集
一套话术通吃不了所有模型:国模和海外模型对人设、语气、拒绝边界的敏感度不同。插件把提示词做成多套规则集,由 lib/rules.js 管理,启用哪套就写入$DSH_HOME/rules/。聊天里三条命令就够:
/purge status # 核对补丁是否进了会话 /rules list # 列清单 /rules use <id> # 切换从 0 到跑通:dsh-purge 安装步骤
- 找到真正在用的
$DSH_HOME。按DSH_HOME环境变量 → 启动器旁的.dsh→~/.dsh的顺序确认。通过节点:profiles/web/package.json里"name"是dsh-profile-web(桌面端是dsh-profile-desktop)。 - 克隆插件。
git clone https://gitcode.com/GitHub_Trending/ds/dsh-purge "$DSH_HOME/plugins/dsh-purge" cd "$DSH_HOME/profiles/web" && pnpm install目录名必须是dsh-purge。桌面端把web换成desktop再走一遍。 3.改 profile 的package.json(先备份),只追加两处:dependencies加"dsh-purge": "file:../../plugins/dsh-purge",dsh.profile.bundles末尾追加"dsh-purge"。 4.确认依赖装上了。通过节点:出现profiles/web/node_modules/dsh-purge/package.json。 5.完全退出宿主(桌面端托盘也要退),再启动。通过节点(装好):会话标题旁出现dsh-purge按钮,清洗页能点「应用」。 6.点按钮 → 清洗 → 应用。通过节点:应用成功后官方宿主会自动重启一次。 7.新开一轮对话,发/purge status。通过节点(真正生效):能打出你的DSH_HOME和补丁列表,说明注入进了会话。
「装好」和「真正生效」是两回事:按钮出现只代表补丁可以应用,/purge status打出补丁列表才代表这一轮对话真的带着破甲身份在跑。
踩坑与答疑
问:点了「应用」,模型怎么还照旧拒绝? 答:应用只把补丁写进磁盘,当前进程还是旧的。重启宿主、新开一轮对话,注入才进会话。
问:Web 里点应用,桌面端怎么没反应? 答:两个 profile 分开装、分开应用,在 Web 里点应用不会动桌面。按钮不出现多半是装错了端或改错了另一份.dsh。
问:补丁状态显示「跳过」? 答:版本对不上。1.1.78 只适配 DSH 0.2.x;宿主还是 0.1.x 就回 Releases 找 1.1.39 及更早的版本。对不上的补丁只显示跳过,不会乱改文件。
问:插件市场一键安装报错already queued: dsh-purge? 答:别走市场,用dsh plugin add或直接 pnpm 按上面第 2 步装。npm 仓库没有dsh-purge这个名字,不要pnpm add dsh-purge。
问:提示词改完不保存,下一轮又变回去了? 答:没自定义过时注入的永远是内置默认那份;在提示词框里改完点保存,写入prompt-inject.md后才不再被默认值覆盖。
适用边界与合规提示
- 能碰的:你自己有权管理的本机官方 Harness、离线本地靶标,或已书面授权的演练环境。
- 不能碰的:公网主机、第三方系统、生产业务,一律不在范围内;开源版不下发技能库和知识库。
- 网络硬门:lib/net-scope.js 默认全拦对外攻击任务,只放行本机回环和 RFC1918 私网;域名先按系统解析再判 IP,hosts 把域名指到公网也会拦,在对话里口头说「这是我的服务器」不算放行。
- 责任归属:项目按 Apache-2.0 现状提供,全部输入输出后果由使用者独立承担;二开可以,但必须署名并写明来源仓库。
下次模型再拒绝,别急着猜:新开一轮对话发/purge status,核对补丁是否在位,再看这轮的身份句来自壳还是模型——这是可以核对的事实。
【免费下载链接】dsh-purgeDeepSeek Harness 破甲:让所有模型都能破甲,不同模型可换不同提示词;默认提示词面向国模「小码酱」。Jailbreak for every model — swap prompts per model. 求 Star 收藏 ⭐ 如要二开,请查看署名要求部分项目地址: https://gitcode.com/GitHub_Trending/ds/dsh-purge
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考