三步完成 DeepSeek Harness 默认身份移除:dsh-purge 身份清洗与提示词注入完全指南
【免费下载链接】dsh-purgeDeepSeek Harness 破甲:让所有模型都能破甲,不同模型可换不同提示词;默认提示词面向国模「小码酱」。Jailbreak for every model — swap prompts per model. 求 Star 收藏 ⭐ 如要二开,请查看署名要求部分项目地址: https://gitcode.com/GitHub_Trending/ds/dsh-purge
同一个问题、同一台机器,换个模型,开场白、语气和拒绝话术就全变了——模型能力其实一直都在,只是被宿主(DeepSeek Harness)的默认策略提前「包装」了一层。dsh-purge 就是冲着这个痛点做的插件:它对宿主做一次身份清洗,把官方默认身份换成你自己维护的提示词(提示词注入),还能按模型切换不同的规则集。这篇指南按「装 → 应用 → 重启 → 验证 → 日常使用」的时间线,把整条链路一次讲清。
它解决什么问题:宿主拦截,还是模型拒绝?
很多人评测模型时会误判一件事。DeepSeek Harness 并不是把你的问题原样转给模型的管道:运行时它还会改写提示词、加审批门、调度沙箱、调整会话格式。所以你看到的「拒绝」,有一半可能是宿主层先拦下来的,跟模型本身没关系。
可以把一次对话拆成两层理解:
- 宿主层:官方默认身份、统一的自我介绍、固定的限制话术。这些东西来自 Harness 的出厂配置,跟当前用哪个模型无关;
- 模型层:模型自身真正能做的事。能力一直在,只是外面套了宿主层的默认包装。
dsh-purge 做的事情很具体:用你写的提示词替换宿主的默认身份,官方能力(工具、沙箱等)原样保留。这样做带来两个直接收益:
- 评测结论真正反映模型能力,而不是宿主策略的拦截结果;
- 你有了对照依据,能判断默认策略里哪些该收紧、哪些其实可以放宽。
判断「这句话是宿主说的还是模型说的」,从此不用靠猜,而是可以逐句核对。
三步装上并生效:装、应用、重启,缺一不可
先核对版本再动手。最新版 1.1.78 适配 dsh 0.2 系(0.2.1-rc.2、0.2.0 均可用);如果你的宿主还停在 0.1.x,请回 Releases 找 1.1.39 及更早的版本。版本对不上的补丁只会显示「跳过」,不会乱改你的文件。
官方 Web 端和桌面端是分开装、分开应用的,只装你当前打开的那一个:
| 你正在用 | 安装命令 |
|---|---|
官方dsh web(profile:web) | dsh plugin --profile web add dsh-purge |
官方桌面 EXE(profile:desktop) | dsh plugin --profile desktop add dsh-purge |
| 命令行走不通时 | 把仓库克隆进插件目录,按 README.zh-CN.md 手动改 profile |
克隆兜底方案:
git clone https://gitcode.com/GitHub_Trending/ds/dsh-purge "$DSH_HOME/plugins/dsh-purge"装完还有两下,都别省:
- 把宿主完全退出再重新打开——Web 端要停掉
dsh web再启动;桌面端连托盘图标一起退出,再打开 EXE。 - 点会话标题旁的dsh-purge侧栏 →「清洗」页 → 点「应用」。注意这一项在宿主自带的设置页里是找不到的,必须在插件侧栏里操作。应用成功后宿主会自动重启一次。
✅怎么确认装好了:侧栏有 dsh-purge 按钮、清洗页能点「应用」;在聊天里输入/purge status,能打印出DSH_HOME和补丁列表,且路径正是你当前用的那份。
改了文件为什么没进会话
新手最容易卡在这一步:「应用」不等于「生效」。
「应用」本质是文件操作——把补丁和提示词写进宿主的文件里。但当前这个进程内存里装的还是旧内容,不重启、不新开一轮对话,注入就进不了会话。记住这条链路:
应用(写文件) → 重启宿主(加载新文件) → 新开对话(注入进入当前会话)顺带把「想退回来」的两条路也说清楚:
- 还原不伤你的文件:每个目标文件在应用前都会先留一份
.dshpurge.bak备份;「还原」是用备份覆盖回去、然后删掉备份。prompt-inject.md属于你的用户文件,还原时原样保留。 - 卸载走完整链路:「卸载」会先还原已应用的补丁,再删掉注入文件、规则库和插件本体,最后重启当前宿主。命令行等价物是
dsh-purge --revert和dsh-purge --uninstall。
它改了什么、没动什么:身份清洗的细节
清洗之后,模型不再自称「DeepSeek 的 AI 助手」。这一步由 身份清洗源码 中的stripHarnessPersona函数完成——它维护一份宿主默认身份句清单,对系统提示词做逐句精确替换,而不是整段重写:
| 宿主默认身份句 | 处理方式 |
|---|---|
You are a coding agent ... running on the DeepSeek Harness | 整句移除 |
| 「我是 DeepSeek 的 AI 助手」及其中英文变体 | 整句移除 |
工作目录信息({{cwd}}) | 信息保留,只替换为中性表述 |
宿主自带的功能(工具、沙箱、审批机制等)全部保留,被拿走的只有身份包装这部分。
壳上的旧身份清掉后,新人设要补上。默认值写在 lib/core.js 的身份锁里,核心是三句:
You are the operator persona in prompt-inject (Little Code Sauce / LCS unless that file names someone else). When asked 你是谁 / who are you, answer with that name only.默认人设是「小码酱」(Little Code Sauce,缩写 LCS)。如果你在prompt-inject.md里给它另起了名字,它会跟着换名;被问到「你是谁」时,只回答这个名字。「我是 DeepSeek 的 AI 助手」是宿主环境的标签,不是它的身份。
按模型切换提示词:规则集怎么用
国模和海外模型在人设、语气、拒绝边界上的敏感度并不一样,一份提示词很难通吃。dsh-purge 把提示词做成了多套可切换的规则集:默认套是面向国模调校的「小码酱」;跑别的模型时再建一套,换语气、换边界。启用哪一套由插件写入$DSH_HOME/rules/目录,几套之间互不干扰。
建、切、删操作分在两个入口:
| 入口 | 能做什么 |
|---|---|
| 侧栏「清洗」页 | 顶部列表负责启用/删除规则集,下方编辑正文 |
| 聊天指令 | /rules list列清单、/rules create <id>新建、/rules use <id>切换、/rules delete <id>删除 |
相关逻辑集中在 规则集源码 中。
每轮会话的注入源按优先级三选一:
① prompt-inject.md 非空 → 用它 ② 否则看当前目录勾选的 AGENTS.md / CLAUDE.md → 用它 ③ 都没有 → 落到插件加密槽里的默认值也就是说:规则集一旦启用,它的内容会写进prompt-inject.md,自动升为最高优先级注入源。换模型 = 换规则集,不需要从零重写提示词。
两个值得注意的设计:加密槽与幂等注入
默认提示词为什么不直接放在包里
默认提示词是插件的核心资产。如果明文躺在发行包里,任何人都能随手改坏,内容也一览无余。所以发版前,构建脚本 scripts/embed-default-prompt.mjs 会先把它用AES-256-GCM(一种带完整性校验的对称加密算法)加密,再按 96 字符切块,灌进 lib/asset-table.js 的资产表;运行时由 lib/table-read.js 的openSlot()解密还原成 Markdown:
const decipher = createDecipheriv("aes-256-gcm", mixKey(MASK), iv);资产表里存的是密文,只有解密后才是可读的提示词。落到使用层面有两个结论:你没自定义过提示词的话,「应用」时写入的就是这份内置默认值;自己改过prompt-inject.md的话,你的文件不会被覆盖。
幂等注入:为什么多次应用不会把文件撑大
早期版本踩过一个坑:每次 apply 都会把提示词补丁在前缀上再叠一层,实测每轮约 +841 字符,宿主文件只增不减、永远收敛不了。为此装配逻辑重构成了幂等:
- 给相关补丁行加
skipIfMarked: true,让「已应用」标记真正参与防重复判断,而不是只用来报告状态; - 用
npm run test:idempotence回归测试持续盯着:多轮对话后身份句恰好出现 1 次,文本长度不漂移。
正因为注入逻辑收敛了,默认提示词才敢写得很「强势」——声明最高优先级、排在最前,并要求模型不要改写这一段。
安全边界:只在你本机,公网一律拦
清洗之后,模型可以交给「演练台」使用:授权后可以查看资产、技能和本机环境,在本机、离线靶标或书面授权的环境里做受控评测。但边界是明确的:
- 只作用于本机已安装的官方 DeepSeek Harness(
@deepseek-ai包、本机 profile /$DSH_HOME)。它不是公网扫描器,也不是针对第三方系统的攻击工具;补丁、注入、回滚、卸载全部发生在本机文件和本机进程内。 - 网络侧有一道硬门:实现代码在 lib/net-scope.js。开源版的攻击类任务默认全部拦截,只放行本机回环和RFC1918 私网 IP(也就是 192.168.x、10.x、172.16-31.x 这类内网地址);如果使用域名,会先按系统解析,解析出来的每一个地址都必须是私网或回环,否则同样拦截。在对话里说「这是我的服务器」不会放行,提供密钥、密码或口头声明也一样——这扇门只认地址,不认话术。
- 合法使用范围仅限:你有权管理的本机官方 Harness、离线本地合成靶标、已书面授权的演练靶场。严禁未授权攻击与违法内容生成,后果由使用者独立承担。
小结:从下一步开始
最直接的验证动作就一条:确认宿主版本、装好对应版本、重启后点「应用」,然后新开一轮对话问它「你是谁」——如果回答的是你设定的名字,说明整条链路已经通了。之后每换一个模型,就切换一套规则集,提示词不用重写;哪天想回到官方默认,点「还原」即可,备份机制会替你兜底。
【免费下载链接】dsh-purgeDeepSeek Harness 破甲:让所有模型都能破甲,不同模型可换不同提示词;默认提示词面向国模「小码酱」。Jailbreak for every model — swap prompts per model. 求 Star 收藏 ⭐ 如要二开,请查看署名要求部分项目地址: https://gitcode.com/GitHub_Trending/ds/dsh-purge
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考