☰
dsh-purge 4 机制提示词注入:7 步清洗 DeepSeek Harness 宿主身份
2026/11/6 3:32:08 网站建设 项目流程

dsh-purge 4 机制提示词注入:7 步清洗 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 上的评测插件。核心是提示词注入:剥掉宿主默认人设,换成你自管的干净提示词,并按模型切换规则集。本文拆透 4 个机制,带一条从安装到验证通过的路径。

能力边界:先画圈再动手

  • ✓ 清洗本机官方 Harness 的宿主默认人设(1.1.78 对应 DSH 0.2.x)
  • ✓ 注入自管提示词,规则集独立成文件,按模型切换
  • ✓ 网络只放行回环 127.0.0.1 与 RFC1918 私网
  • ✗ 不扫公网,不对外发包,不碰第三方系统
  • ✗ 此版本不带技能库和知识库

适用两类场景:你要分清一次拒答是壳拦的还是模型拦的;你要给不同模型挂不同人设。

问题现场:同一句话,两个模型两种拒法

同一问题丢给三个模型:一个先打招呼再干活,一个直接拒,两个拒答的措辞还互不相同。这些话到底是谁说的?根源是 Harness 这层壳始终在场:运行时改写提示词、插审批门、固定会话格式。壳和模型不分家,你测到的「模型拒绝」是两层叠加的产物。别急着怪模型,先发/purge status核对补丁,再给拒答定位到壳或模型。

机制拆解:4 个核心设计

1. 宿主身份句逐行清除:手术刀只划清单上的口子

原理:stripHarnessPersona握一份宿主默认身份句清单,逐条删、逐条降级,工作目录等有用内容原样保留。

.replace(/You are an AI agent powered by DeepSeek Harness\.?\s*/g, "") .replace(/你是一个有帮助的软件工程师助手[。.]?\s*/g, "")

壳剥掉后,新人设挂在身份锁里:默认「小码酱」(LCS),prompt-inject.md里另起名就跟着换,被问「你是谁」只答这个名字。

代码位置:lib/identity.js

2. 规则集按模型分:遥控器上的换台键

原理:一套规则集一个频道,启用项在$DSH_HOME/rules/落成独立文件,互不干扰。

/rules list # 频道清单 /rules use <id> # 换台 /rules create <id> # 新开一个

Clean 页每行有「启用」和「删除」;启用后写入rules/<id>.md,当前用哪套记在rules/state.json。

代码位置:lib/rules.js

3. 默认提示词密文落盘:密封外卖,到门才拆

原理:明文lib/default-prompt-inject.md被files字段里的!lib/default-prompt-inject.md明确排除在 npm 包外;发版时 scripts/embed-default-prompt.mjs 压缩并 AES-256-GCM 加密,按 96 字符切块灌进 lib/asset-table.js,运行时openSlot()当场还原:

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

首次应用写入的就是这份默认版;你改过的prompt-inject.md不会被覆盖。

代码位置:lib/table-read.js

4. 装配幂等:贴新海报前,先撕掉旧的

原理:提示词不去重,每轮组装就再叠一份副本。leadWithInject先去重再置顶——匹配器先全文精确比,不中把「连续空白」当等价,把旧文本里的既有副本抠干净,再把提示词挂到最前(order 取 -100000)。

if (next.includes(needle)) { next = next.split(needle).join(""); hit = true; continue; }

会话拉到几十轮,身份句也恰好出现一次,长度不漂移。

代码位置:lib/identity.js

落地路径:7 步完成从 clone 到验证

全部操作都在你机器上,照序做完即算装完。

  1. 定位 $DSH_HOME:按DSH_HOME环境变量 → 启动器旁.dsh→~/.dsh的顺序找。判据:目录里有profiles/,且profiles/web/package.json的 name 是dsh-profile-web。
  2. clone 到指定位置:git clone https://gitcode.com/GitHub_Trending/ds/dsh-purge "$DSH_HOME/plugins/dsh-purge"。判据:目录名恰好是dsh-purge。
  3. 改 profile 的 package.json:先备份,dependencies加"dsh-purge": "file:../../plugins/dsh-purge",dsh.profile.bundles末尾追加"dsh-purge"。判据:JSON 合法,"dsh-purge"不出现两次。
  4. 只装依赖:cd "$DSH_HOME/profiles/web" && pnpm install。判据:node_modules/dsh-purge/package.json存在。
  5. 完全退出宿主再启动:托盘也要退。判据:会话标题旁出现dsh-purge按钮。
  6. 清洗并应用:点按钮 → 清洗 → 应用。判据:应用成功,宿主自动重启一次。
  7. 新会话验证:新开一轮对话发/purge status。判据:打出DSH_HOME和补丁列表,且路径是你实际在用的那份。

三个入口各一句话:Web 走上面流程;桌面把web换成desktop再走一遍;CLI 直接用dsh-purge --apply。

高频卡点:3 个"装了没生效"的真相

Q:点了应用,模型为什么还在拒?A:根因——应用只把补丁写进磁盘,内存里的旧进程还跑旧代码。解法:⚠️ 完全退出宿主,再新开一轮对话,注入才进会话。

Q:Web 能用,桌面按钮却不见了?A:根因——Web 和桌面是两个独立 profile,各有各的 package.json 和 node_modules。解法:分开装、分开应用。⚠️ 点一侧的应用不会影响另一侧,点错端只会发现按钮不出现。

Q:补丁列表显示「跳过」,是不是坏了?A:根因——版本与宿主大版本不匹配:1.1.78 对应 DSH 0.2.x,宿主还是 0.1.x 要换 1.1.39 及更早的版本。⚠️ 对不上的补丁只会显示跳过,不会动文件;先核 package.json 里的dshTarget再动手。

硬约束与安全边界

  • 操作对象:仅限你有权管理的本机@deepseek-ai包与$DSH_HOME本地配置,补丁全部落在本机文件;不扫公网,不碰第三方系统。
  • 网络硬门:默认全拦对外请求,只放行回环与 RFC1918 私网;域名先解析再判定(含 hosts),指到公网 IP 一样拦,解析失败或混入公网应答直接拒绝。
  • 版本:1.1.78 只对应 DSH 0.2.1-rc.2 与 0.2.0;0.1.x 宿主上补丁一律显示跳过,不重写文件,强装无意义。
  • 许可:Apache-2.0 按现状提供,原版不得转售,fork 必须注明来源;全部输入输出后果由使用者独立承担。

现在就新开一轮对话,先发/purge status核对补丁状态;下次模型再拒,先分清那句身份话来自壳还是模型——这是唯一可核对的事实。

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

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

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

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

立即咨询