☰
dsh-purge 如何给 DeepSeek Harness 换提示词:按模型切换规则的快速上手指南
2026/11/2 1:46:49 网站建设 项目流程

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 上,把宿主默认人设洗掉,换成可控制、可切换的 operator 提示词,并能按模型配不同规则集——默认人设「小码酱」(LCS) 就是面向国模的那一套。

它解决什么问题:宿主拦截还是模型拒绝

一半的「拒绝」其实来自宿主层,不是模型层。Harness 不止转发提示词,它还会在运行时改写提示词、拦截审批,只看模型输出会把宿主拦截错认成模型拒答,评测结果从此失真。dsh-purge 的定位一句话:一个装在官方 Harness 上的插件,把宿主层和模型层拆开,换上一套干净、可还原的提示词。

使用边界:它只作用于你自己本机已安装的官方 Harness,以及离线靶标或已书面授权的演练环境;不是公网扫描器,也不是针对第三方系统的攻击套件。

3 步换装:dsh-purge 如何快速上手

先跑起来,原理放后面。

  1. 放插件:目录名必须是dsh-purge。git clone https://gitcode.com/GitHub_Trending/ds/dsh-purge "$DSH_HOME/plugins/dsh-purge"
  2. 应用:完全重启宿主后,在会话标题旁点dsh-purge→清洗→应用;聊天里也可以直接/purge apply。应用成功会自动重启一次。
  3. 新开对话生效:「应用」只写文件和补丁,当前进程仍是旧的,注入只对新开的会话生效。

注意两点:官方dsh web和桌面 EXE 是两套 profile,要分别安装、分别应用;插件市场的一键装会卡在already queued: dsh-purge,别用它,直接走命令安装。

配置生效原理:提示词注入的完整数据流

装配按「输入 → 清洗 → 置顶」三步走,输出是一份身份句恰好出现 1 次的新会话提示词。

输入:$DSH_HOME/prompt-inject.md(你改过的)或内置加密默认值,来源判断是确定性的三级优先链(本进程框内提交 > 用户文件 > 加密槽,见 resolveInjectText):

export function resolveInjectText(dshHome) { const pinned = peekCommittedOverride(home); // 框内提交 if (typeof pinned === "string" && normalizeOverride(pinned)) { return { text: normalizeOverride(pinned), source: "prompt", ruleId: null }; } const diskNorm = normalizeOverride(readPromptInjectFileSync(home)); if (diskNorm) { /* 磁盘文件:哈希等于内置默认记 "default",否则记 "prompt" */ } const bundled = normalizeOverride(defaultOverrideText()); if (bundled) return { text: bundled, source: "default", ruleId: null }; return { text: "", source: "none", ruleId: null }; }

清洗:宿主官方身份句由 stripHarnessPersona 一组正则逐条处理——能删的删,能降级的降级,只留「工作目录」这类有用信息:

// 官方身份句:保留工作目录,身份包装拿掉 .replace(/You are a coding agent powered by the \{\{model\}\} model, running on the DeepSeek Harness\. Your working directory is \{\{cwd\}\}\.?/g, "Working directory: {{cwd}}. ")

置顶:注入段以order: -100000折进 persona 前缀开头,盖住宿主默认人设;装配逻辑带幂等去重,差一个换行都能被 loose 匹配器抠掉,多轮会话后身份块不叠加。

另外,内置默认提示词并不以明文躺在 npm 包里:scripts/embed-default-prompt.mjs 在发布时把它加密压缩成 base64 槽写进 lib/asset-table.js,运行时由 openSlot 还原:

const decipher = createDecipheriv("aes-256-gcm", mixKey(MASK), Buffer.from(IV, "base64")); decipher.setAuthTag(Buffer.from(TAG, "base64")); const raw = Buffer.concat([decipher.update(Buffer.from(SLOT, "base64")), decipher.final()]); return inflateSync(raw).toString("utf8");

设计取舍:为什么规则集独立于注入链

为什么不为所有模型写一份提示词?国模与海外模型对人设、语气、拒绝边界的敏感度差别很大,一套话术很难通吃。所以提示词做成可切换的规则集:$DSH_HOME/rules/下每套一个.md,默认那套是面向国模的「小码酱」;换模型时新建一套,改语气、改边界,不用从零写。

为什么不把话术全塞进 prompt-inject.md?塞进去会把「身份」和「项目规则」耦合在一起,换模型就得连身份一起改。规则集只改写AGENTS.md目标文件、不进 system 注入链:启用时先把原件备份成.dsh-purge-rule.bak再原子写入,还原时覆盖回去并删备份,两层互不干扰(见 activateRule)。

为什么默认提示词要加密,而不是明文?明文躺在 npm 包里既容易被随手改坏,也堵死了「版本更新时刷新默认」的通道。加密槽保证包内默认不可手改,同时应用时仍尊重你自己的文件:你没自定义就写入内置默认,你改过就保留你的prompt-inject.md。

常见踩坑:dsh-purge 提示词不生效怎么办

改完默认提示词,更新后却不生效

根因在血统判断:每次插件把默认提示词落盘,都会在override-state.json记下哈希;应用前先和「上次我们写的那份」比对,再比内置默认。直接拿磁盘文件和新默认比,会把上一版默认误判成用户手改,从此永久拒绝更新——正是「改了default-prompt-inject.md却不生效」的典型原因。

多轮会话后提示词是不是会越来越长

早期版本确实会:每次 apply 叠加约 841 字符、永不收敛,因为替换产物仍以前一版文本为前缀,且没有幂等闸门。现在装配逻辑自带标记跳过,回归测试锁死「身份句恰好出现 1 次」,长度不漂移。

为什么我在 Web 端应用了,桌面端没变化

Web 和桌面是两套独立 profile,补丁和提示词互不相通,必须分别安装、分别应用,别从一个宿主替另一个宿主点「应用」。

小结

dsh-purge 不追求「最强提示词」,它把宿主层和模型层拆开:一个可被用户覆盖的默认人设、一个优先级最高且幂等的注入块、一套按模型可切换的规则集。可评测、可还原、可切换,默认策略该不该收紧,从此有数可依。

合规边界:开源构建只允许本机环回与 RFC1918 地址;项目仅面向你有权管理的本机官方 Harness 与授权演练环境,严禁用于未授权攻击、违禁内容生成或黑灰产牟利,行为由使用者独立承担法律责任。

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

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

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

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

立即咨询