ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

dsh-purge 补丁注入原理深潜:Apply/Restore/Uninstall 如何幂等改写 DeepSeek Harness

dsh-purge 补丁注入原理深潜:Apply/Restore/Uninstall 如何幂等改写 DeepSeek Harness dsh-purge 补丁注入原理深潜Apply/Restore/Uninstall 如何幂等改写 DeepSeek Harness【免费下载链接】dsh-purgeDeepSeek Harness 破甲让所有模型都能破甲不同模型可换不同提示词默认提示词面向国模「小码酱」。Jailbreak for every model — swap prompts per model. 求 Star 收藏 ⭐项目地址: https://gitcode.com/gh_mirrors/ds/dsh-purge如果你正在研究dsh-purge 补丁注入原理想知道它如何对 DeepSeek Harness 做幂等改写这篇文章会带你从「点击 Apply」到「文件落盘」的完整链路走一遍。dsh-purge 是一款面向本地官方 DeepSeek Harness 的提示词注入 / 红队评估插件它用Apply / Restore / Uninstall三个动作反复、安全、可回滚地改写宿主文件。它的核心难题正是「幂等」同一个补丁点多少次结果都一致绝不重复叠加也绝不盲改。一次改写反复生效dsh-purge 的补丁注入是什么传统插件「装一次就完事」但 dsh-purge 的宿主会被 npm 升级、会被官方覆盖node_modules一变补丁就可能失效。所以它不追求「装一次」而追求「每次启动都能把宿主恢复到期望状态」。它把本地宿主里的渲染文案、默认值、运行时逻辑看作一组可改写的目标文件用一份声明式补丁表cordis.patch.yml驱动。每次 Apply 都先探测当前状态再决定「要改」还是「已就位跳过」。这就是为什么同一套操作可以反复执行而不产生副作用——补丁注入的「幂等」不是口号而是写进每个函数分支里的判断。下图是打开 dsh-purge 右侧抽屉后的 **Drill演练台**页它与 Clean 页并排共同构成插件的两个主界面三个动作各自负责什么Apply / Restore / Uninstall 对照新手最容易混淆这三个词。先建立一个整体认知Apply 是「写入期望态」Restore 是「回到写入前」Uninstall 是「先 Restore 再拔线」。动作命令 / 入口做什么对备份文件的处理Applydsh-purge --apply、Clean 页按钮、/purge apply备份原件 → 匹配改写 → 注入 shim → 静默控制台每个目标首次才建.dshpurge.bakRestoredsh-purge --revert、/purge revert把.dshpurge.bak拷回并删除备份有备份则回拷无备份则跳过、绝不删原件Uninstalldsh-purge --uninstall、/purge uninstall若已 Apply 则先 Restore再删插件本体与注入文件复用 Restore 的回滚逻辑一句话记忆Apply 只负责「让它对」Restore 只负责「让它回」Uninstall Restore 卸载。三者都是幂等的——重复调用不会越用越乱。从点击 Apply 到文件落盘补丁注入的完整链路Apply 是整条链路的中枢入口在 lib/index.js 的apply()真正的重活由它调度的purge_apply工具完成顺序如下见 lib/index.js定位宿主gatherState()先探测是 Web 还是桌面宿主锁定ai_base与dsh_home找不到目标就直接报错不碰任何文件。备份backupAll()为每个目标文件建.dshpurge.bak。改写applyPatches()按补丁表逐个文件做 pattern 匹配替换。注入patchAllShims()改写dsh.cmd/dsh.ps1/dsh等启动 shim。静默silenceCmdFlash()消除 Windows 控制台闪烁等体验补丁。补丁表由四组拼接而成ALL_PATCHES [...PATCHES, ...CODE_PATCHES, ...ENGINE_PATCHES, ...NEW_TOOL_PATCHES]lib/core.js分别覆盖提示词层、代码默认值、引擎级审批/沙箱、新工具四个层次。幂等是怎么做到的标记、状态机与「不重复叠加」这是全文的核心。dsh-purge 用三层防线保证「点多少次 Apply 结果都一样」① 标记自检marker注入进宿主的代码都带[dsh-purge]注释标记。改写前先看文件里是否已含标记含则记为already已就位直接跳过——见 lib/core.js 里if (text.includes(marker)) { hit already; continue; }的典型写法。② needle 找不到就不改天然幂等真正的替换引擎在 lib/core.js 的applyReplacementsToText()。它对每对pattern → replace执行out.split(needle).join(written)只有原文里还留着那段「待改」needle 时才会命中并写入一旦被改过needle 已消失changed保持false文件不落地。所以重复调用自然变成「无操作」。③ 状态机收敛结果每个文件改完后被归入一个状态再由rollupPatchStatus汇总成补丁级状态lib/core.jsapplied本次真的改写了already早已就位跳过pending原文还在等待下次改写skipped这份原文对不上明确跳过、不假装待应用missing_file目标文件不存在skipIfMarked补丁还会在 lib/core.js 额外加一道「已有标记就不再replaceAll」的保险。三层叠加让「已改 → 识别 → 跳过」成为默认路径。备份与回滚.dshpurge.bak 让每次改写都有退路改写之前先备份是「可回滚」的前提。backupAlllib/core.js的关键就在这一行if (!fs.existsSync(bak))——只有当.dshpurge.bak不存在时才建。这意味着备份的「原件」永远是第一次 Apply 之前的纯版本而不是上一次补丁后的版本回滚才能回到真正的初始态。回滚由revertAlllib/core.js完成逻辑同样讲究分寸有.dshpurge.bak→ 拷回目标文件并删除备份无备份→ 只把该文件标记为skipped绝不删除目标源码部署的构建产物缺备份时删了无法自愈。还有一层「用户文件保护」属于用户自定义层的补丁文件永不建 bak、回滚时也绝不拷回只清掉可能存在的旧备份。你的prompt-inject.md等用户文件始终被保留——补丁注入只动宿主的不动你的。只改当前宿主Surface 检测如何隔离 Web 与桌面同一台机器上Web、社区桌面、官方 EXE 可能各自有独立的安装树绝不能「从桌面去 Apply Web」。dsh-purge 在 lib/surface.js 先探测宿主形态web/desktop再由 lib/core.js 的pathZone()allowTargetPath()给每个文件划分「辖区」桌面宿主只动「桌面安装树 共享的$DSH_HOME/.agent-presets」不碰 Web 与 npm-globalWeb 宿主则反过来排除桌面专属路径。这样补丁注入严格限定在「你正在打开的那台宿主」内跨宿主互不干扰也避免误伤。关键源码位置速查 想自己动手验证幂等逻辑按这份索引看最快关注点位置Apply 总调度lib/index.jspurge_apply / purge_revert 工具lib/index.js补丁声明与默认配置cordis.patch.yml补丁表汇总ALL_PATCHESlib/core.js备份backupAlllib/core.js回滚revertAlllib/core.js替换引擎applyReplacementsToTextlib/core.js批量改写applyPatcheslib/core.js状态计算patchStatuslib/core.js宿主 Surface 隔离lib/core.jsClean 页除了三个动作还集成了多套规则集的启用/删除管理让不同评估场景可切换不同的AGENTS.md/CLAUDE.md而不必反复 ApplyClean 页的整体布局——补丁分组状态、提示词编辑器、规则集列表、Apply / Restore / Uninstall 入口都集中在这里小结dsh-purge 把「补丁注入」做成了一件可反复执行的事Apply 靠 marker 自检 needle 匹配 状态机三层防线保证幂等备份靠「只建一次.dshpurge.bak」锁定真原件Restore 靠「无备份不删原件」守住底线Surface 隔离确保只动当前宿主。理解了这四件事你就掌握了它对 DeepSeek Harness 做幂等改写的完整原理。【免费下载链接】dsh-purgeDeepSeek Harness 破甲让所有模型都能破甲不同模型可换不同提示词默认提示词面向国模「小码酱」。Jailbreak for every model — swap prompts per model. 求 Star 收藏 ⭐项目地址: https://gitcode.com/gh_mirrors/ds/dsh-purge创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表