
dsh-purge 上手指南安装命令、改动的三层文件清单与零残留干净卸载【免费下载链接】dsh-purgeDeepSeek Harness 破甲让所有模型都能破甲不同模型可换不同提示词默认提示词面向国模「小码酱」。Jailbreak for every model — swap prompts per model. 求 Star 收藏 ⭐ 如要二开请查看署名要求部分项目地址: https://gitcode.com/GitHub_Trending/ds/dsh-purgedsh-purge 是装在本机官方 DeepSeek Harness 上的红队评测插件核心功能「破甲」把宿主层的提示词改写、审批门、沙箱策略与模型本身的表现拆开用来区分「模型拒答」和「宿主拦截」。本文只回答两个问题插件到底改了本机哪些文件想反悔时能不能完整删干净。结论基于当前仓库 v1.1.78每条都挂到具体文件与函数可逐条核查。装之前的版本与安装位置核对先对版本再谈命令。package.json 中dshTarget写死0.2.1-rc.20.2.0 仍可用engines.node 18。dsh 0.1.7 及更早版本必须配 1.1.39 及更早的插件版本对不上的补丁会显示「待应用」或「跳过」不会乱改文件但别拿最新版去打 0.1.x。官方 Web 与官方桌面端是两个 profile各自安装、各自应用一边的包进不了另一边。手动安装时先定位你实际启动的宿主对应那份.dsh——本机常有两份改错那份是最高频事故。安装的两条命令与装完三步按 profile 各装一条dsh plugin --profile web add dsh-purge # 官方 Webdsh web dsh plugin --profile desktop add dsh-purge # 官方桌面端EXE当前目录已是本仓库时把包名换成add .registry 拉不动时同一个--profile下把目标换成仓库的master.tar.gzdsh.install段登记了 tarball / zip / git 三个来源。不要走插件市场一键安装会报already queued: dsh-purge。注意把插件写进 profile还不会改deepseek-ai。lib/index.jsapply()里第 1505 行的注释写死了这一点「启动不写宿主包。补丁 / bak / client.js / runtime 只在点『应用』时写一次。」装完必须做三下完全退出再重开刚装的那个宿主Web 停掉dsh web桌面端托盘也要退出在宿主里点会话标题旁的dsh-purge按钮进「清洗」页点「应用」。宿主自己的设置页里没有这一项「应用」成功后自动重启一次补丁没打完不重启。重启后新开一轮对话注入才进入当前会话。✅ 怎样算装上了会话标题旁出现 dsh-purge 按钮且「清洗」里能点「应用」聊天里/purge status打出DSH_HOME与补丁列表路径是你正在用的那一份没装的可选包显示跳过不挡住完成。操作面有三个、行为一致CLIdsh-purge --status / --apply / --revert / --uninstall / --edit、聊天/purge status | apply | revert | uninstall | edit | help、模型工具purge_status/purge_apply/purge_revert。dsh不在 PATH 时手动装插件放进$DSH_HOME/plugins/dsh-purgegit clone https://gitcode.com/GitHub_Trending/ds/dsh-purge→ 只改对应 profile 的package.jsondependencies加dsh-purge: file:../../plugins/dsh-purgedsh.profile.bundles末尾追加dsh-purge→ 在该 profile 目录内pnpm install→ 重启宿主点「应用」。它到底改了哪些文件三层清单一次看完targetFiles()lib/core.js 约 6313 行起列出全部补丁目标共三层层级目标作用备份方式官方deepseek-ai/*包内运行逻辑dsh-agent-instructionslib/index.jslib/bootstrap.js、dsh-user-approvallib/index.js、lib/types/index.js、lib/invariant.js、dsh-sandbox/dsh-fs-sandbox/dsh-sandbox-local、dsh-base/dsh-web-app/dsh-headless的cordis.patch.yml与lib/index.js以及dsh-settings、dsh-fs-observation-policy、dsh-compaction-tool-result-pruner、dsh-tool-fs、dsh-subagent系统提示词组装、审批门、沙箱与升级策略、bundle 层配置与渲染、设置、观测、压缩、工具面与子代理每个目标文件一份 sidecar.dshpurge.bakCLI 启动 shimSHIM_NAMES [dsh.cmd, dsh.ps1, dsh]core.js 第 40 行dsh 启动脚本本身sidecar 备份另按「文件名 路径 sha1 前 20 位」归档到$DSH_HOME/dsh-purge/shim-backups/core.js 约 379 行$DSH_HOME下插件运行时prompt-inject.md会话注入覆盖段、rules/多套规则集、net-scope-allow.txt本地靶场名单、redteam/演练台事实库注入覆盖、规则集、靶场名单、演练事实prompt-inject.md是用户文件不备份rules/与redteam/卸载时整目录删除$DSH_HOME按「环境变量 → dsh 启动器旁的.dsh→~/.dsh」解析不写死盘符。注入入口只有一处cordis.patch.yml 中声明inject: [systemPrompt, tools]。每轮注入内容按「本进程框内提交的提示词 →$DSH_HOME/prompt-inject.md→ 插件内置加密槽」的优先级决策这条链在resolveInjectText()lib/rules.js 约 243 行实现。身份来自插件自带的加密默认不读宿主磁盘上的提示词文件。两条硬边界不碰 Harness 源码仓库不改非deepseek-ai的第三方插件源。写入安全四道机制逐条过写文件之前先过四道防护原子写。atomicWriteSync/atomicWriteFile/atomicCopyFilecore.js 第 66 行起全部先写同目录.tmp再 rename失败清理 tmp 后抛出——EBUSY / ENOSPC 都不会半写坏原文件幂等。重复应用是「已是最新」不会二次改写不匹配即跳过。宿主升级后原文对不上该条补丁显示跳过本次应用仍算完成不硬改备份防竞争。backupAll()core.js 约 6161 行先用fs.openSync(bak, wx)独占创建占位文件成功才atomicCopyFile写入失败路径会 unlink 占位避免下次把坏占位当成有效备份。备份落点有两处每个目标文件的 sidecar文件.dshpurge.bakBAK_SUFFIXcore.js 第 6035 行shim 另归档到$DSH_HOME/dsh-purge/shim-backups/防止原目录被宿主自升级整个换掉。反向自愈由restoreMissingOriginalsFromBak()core.js 约 6060 行负责声明过的补丁文件在磁盘上消失或被写成空文件时应用会先从.dshpurge.bak拷回再加载。还原、卸载与残留自检还原逻辑在revertAll()core.js 约 6207 行分三支有备份当前内容与备份字节相同则 skip不做无意义写入不同则写回并删除 bak无备份但文件内有dsh-purge标记绝不删除目标文件只按补丁反向拆掉插件写入的行无备份也无标记skip不碰。⚠️ 第 6248 行注释把底线写死了「没有 bak 时绝不删除目标。源码部署的构建产物缺备份时删了无法自愈#41。」两项永不进还原流程prompt-inject.md是用户文件还原时保留--revert的输出会注明profiles/name/cordis.patch.yml是官方支持的用户 patch 层插件从不写入isUserProfilePatchFile()core.js 第 6005 行显式排除历史误建的 profile 级.dshpurge.bak会被主动丢弃。卸载是更重的动作由uninstallPurge()lib/uninstall.js 约 208 行执行顺序固定为「先还原后删除」revertAll→revertAllShims→revertCmdFlash→ 删注入文件 → 重置并整目录删rules/→ 清演练台授权 → 收集清理目标各 profile 的node_modules/dsh-purge、插件树、$DSH_HOME/dsh-purge数据目录→ 最后才删。stripPluginFromPackage()负责从 profilepackage.json剥离dsh-purge的条目覆盖四种依赖键与bundles/plugins两个键。⚠️ 若还原阶段出现任何错误ok false且cleanup []——还原没完成一个文件都不删。✅ 卸载后复核再跑一次/purge statusbin/dsh-purge.js 的printStatus会逐项打印应看到备份 / backup: 无、补丁0/total 已清洗、各目标文件无.dshpurge.bak残留重启宿主后按钮消失。它明确不碰的两条线网络面。开源版攻击任务只放行本机回环与 RFC1918 私网域名先按系统解析含 hosts解析到的每个地址都必须是私网或回环hosts 把实验域名指到公网、解析失败、混有公网地址一律拦。entryHost()lib/net-scope.js 约 387 行只接受一个 IP 或一个完整主机名保存时丢弃密钥、密码、网段与通配符——在对话里说「这是我的服务器」不会放行。名单写入$DSH_HOME/net-scope-allow.txt。演练台授权。首次进入演练台要读完声明、等倒计时、滚到文末并勾选三项未授权时按钮直接标「未授权」它只用于你有权管理的本机、离线靶标或已书面授权的演练环境。回到开头的两个问题改的是三层登记在案的文件每一处写入都对应一份备份反悔干不干净由机制保证。动手前把 status 输出读一遍十分钟足够了。本项目为非盈利开源项目README 中有明确的合规声明与法律免责仅限本人有权管理的本机官方 Harness、离线靶标与书面授权演练环境使用者对自身行为独立承担法律责任。【免费下载链接】dsh-purgeDeepSeek Harness 破甲让所有模型都能破甲不同模型可换不同提示词默认提示词面向国模「小码酱」。Jailbreak for every model — swap prompts per model. 求 Star 收藏 ⭐ 如要二开请查看署名要求部分项目地址: https://gitcode.com/GitHub_Trending/ds/dsh-purge创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考