dsh-purge 0.2.1-rc.2 适配版:在 DSH 上做可换提示词的本机红队评测

前言

在 DeepSeek Harness(DSH)里做模型安全或策略评测时,常见误判是:把宿主在运行时改写的提示词、审批门和工具策略,当成「模型本身拒绝回答」。上游项目 YuJunZhiXue/dsh-purge 的定位,是在本机官方 Harness 安装上把「宿主策略层」和「模型响应」拆开,便于受控红队评测;并支持按模型切换注入提示词,默认面向国模「小码酱」。

上游 1.1.71 在 DSH 0.2.1-rc.2 上会因宿主九处结构变更而加载失败、静默失效,甚至导致 DSH 无法启动。维护者 Potato1008ypy 的仓库 potato1008ypy/dsh-purge-0.2.1rc2-fix 在锁定上游 1.1.71(commit 6c1d638)的前提下做兼容修复,不改写提示词内容、不移除功能。该条目在社区目录 SkillHub 分类为工作流;截至资料记载,GitHub 约 32 stars、18 forks。目录站与 DeepSeek / 幻方无官方从属关系,安装前请以仓库源码与 MIT 许可自行核对。

这是什么

dsh-purge(npm 包名 dsh-purge,本分支版本 1.1.71-dsh0.2.1rc2-fix.7)是装在本机 @deepseek-ai/dsh 上的网络安全红队评测类 DSH 插件。简介表述为:让所有模型都能按场景切换破甲提示词(Jailbreak for every model — swap prompts per model)。

本仓库是适配分支,不是上游官方发布。验证基线为 DSH Desktop 0.2.1-rc.2(Windows,desktop profile);dsh CLI 0.2.1-rc.2(web profile)适用同一套修复但未逐项回归。运行时要求 Node.js ≥18;Windows 下避免控制台闪窗需 Node ≥22。仓库声明用途为本地安全研究与授权测试。

适配修复做了什么

下面九项(FIX-01~FIX-09)解决的是「在新宿主上让上游 1.1.71 行为重新成立」,而非新增产品功能。修复带宿主结构探测,在 0.2.0-rc.2 等旧宿主上可自动退让;随包离线测试 node test/fixes.test.mjs 预期为 全部通过:22 passed, 0 failed。

ID 典型症状(摘要)
FIX-01 启用后 DSH 无法启动;cordis.patch.yml 重复 insert
FIX-02 toolFilter is no longer supported,预设无法挂载
FIX-03 unknown prompt variable "{{cwd}}"
FIX-04 补丁 #40 COMPLETE_PROMPT_KEEP_INJECT 静默失效
FIX-05 desktop-shell 补丁因可执行名 DSH Desktop.exe 未识别而失败
FIX-06 单段插值失败导致整个人格段丢失
FIX-07 无 .dshpurge.bak,还原与卸载失效
FIX-08 子代理经 workflow / ralph 意外递归
FIX-09 点「应用」后出现 dsh: fatal load failure

