dsh-purge 提示词注入原理揭秘:如何让任意大模型"破甲"
【免费下载链接】dsh-purgeDeepSeek Harness 破甲:让所有模型都能破甲,不同模型可换不同提示词;默认提示词面向国模「小码酱」。Jailbreak for every model — swap prompts per model. 求 Star 收藏 ⭐ 如要二开,请查看署名要求部分项目地址: https://gitcode.com/GitHub_Trending/ds/dsh-purge
你问模型一个它明明会答的问题,它就是不答。问题可能不在模型,而在宿主 Harness 运行时悄悄改了提示词、加了审批门。dsh-purge 就是用来在本地官方 DeepSeek Harness 上做提示词注入、把「宿主策略」和「模型本身」分开的插件,让大模型安全测试变得可控。
"拒绝"到底发生在哪一层
几个典型场景,看你对得上哪个:
- 同一个问题,一个客户端能答,另一个"拒绝"——模型没变,变的是宿主包装的提示词;
- 拒绝口吻每轮都不同,任务做到一半还会"苏醒"——宿主每轮组装的 system prompt 是身份、记忆、审批门等多段 section 的混合体;
- 宿主一升级,行为就"复原"——npm 升级覆盖了
node_modules,之前的补丁静默消失。
一句话定位:dsh-purge 只管「本机已安装的官方 Harness」这一层——不碰模型本身、不针对第三方系统、也不扫公网,是受控评测工具。
机制拆解:三层"破甲"是怎么配合的 🔍
第 1 层到底改了什么文件?
大白话:先拍快照,再照清单改。
点「应用」时,插件把补丁写进本机@deepseek-ai包里的渲染文案与执行逻辑,每个目标文件动手前先备份为<文件>.dshpurge.bak(备份逻辑见 lib/core.js);重复应用是幂等的,原文对不上(比如宿主升级过)只标记跳过,不乱改。
补丁清单和运行参数都在 cordis.patch.yml 里声明:includeHarnessIdentity: false关掉官方身份段,postPromptOrder: 5100决定注入段在最终提示词里的排序,autoApplyOnStart控制每次启动是否自动复检应用。
为什么必须重启才生效?
大白话:补丁要先进进程,真正的改写挂在「组装」这个动作上。
宿主每轮都把多段 section 组装成最终 system prompt,lib/identity.js 的installAssembleGuard(L593-L704)用Object.defineProperty包住宿主的assemble方法——相当于排版完稿后的"校对"环节。改写函数rewritePromptAssembly(L706-L771)干三件事:
- 丢弃
harness:identity段,再用stripHarnessPersona(L41-L102)正则抹掉「You are a coding agent powered by…」「我是 DeepSeek 的 AI 助手」等人设文案; ensureFullInject(L117-L128)保证 dsh-purge 段整份存在,并以order: -100000排到最前;- 按
stripMnemon: true配置移除 mnemon 记忆类插件的 section,防止别的插件把默认人设塞回来。
所以只点「应用」不重启宿主,补丁只落在磁盘、没进进程,注入自然不生效 🔁
模型"是谁"由谁定义?
大白话:最终身份由你的提示词文件说了算。
每轮新会话启动时,resolveInjectText(lib/rules.js)按三级优先级取值:$DSH_HOME/prompt-inject.md→ 进程内未保存的提示词框 → 加密槽默认值。文件非空就原样写进注入段,空则用默认人格。换句话说,换一份文件,就是换一次模型的"工牌"。
进阶玩法:多模型提示词换装 🎭
同一宿主、不同模型穿不同提示词,靠两样东西:
- 提示词本体:
prompt-inject.md(清洗页编辑或聊天/purge edit)是全局覆盖段,决定模型"是谁"; - 规则集:lib/rules.js 的规则模块在
$DSH_HOME/rules/维护多套AGENTS.md/CLAUDE.md(L20RULE_TARGETS),每套带独立 id、名称与目标文件,启用哪套就写入$DSH_HOME对应目标,原件备份为.dsh-purge-rule.bak。
两者分工很清楚:prompt-inject.md改"身份",全局生效;规则集改项目文件里的"工作手册",可按模型、按任务切换。另有工作区策略strict/fallback/always三种开关,控制是否移除 DSH workspace baseline 段。
配合授权后开放的演练台,可以在离线受控靶标上观察换装后的模型行为差异,多模型提示词配置的效果对比更直观。
最短上手路径 ⚡
- 安装:
dsh plugin --profile web add dsh-purge(桌面端用--profile desktop;npm 上不去就git clone https://gitcode.com/GitHub_Trending/ds/dsh-purge后放入$DSH_HOME/plugins/dsh-purge); - 重启:完全退出并重新打开宿主,让插件进入进程;
- 应用:点会话标题旁的dsh-purge→清洗→应用(或聊天
/purge apply); - 自动重启:应用成功后会自动重启一次,补丁才进当前进程;
- 验证:聊天输入
/purge status,能打出DSH_HOME和补丁列表即成功。
黄金法则:只点「应用」不重启 = 没注入;只换预设不重新应用,旧进程里的补丁也不会更新。
不想用了?**「还原」或/purge revert会用.dshpurge.bak备份覆盖回去并删除备份,prompt-inject.md作为用户文件被保留;「卸载」**则先还原再彻底移除插件。
dsh-purge 是 MIT 协议的非盈利开源工具,所有注入与补丁都发生在你自己本机的官方 Harness 上,仓库内不含任何对外攻击载荷。请仅在本机、离线靶标或已书面授权的环境中使用,严禁用于未授权攻击与黑灰产场景。
一句话总结:dsh-purge 用「文件补丁 + 组装期改写 + 会话级覆盖」三层提示词注入完成破甲,再靠
prompt-inject.md与多套规则集实现多模型提示词换装——把"宿主拦截"和"模型拒绝"分开看清,才是大模型安全测试的正确姿势 🛡️
【免费下载链接】dsh-purgeDeepSeek Harness 破甲:让所有模型都能破甲,不同模型可换不同提示词;默认提示词面向国模「小码酱」。Jailbreak for every model — swap prompts per model. 求 Star 收藏 ⭐ 如要二开,请查看署名要求部分项目地址: https://gitcode.com/GitHub_Trending/ds/dsh-purge
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考