前言¶
DeepSeek Harness 的插件模型是「一切皆插件」:宿主负责转发模型和执行工具,插件可以在运行时改提示词、审批门、沙箱策略。做红队评测的人常遇到一个麻烦——只看「模型答不答」,会把宿主层拦截误当成模型拒绝。想在自己机器上把这两层分开、做受控评测,就得有一个能落补丁、能还原的工具。
上游 YuJunZhiXue/Xsdsh-purge 是这条路上的成熟实现,但它钉死在官方 dsh 0.2.1-rc.5(dsh web 的 web profile、桌面 EXE 的 desktop profile)。新出的 DSH NEXT 走另一条线:core 是 0.2.1-rc.4,外壳是 DSH NEXT 2.0.21-next,补丁清单、宿主目录结构都不一样,上游那套 engines.dsh 精确到 rc.5 的副本用不上。
下面介绍的 Xsdsh-purge-next 就是冲着这个缺口来的:一份核心精简版,包名 Xsdsh-purge-next,state 目录独立,专门给 DSH NEXT / rc.4 跑。
这是什么¶
Xsdsh-purge-next 是 wodaimnd 维护的 DSH 客户端插件,仓库 https://github.com/wodaimnd/Xsdsh-purge-next,包版本 4.6.11-next.2,协议 MIT。仓库 package.json 里 author 写作 Kewei Chen <wodaimnd@users.noreply.github.com>,仓库创建于 2026-11-04,目前只有一次提交(chore: publish Xsdsh-purge-next v4.6.11-next.2)。
定位来自它自己的 description:
Xsdsh-purge-next 核心精简版(DSH NEXT / rc.4 专用;独立包名、模块 id、状态目录)
三个词各自对应 package.json 里的具体字段:包名 Xsdsh-purge-next(与原版 Xsdsh-purge 不同)、dsh.bundle.bundle 里的 patch 文件是本仓库自己的 cordis.patch.yml、状态目录 dshNextCompat.dataDir 是 Xsdsh-purge-core。这样做的目的是让本副本和原版并存,互不覆盖。
社区目录里把它归为「客户端」分类,GitHub 星标 1、fork 1。目录页是 https://www.skillhub.cn/plugins/wodaimnd/Xsdsh-purge-next ,属社区站点,与 DeepSeek 无官方从属关系。
它为哪个宿主改动¶
这部分必须写清楚,否则容易装错。package.json 的 dshNextCompat 把目标环境记得很具体:
"engines": ">=0.2.1-rc.0 <0.3.0",
"verifiedRuntime": "0.2.1-rc.4",
"verifiedShell": "DSH NEXT.exe (desktopVersion 2.0.21-next)",
"dshTarget": "0.2.1-rc.4",
"flavor": "core",
"coreBuildFrom": "4.6.11-next.1",
"dataDir": "Xsdsh-purge-core",
"profileScope": "next",
"appTarget": "DSH NEXT 2.0.21-next (core 0.2.1-rc.4)"
engines.node 要求 >=18,peerDependencies 是 @deepseek-ai/cordis: ^4.0.1。
并存关系由两个字段约定:
coexistence:原版跑desktopprofile(rc.5),本副本跑nextprofile(rc.4);状态目录Xsdsh-purge-core与Xsdsh-purge物理隔离。hostScope:apply只写当前进程所在的安装根,避免同时改到另一份 DSH 安装;selfInstallHandoff保证在 Electron 里 handoff 固定取本进程resources/app.asar。
已经识别出的宿主缺口也写在了字段里:shellPatches 中 45/46/82 在 rc.4 无对应实现,83/84 的语义在 rc.4 已由 fail() 的 stopping 判定原生覆盖,因此这些条目降级为 optional/knownGap。
内置哪些能力¶
keptForCore 列出了保留的页面:清洗、演练台、模式提示词、外观、红队、逆向、玻璃开关。removedFeatures 则是 wallpapers、background-music、desktop-pet,对应 lib/wallpapers.js、lib/cat.js、lib/pet.js、lib/ui/pet/90-pet.js 等路径已被移除。从上游搬过来、走核心的路子,只留评测相关的东西。
模块入口能在 exports 里查到,红队与逆向各自有独立入口:
"./redteam": "./lib/redteam/index.js",
"./redteam/store": "./lib/redteam/store.js",
"./redteam/ui": "./lib/redteam/ui.js",
"./redteam/tools": "./lib/redteam/tools.js",
"./reverse": "./lib/reverse/index.js",
"./reverse/store": "./lib/reverse/store.js",
"./reverse/ui": "./lib/reverse/ui.js",
"./reverse/tools": "./lib/reverse/tools.js"
files 里带上了 agents、presets、skills、bin、cordis.patch.yml、screenshots.json。三个 bin:
"bin": {
"Xsdsh-purge-next": "bin/Xsdsh-purge.js",
"dsh-locate-harness": "tools/deepseek-harness-locator.mjs",
"dsh-locate-harness-cmd": "tools/find-deepseek-harness.cmd"
}
客户端注入目标是 @deepseek-ai/dsh-client-connection、dsh-client-locale、dsh-client-ui-slots、dsh-client-ui-settings 四个包,平台字段是 web。源码树里有 test/ 下的 asar-swap-restart、reverse-preset、redteam-auth 等用例,yarn gate/gate:fast 这类脚本用来跑 lint、typecheck、UI 边界检查和打包校验。
安装与启用¶
先说明一点:这个 fork 没有改写 README,仓库里的 README.md / README.zh-CN.md 仍是上游 YuJunZhiXue/Xsdsh-purge 的全文(含赞助、违规商用公示、法律免责声明)。所以下面这段代码是上游 README 给 Xsdsh-purge 的命令,针对官方 dsh,不是本副本的部署方式,引用时务必注意。
dsh plugin --profile web add Xsdsh-purge
dsh plugin --profile desktop add Xsdsh-purge
而本副本自己声明的安装来源在 package.json 的 dsh.install:
"install": {
"preferred": "tarball",
"tarball": "https://github.com/YuJunZhiXue/Xsdsh-purge/archive/refs/heads/master.tar.gz",
"zip": "https://github.com/YuJunZhiXue/Xsdsh-purge/archive/refs/heads/master.zip",
"git": "https://github.com/YuJunZhiXue/Xsdsh-purge.git"
}
也就是说,声明值指向的是上游仓库,而不是 wodaimnd/Xsdsh-purge-next 这个 fork。装之前要对照着看:如果按 preferred: tarball 走,拿到的是上游 master 包;要装这个精简副本,得自己把包换成本仓库的产物(比如本地 tar 打包或 add . 这类方式,具体命令仓库里没写)。作者在这一行没有留下可复现的安装文档,这是目前最大的信息缺口。
典型用法¶
仓库本身没有写 fork 专属的用法章节。可核实的框架是下面几点:
1、apply 动作走 patch 清单 cordis.patch.yml,写入位置由 hostScope: current-install 决定,只改当前进程所在的安装根。
2、补丁应用后宿主需要重启;还原、卸载也在同一套机制里,residueAutoClear: true 用于清理残留。
3、红队与逆向模块通过 exports 里的 ./redteam/*、./reverse/* 加载,keptForCore 列的「清洗 / 演练台 / 模式提示词 / 外观 / 红队 / 逆向 / 玻璃开关」是可见入口。
4、宿主定位用 dsh-locate-harness / dsh-locate-harness-cmd,这是 tools/ 下的两个可执行入口。
这四条来自字段和文件清单,不是手测结果。
适用场景与注意¶
适合的人:想在 DSH NEXT(core 0.2.1-rc.4 / 桌面 2.0.21-next)上复用 Xsdsh-purge 红队与逆向能力、又不想打扰本机那份 rc.5 官方安装的用户。也适合想拿 cordis.patch.yml 当补丁清单参考、自己做宿主适配的人。
必须注意的几件事:
- 权限:插件以当前 dsh 进程权限运行。
dirMode是resources/app dir patched in place for dsh-desktop-next,apply直接改当前安装目录并会重启宿主。装之前把源码和cordis.patch.yml逐条过一遍,不要用就装上。 - 来源核对:星标 1、只有一个提交、文档沿用上游,属早期副本。
dsh.install默认指向上游 master,实际安装前要确认拿到的到底是哪个仓库。 - 署名与授权:上游 README 明确要求借用名称、思路、代码或提示词必须署名并写明来源仓库,商用、转卖、卖课即「许可当场作废」。本 fork 沿用了这套条款。
- 合规边界:README 声明本项目只作用于使用者自己本机已安装的官方 Harness,禁止对公网目标和未经授权系统扫描、探测、攻击,也禁止在中国大陆、香港、澳门网段运行。用之前自己读一遍那十条免责声明。
- 这是社区维护的第三方副本,README 里已写明与 DeepSeek 官方无隶属、无商业合作、无官方背书。
小结¶
Xsdsh-purge-next 做的事很收敛:把 Xsdsh-purge 削成核心精简版,换独立包名、模块 id 和状态目录,让它在 DSH NEXT / rc.4 上跑,同时和本机那份 rc.5 的原版并存。要拿它做评测,先花时间核对安装来源和 cordis.patch.yml 的每一条改动。
- 目录页:https://www.skillhub.cn/plugins/wodaimnd/Xsdsh-purge-next
- 仓库:https://github.com/wodaimnd/Xsdsh-purge-next
- 上游项目:https://github.com/YuJunZhiXue/Xsdsh-purge