拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

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

dsh-purge无盘符路径检测实战:跨Web/桌面/官方EXE三种宿主如何精确定位DSH_HOME

dsh-purge无盘符路径检测实战:跨Web/桌面/官方EXE三种宿主如何精确定位DSH_HOME

dsh-purge无盘符路径检测实战:跨Web/桌面/官方EXE三种宿主如何精确定位DSH_HOME

【免费下载链接】dsh-purgeDeepSeek Harness 破甲:让所有模型都能破甲,不同模型可换不同提示词;默认提示词面向国模「小码酱」。Jailbreak for every model — swap prompts per model. 求 Star 收藏 ⭐项目地址: https://gitcode.com/gh_mirrors/ds/dsh-purge

dsh-purge是 DeepSeek Harness 的本地红队评估插件,它的第一道关卡就是找到 Harness 的数据根目录DSH_HOME:提示词补丁、规则集、Skill 全部落在这个目录下。它不写死任何盘符,而是按固定优先级自动探测,让同一套代码在 Web 宿主、桌面端、官方 EXE 三种形态下都能精确命中。本文带你实战看懂这条检测链。

什么是 DSH_HOME:为什么不能写死路径

DSH 的数据目录因安装方式而异:

  • Web/CLI 安装:npm 全局安装后,.dsh可能紧挨着dsh启动器(绿色目录、自定义 prefix);
  • 桌面端 / 官方 EXE:数据可能放在 EXE 旁边、AppData或 macOS 的应用支持目录;
  • 手动迁移:用户可能通过环境变量DSH_HOME显式指定。

如果代码里写死C:\Users\...\dsh,换一台机器就全盘失效。因此 dsh-purge 采用"无盘符路径检测"策略:按优先级逐层候选,谁存在用谁,核心入口是 findDshHome。

四级检测链:DSH_HOME 定位的完整顺序

findDshHome的判定顺序只有一条主线:

优先级检测项适用宿主源码
1环境变量DSH_HOME全部core.js#L1419-L1420
2桌面安装目录旁.dsh/dsh-home桌面端、官方 EXEcore.js#L1421-L1426
3dsh启动器旁的.dsh(便携目录)Web / CLIcore.js#L1429-L1432
4~/.dsh,含 WSL 回退 Windows全部兜底core.js#L1433-L1437

判定一个目录是否"长得像" DSH_HOME,只需看目录名是否为.dsh或dsh-home,见 isDshHomeDir。整个过程不出现任何盘符字面量,Windows、macOS、Linux 通用。

Web/CLI 宿主:启动器旁检测(便携模式)

Web 宿主的检测分两步:

  1. 找启动器目录findShimDir:从PATH里定位dsh可执行文件所在目录,Windows 上刻意不调用where.exe(避免闪控制台),非 Windows 走command -v dsh。
  2. 沿祖先目录找.dshportableHomeFromLauncher:依次检查启动器目录本身、上一级、上两级(npm prefix 场景),命中.dsh即返回。

这意味着你把整个 Harness 挪到D:\tools\dsh\并把.dsh放在旁边,插件照样能跟着走——这就是"无盘符便携"的关键。npm 覆盖node_modules后,reapply 会在重启时依据同一套检测重新应用补丁,无需手改路径。

桌面端与官方 EXE:进程旁 + AppData + 注册表

桌面形态的识别靠 detectSurface:检查进程名是否为DeepSeek Harness.exe/DSH Desktop、resourcesPath是否落在resources/树内等特征(surface.js#L18-L36),避免把同名 monorepo 仓库误判为桌面安装。

识别为桌面宿主后,desktopHomeCandidates 按序生成候选:

  1. EXE 所在目录(findDesktopAppExecutable)及其下一级的.dsh/dsh-home;
  2. process.resourcesPath反推的安装树;
  3. listDesktopInstallRoots 汇总的安装根:EXE 旁目录、注册表(DisplayIcon/UninstallString反查)、Local\Programs\DSH Desktop、Program Files\DeepSeek Harness等常见位置(desktop.js#L253-L275);
  4. 固定猜测目录 desktopDshHomeGuesses:Windows 的%APPDATA%/DeepSeek Harness/dsh-home、%LOCALAPPDATA%/...,macOS 的~/Library/Application Support/DeepSeek Harness/dsh-home。

官方 EXE 更新场景(official-update.js)在重启时改跑deepseek-harness-<版本>-win-x64.exe安装包,装完再解开 asar 重新打补丁,期间DSH_HOME始终指向旧目录,数据不丢。

WSL 互操作:一个容易漏掉的兜底

在 WSL 里跑 Web 宿主时,~/.dsh并不存在,真正的数据在 Windows 侧。findWslWindowsDshHome 会检测/mnt/c/Users是否存在(或WSL_DISTRO_NAME已设置),逐个用户名目录找.dsh,命中即返回——盘符C:被抽象成了挂载点,代码里依旧没有写死任何字母盘。

验证检测是否生效

  • 会话内执行/status一类命令,输出里会直接打印当前解析到的DSH_HOME(index.js#L113);
  • 红队相关配置统一读process.env.DSH_HOME || ~/.dsh,如 redteamRoot,与主检测链保持一致;
  • 若怀疑宿主误判,可显式导出DSH_HOME强制命中第一优先级,这是排查问题最快的手段。

常见问题

Q:我改了 Harness 安装目录,补丁会失效吗?不会。Apply 之后宿主重启会走 reapply 复检路径,检测链重新定位新目录即可。

Q:为什么桌面端不借用 Web 启动器旁的.dsh?findDshHome 中桌面宿主只走桌面候选链,避免把 Web 与桌面的数据串在一起——这也是"精确定位"的一部分。

Q:环境变量和自动检测冲突时听谁的?永远听DSH_HOME环境变量,它在第 1 优先级直接短路返回。

小结

dsh-purge 的路径检测设计可以浓缩成一句话:环境变量优先,宿主特征决定候选集,目录名校验兜底,全程零盘符硬编码。理解 findDshHome 这条四级链,你就能在任何安装形态下预判 DSH_HOME 的落点,也为自研跨宿主插件提供了可直接借鉴的路径解析范式。

【免费下载链接】dsh-purgeDeepSeek Harness 破甲:让所有模型都能破甲,不同模型可换不同提示词;默认提示词面向国模「小码酱」。Jailbreak for every model — swap prompts per model. 求 Star 收藏 ⭐项目地址: https://gitcode.com/gh_mirrors/ds/dsh-purge

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

返回列表