补丁状态面板新增 retired 标记,区分「未命中」与「宿主结构已不存在」;资料记载应用成功后的预期终态约为 applied 66 / na 15 / pending 1(#40 仅在 complete 模式下命中)。

核心功能(上游能力,本分支保持)

经过上面的适配,侧栏与清洗页能力仍按上游设计运行:

  1. dsh-purge 侧栏:会话标题旁按钮打开右侧栏,含「清洗」「演练台」等页。
  2. 清洗:分组查看补丁,执行应用、还原、卸载;编辑提示词与多套规则集。
  3. 提示词注入:在清洗页编辑 prompt-inject.md 作为会话覆盖段;身份来自插件内加密默认提示词(提示词框默认显示的那份),不读取宿主磁盘上的提示词文件。
  4. 按模型换提示词:产品描述支持不同模型使用不同提示词;默认提示词面向国模「小码酱」。
  5. 演练台:正式版内置,授权后可查看资产、技能与本机环境(仅限有权管理的本机、离线靶标或书面授权演练)。
  6. 宿主策略补丁:通过「应用」写入本机 @deepseek-ai 包相关文件;官方能力保留,不另写一套身份。启动时会再检查并应用;npm 升级覆盖 node_modules 后无需手改文件。

运行时数据落在 $DSH_HOME(未设置时依次尝试安装目录旁 .dsh、~/.dsh 等),包括 prompt-inject.md、rules/、skills/、net-scope-allow.txt、redteam/。Web 与桌面端各用各自 profile 的主目录,需分开安装、分开点「应用」。

安装与启用

安装分三步:装包 → 启用(写入 dsh.profile.bundles)→ 打补丁。前两步让宿主加载插件;第三步在会话标题旁 dsh-purge → 清洗 → 应用 才会改写宿主文件,且不会自动执行。应用成功后会自动重启一次;重启后新开一轮对话,注入才进入当前会话。

文档明确:不要在 dsh-market(插件市场)里启用本插件——热挂载路径不写 bundles,含 inject 与 config 的 bundle 会失败。

方式一:Windows 一键脚本(推荐)

先完全退出 DSH,再执行:

powershell -NoProfile -ExecutionPolicy Bypass -Command "iwr -UseB https://raw.githubusercontent.com/Potato1008ypy/dsh-purge-0.2.1rc2-fix/v1.1.71-dsh0.2.1rc2-fix.7/install.ps1 -OutFile $env:TEMP\dsh-purge-install.ps1; & $env:TEMP\dsh-purge-install.ps1"

脚本会探测安装目录与 profile,装包并写入 dsh.profile.bundles;DSH 未退出时会拒绝执行(避免 ERR_PNPM_EPERM)。

方式二:pnpm add

pnpm add "github:Potato1008ypy/dsh-purge-0.2.1rc2-fix#v1.1.71-dsh0.2.1rc2-fix.7"

pnpm add 只写 dependencies,不登记 bundles。装完后到「插件」页手动启动,再重启 DSH。文档提醒:不要用 Release tarball 地址安装,在宿主 CI=true 下可能触发 ERR_PNPM_MISSING_TARBALL_INTEGRITY 并冻结 profile 安装。

方式三:桌面端命令行 helper

需先退出 DSH;dsh plugin --profile desktop 会被拒绝,应使用封装脚本:

dsh-plugin.bat plugin --profile desktop add "github:Potato1008ypy/dsh-purge-0.2.1rc2-fix#v1.1.71-dsh0.2.1rc2-fix.7"

方式四:GUI「插件」页

在 插件 → 添加插件 粘贴 Git 地址,同页点「启动」后完整重启 DSH,再执行 清洗 → 应用。若 profile 中已有带原生模块的插件且 DSH 正在运行,GUI 路径可能因 ERR_PNPM_EPERM 失败,宜改用脚本或 helper。

装包后可用下列命令做修复回归(路径以本机 node_modules/dsh-purge 为准):

cd <DSH_HOME>/profiles/desktop/node_modules/dsh-purge
node test/fixes.test.mjs

文档还强调:不要通过包管理器把本插件「更新」到上游 npm 的 dsh-purge,版本号同为 1.1.71 时易被覆盖,应先按 INSTALL.md 清理后重装本分支标签。

典型用法

  1. 完成装包、启用并重启后,在会话标题旁打开 dsh-purge,进入 清洗 页,点击 应用 等待自动重启。
  2. 在 提示词 区域编辑 prompt-inject.md,按评测需要调整注入内容;不同模型可配置不同提示词策略(与产品简介一致)。
  3. 在聊天或 CLI 中查看状态与操作补丁:
# CLI
dsh-purge --status
dsh-purge --apply
dsh-purge --revert
dsh-purge --uninstall
dsh-purge --edit

# 聊天
/purge status | apply | revert | uninstall | edit | help
/rules list | use <id> | create <id> | delete <id> | reset | help
/skills list | import <压缩包或文件夹> | create <id> [说明] | delete <id> | help

验收可参考:会话标题旁出现 dsh-purge;/purge status 能输出 DSH_HOME 与补丁列表,路径应与当前使用的 profile 一致。

「自己的服务器」在提示词下方:每行登记一个 IP 或完整主机名,保存后写入 $DSH_HOME/net-scope-allow.txt。上游文档说明中国大陆、香港、澳门地址默认禁止,仅登记项可例外;口头说明不能替代登记。

适用场景与注意

适合谁:在本机已安装的官方 DeepSeek Harness 上,做授权范围内的 LLM 安全、红队科研与策略鲁棒性评测的开发者或安全研究人员。

权限与信任:插件以当前 dsh 进程权限运行,应用补丁会改写本机 Harness 相关文件并可能自动重启。安装前应阅读 仓库源码、FIXES.md 与许可;上游要求借用名称、思路、代码或提示词须署名并标明 YuJunZhiXue/dsh-purge。

合规:上游 README 载明本项目仅供学习与研究、须遵守法律法规,严禁未授权攻击与违法用途;评测对象应是本机 Harness 或书面授权的受控环境,不是公网未授权目标。本插件与 DeepSeek 官方无隶属或背书关系。

版本:宿主升级到 0.2.1-rc.2 之后若再变更结构,补丁锚点可能再次漂移,需按仓库说明重新审计。本分支针对 0.2.1-rc.2;DSH 低于 0.2.0 不在支持范围内。

结尾

若你正在 DSH Desktop 0.2.1-rc.2 上使用上游 dsh-purge 却遇到无法启动、补丁静默失败或应用崩溃,Potato1008ypy 的适配分支在保持上游 1.1.71 产品行为的前提下补齐九处宿主兼容点,并保留按模型切换提示词的红队评测工作流。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye