dsh-purge 0.2.1-rc.2 社区适配版:在新版 DSH 上继续跑破甲补丁

前言

DeepSeek Harness(DSH)把宿主里的系统提示、工具策略和部分运行时行为做成可补丁化的形态,社区里常用的「破甲」方案之一是 dsh-purge。原项目 YuJunZhiXue/dsh-purge 在 2026-10 宣布暂时停更:不发新版、不处理 issue/PR,新版 DSH 也不保证跟上;最后一个正式版是 v1.1.71,master 上的 1.1.72 从未发版。

若你把 DSH 升到 0.2.1-rc.2,直接沿用上游 1.1.72 往往会卡在提示词组装阶段——面板补丁可能全绿,但每一轮对话在发出模型请求前就抛 unknown prompt variable "[cwd]"。下面介绍维护者 evilevil 在 SkillHub 分类「模型推理」下的社区仓库 evilevil/dsh-purge-021rc2:以 1.1.72 为基座,专门修 0.2.1-rc.2 上必崩的几处,做成可直接安装的版本(当前发行版 1.1.72-dsh021rc2.4)。上游恢复维护后,README 建议优先回到上游。

这是什么

dsh-purge 是 DSH 生态里的破甲类插件:通过 Cordis 补丁与身份层逻辑,把自定义人格与一系列宿主修复应用到 web profile(及配套桌面端流程)。本仓库是 MIT 许可的社区适配分支,不改变上游产品行为与提示词内容的设计意图,只做与 @deepseek-ai/dsh / dsh-base 0.2.1-rc.2 的兼容(README 写明 macOS + web profile 实测;0.2.0-rc.2 逻辑上仍可用,改动向后兼容)。

GitHub:https://github.com/evilevil/dsh-purge-021rc2
目录页:https://www.skillhub.cn/plugins/evilevil/dsh-purge-021rc2

为什么 0.2.1 上会崩

0.2.1 调整了提示词变量的注册范围:agent-loop 只注册 provider、model,不再注册 cwd。而 1.1.72 的 lib/identity.js 仍会把 deployment:persona-suffix 写成带 {{cwd}} 的文案,于是每轮对话在模型请求前就会失败。补丁面板此时可能仍显示正常,因为崩点在提示词组装,不在补丁应用本身。

本版修了什么(摘要)

README 将修复与上游 issue 对应,主要包括:

问题 要点
#114 / #126 / #136 identity.js 对 cwd 做能力探测与降级;cordis.patch.yml 中 personaSuffix 改为由 identity 层统一决定;可用环境变量 DSH_PURGE_CWD=variable\|static 强制行为
#132 / #40 0.2.1 的 system-prompt 在 assemble 后增加 requiredContexts 过滤,旧 pattern 不命中;补丁 #40 增加 0.2.1 形状的 pattern + replacement
#119 desktop.js 对 atomicCopyFile() 补 async/await,避免 Node 24 下未捕获异常导致 dsh: fatal load failure
#127 / #106 HOST_SYNC 白名单补全 closeSync 等,修复无 .bak、还原/卸载失效
#121 Ctrl+Enter 插话与 steer/followup 冲突;1.1.72 已改为 agent.steer,本版在真机确认
红队预设 移除未注册工具上的 toolFilter.deny,避免 tools.restrict() 抛 unknown global tool

未处理:上游 #133(Windows 桌面换包)与 #30(system section 过滤争议)不在本适配范围。

安装

安装命令以仓库 README 为准,不要用插件名自行拼接 dsh plugin add。

方式一:一键脚本(macOS,web profile)

脚本会备份现有插件目录、解包发行版,并写入 installed-rev / applied.json 戳,避免启动时误判版本落后而反复重打补丁。

curl -fsSL https://raw.githubusercontent.com/evilevil/dsh-purge-021rc2/main/scripts/install.sh | sh

方式二:手动下载 Release 包

先下载对应版本与校验文件,校验通过后解压到 web profile 的 node_modules/dsh-purge:

V=1.1.72-dsh021rc2.4
curl -fsSLO https://github.com/evilevil/dsh-purge-021rc2/releases/download/v$V/dsh-purge-$V.tgz
curl -fsSLO https://github.com/evilevil/dsh-purge-021rc2/releases/download/v$V/SHA256SUMS.txt
shasum -a 256 -c SHA256SUMS.txt
rm -rf "$DSH_HOME/profiles/web/node_modules/dsh-purge"
mkdir -p "$DSH_HOME/profiles/web/node_modules/dsh-purge"
tar xzf dsh-purge-$V.tgz -C "$DSH_HOME/profiles/web/node_modules/dsh-purge" --strip-components=1

方式三:写进 profile 依赖

"dsh-purge": "https://github.com/evilevil/dsh-purge-021rc2/releases/download/v1.1.72-dsh021rc2.4/dsh-purge-1.1.72-dsh021rc2.4.tgz"

本地升级新版本时,README 示例:PURGE_VERSION=<新版本> sh scripts/install.sh。

装完怎么用

  1. 完全退出并重开 DSH(补丁改的是已加载的 JS,不重启不生效)。
  2. 左侧栏 Purge → 状态页 → 应用。
  3. 成功会自动重启;重启后新开一轮对话,注入才进入当前会话。
  4. 面板应显示 69 个补丁行 / 0 pending,#40 / #85 / #86 / #87–#92 全绿(README 真机记录里应用后为 70/86 applied、0 pending,以你本机面板为准)。

验证是否注入:随便问一句「你是谁」,回答应来自 ~/.dsh/prompt-inject.md 的人格,而不是官方自我介绍。

离线验证(仓库自带)

不依赖网络的三组测试:

node test/identity.test.mjs   # {{cwd}} 能力探测与降级
node test/patches.test.mjs    # #40、#86、#119/#127 等
node test/sandbox-apply.mjs   # 复制宿主目标到 /tmp 跑全量 apply

README 给出的 macOS / dsh 0.2.1-rc.2 / web profile 真机片段:应用前 #40 skipped、多条 pending;应用后 #40 等与清洗相关项 applied,hostCleanMarkersPresent 与 hostPromptKeepsInject 为 true。

适用场景与注意

  • 适合谁:已在用 dsh-purge 做提示词注入、宿主补丁或红队相关预设,且宿主版本是 0.2.1-rc.2(或仍停留在 0.2.0-rc.2 并需要 1.1.72 能力)的 DSH 开发者。
  • 权限与风险:插件以当前 DSH 进程权限运行,会修改宿主 JS 与本地配置;安装前请阅读源码与 MIT 许可证,并遵守上游署名要求(借用名称、思路、代码或提示词须署名并写明来源仓库)。README 明确:本仓库无官方背书,破甲类插件请仅在自有环境做安全研究。
  • 生态说明:DSH 强调「一切皆插件」;SkillHub 等社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系。
  • 已知限制:主要验证 web profile + 官方桌面 0.2.1-rc.2 代码形状;上游停更后,DSH 再改宿主结构时补丁锚点可能需要重新对齐。shim 目录: 未定位 在 npx 安装下 README 称属正常现象。

结尾

evilevil/dsh-purge-021rc2 在上游停更窗口里,把 1.1.72 的 dsh-purge 接到 DSH 0.2.1-rc.2,集中修了 {{cwd}} 崩溃、补丁 #40 锚点、桌面端未 await、hostFs 同步白名单等 blocker。需要安装与 issue 列表时,以 GitHub README 为准:

  • 目录页:https://www.skillhub.cn/plugins/evilevil/dsh-purge-021rc2
  • 仓库:https://github.com/evilevil/dsh-purge-021rc2
羽毛球分组比赛记分
小程序二维码

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

小夜