资讯动态

dsh-purge 提示词管理机制拆解:「小码酱」默认人设如何生效的 3 步

发布时间:2026/10/21 3:36:36 来源:尧图企业网站定制
dsh-purge 提示词管理机制拆解「小码酱」默认人设如何生效的 3 步【免费下载链接】dsh-purgeDeepSeek Harness 破甲让所有模型都能破甲不同模型可换不同提示词默认提示词面向国模「小码酱」。Jailbreak for every model — swap prompts per model. 求 Star 收藏 ⭐ 如要二开请查看署名要求部分项目地址: https://gitcode.com/GitHub_Trending/ds/dsh-purgedsh-purge 是装在本机官方 DeepSeek Harness 上的开源清洗与评测插件它把宿主默认策略和模型真实能力拆开默认提示词「小码酱」Little Code Sauce简称 LCS面向国模并可按模型切换不同规则集。这篇文章不先讲概念而是让一份提示词从加密槽出发走一遍装配改写、幂等守护、规则集切换三道关口逆向拆解它的提示词管理全流程。前提与边界插件只作用于使用者本机已安装的官方 DeepSeek Harness、离线靶标或已书面授权的演练环境不是公网扫描器也不含针对第三方系统的攻击载荷。⚠️ 任何未授权攻击或违禁内容生成由使用者独立承担法律责任。进会话之前默认提示词是先加密的打开仓库lib/目录会发现默认提示词的明文主文件并不在包内只留下 lib/default-prompt-inject.zh.md 这类语言变体和一份.bak备份。真正的正文藏在 lib/asset-table.js 里看起来是一堆 base64 字符串。这是 scripts/embed-default-prompt.mjs 的产物构建时把 Markdown 用deflate压缩再走AES-256-GCM加密一种对称加密密文自带校验标签改动一个字节就能被发现密文切成 96 字符一段写进资产表。密钥不是写死的而是由几段固定材料经 SHA-256 混出来的lib/table-key.js 核心就五行const cipher createCipheriv(aes-256-gcm, mixKey(mask), iv); const packed deflateSync(Buffer.from(text, utf8), { level: 9 }); const body Buffer.concat([cipher.update(packed), cipher.final()]); return { SLOT: body.toString(base64), MASK: mask, TAG: cipher.getAuthTag().toString(base64), IV: iv.toString(base64) };一份明文变成四个密文字段。运行时 lib/table-read.js 的openSlot()再解密、解压还原成 Markdown。绕这一圈有两个目的。其一默认稿不以明文裸奔在 npm 包里避免被随手改坏。其二能区分插件自己写的和用户改过的插件落盘时会把正文的 SHA-256 指纹记进$DSH_HOME/dsh-purge/override-state.json升级时只有磁盘指纹等于上次自己写的那份才覆盖——你改过的prompt-inject.md永远保留。修改入口在清洗页的「提示词」框默认显示的就是解密后的那份身份锁宿主身份句如何被降级正文就位后还要过宿主的装配管线。DSH 组装系统提示词时是若干命名段拼接宿主自带身份句是项目明确要洗掉的部分。lib/identity.js 的stripHarnessPersona对每个非插件段逐句过正则/You are a coding agent powered by the \{\{model\}\} model, running on the DeepSeek Harness\.?\s*/g, 宿主的标准身份句整句删除带工作目录的变体则降级成一句Working directory: {{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.一句话定了三条边界默认人设是 LCS但prompt-inject.md里另起名就换被问你是谁只答这个名字宿主标签我是 DeepSeek 的 AI 助手不得当身份——那是环境不是它。最后rewritePromptAssembly把用户注入正文写进 persona 前缀段的开头顺序设为-100000最小值排最前保证注入段盖住宿主默认人设。幂等守护多轮对话里注入为什么不越叠越长自然的疑问来了assemble每轮对话都重新调用注入每轮再写一遍提示词不会越滚越长吗这个坑项目真踩过。1.1.34 时期每次点「应用」提示词就多约 841 字符且永不收敛根因是替换产物仍以上一版文本为前缀——过程记录见 release-notes.md 的 #38/#42。修复分两层第一层是去重。写入前先检查装配结果function assemblyHasExactInject(sections, inject) { if (!inject) return true; return (Array.isArray(sections) ? sections : []).some( (section) String(section?.text || ).includes(inject) ); }任何一段已含完整注入正文就不再追加。第二层是守卫本身幂等installAssembleGuard给包过的assemble打上_dshPurgeWrapped标记重复包装直接返回不会每轮再裹一层代理直到栈溢出。还有个小细节写死在注释里改写不原地改写返回新对象宿主复用同一个装配对象时下一轮也不会被上一轮污染。规则集切换按模型配不同提示词如何落地项目的主张是不同模型对人设、语气、拒绝边界的敏感度不同一套提示词通吃不了。所以提示词做成可切换的多套——默认这套就是面向国模的「小码酱」跑别的模型再建一套换语气换边界不用从零写。实现集中在 lib/rules.js。每套规则集是$DSH_HOME/rules/id.md元数据指向目标文件AGENTS.md或CLAUDE.md启用时const backup ${target}${BACKUP_SUFFIX}; if (!fs.existsSync(backup)) { const existing await fsp.readFile(target, utf8); const ruleContents await collectRuleContents(dshHome); if (!ruleContents.has(existing)) await atomicCopyFile(target, backup); } await atomicWriteFile(target, content);首次才备份目标文件原件且它不属于任何已有规则集时随后原子覆盖并把激活的 id 记进state.json。源码注释还有一句关键定位规则集只改 agents 目标文件不参与 system 注入链——规则集与系统注入的prompt-inject.md是两条线互不干扰。注入正文另有清晰的三级回退resolveInjectText$DSH_HOME/prompt-inject.md点保存覆盖的那份 本进程未落盘的框 加密槽应用与还原宿主上的唯一写入入口前面都发生在内存里。真正写进宿主只有一条路清洗页的「应用」或聊天里/purge apply。流程固定判断补丁是否已生效 → 备份原件为文件.dshpurge.bak→ 按补丁列表替换 → 覆盖 shim → 宿主动作成功后自动重启。重复应用是幂等的升级后原文对不上会显示跳过但本次应用仍算完成不乱改文件。最容易被误解的一点「应用」只写文件当前进程还是旧的。重启、新开一轮对话注入才进当前会话只应用不重启看着就像没生效。还原是镜像操作「还原」或/purge revert用备份覆盖回去并删备份prompt-inject.md是用户文件还原时保留「卸载」会先还原若已应用再删注入文件、规则库和插件本身。常见坑「应用了却没生效」的 3 个原因 ⚠️只应用、没重启。旧进程的系统提示词不会重建应用多少次当前会话都不变。完整动作是完全退出宿主 → 应用 → 自动重启 → 新开一轮对话。找错了$DSH_HOME。本机常有两份.dshWeb 和桌面端各用自己的主目录。先确认你实际启动的那个宿主读的是哪份profiles/*/package.json拿不准就在聊天里发/purge status它会打出当前生效的DSH_HOME和补丁列表。把规则集当成了提示词。规则集写的是AGENTS.md/CLAUDE.md系统注入读的是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),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