dsh-client-fix:修复 DSH Desktop 中文路径报错,自动同步 web 与 desktop 插件

前言

在 Windows 上用 DSH Desktop 的开发者,多半碰到过三类麻烦:

1、桌面端生成的 pnpm 命令在路径含中文时乱码,装插件直接报「系统找不到指定的路径」;
2、市场(dshmarket)更新只作用于 desktop profile,web 侧得手动再装一遍;
3、pnpm 会拦截 24 小时内发布的新包,刚上架的插件装不上。

dsh-client-fix 针对的就是这三件事。下面介绍它的功能、安装方式和注意点。

这是什么

dsh-client-fix 是由 labi43186-spec 维护的 DSH Desktop 客户端修复插件,MIT 许可证,当前版本 1.5.0,peerDependencies 为 @deepseek-ai/cordis ^4.0.1。它做三件事:修复 pnpm shim 的编码 bug、把 web profile 自动同步成与 desktop 一致、在安装前预加 minimumReleaseAgeExclude 豁免。README 注明使用 DeepSeek-V4-Flash 制作。

核心功能

修复 pnpm shim 编码 bug

DSH Desktop 启动时生成 runtime-commands/bin/pnpm.cmd,该文件以 UTF-8 写入,但 cmd.exe 按 GBK(936) 读取。路径里带中文时(如 D:\软件\...)解析乱码,报「系统找不到指定的路径」。

插件的处理方式:启动 3 秒后自动给 shim 第二行补一行 chcp 65001 >nul(无 BOM),跨代码页通用。桌面应用重启后若重新生成了坏 shim,插件会自动再次修复,不需要人工介入。

fs.watch 自动同步 web(向 desktop 对齐)

插件监听 desktop profile 的 package.jsonpnpm-lock.yaml,变化后防抖 800ms,把 web profile 同步成与 desktop 一致:

  • desktop 有、web 无 → 补装
  • desktop 无、web 有 → 移除(尊重手动卸载)
  • 版本不同 → 对齐 desktop 版本

市场(dshmarket)更新只操作 desktop,web 由本插件自动跟随,无需手动操作。

预加 minimumReleaseAgeExclude 豁免

pnpm 会拦截 24 小时内发布的新包,报 ERR_PNPM_MINIMUM_RELEASE_AGE_VIOLATION。插件在安装前自动把 pkg@version 写入 pnpm-workspace.yamlminimumReleaseAgeExclude,让刚发布的包能直接装上。

安装与启用

包已发布到 npm,两种装法选一种即可。

装到 web profile(市场默认操作目标,装完会自动同步到 desktop):

dsh plugin --profile web add dsh-client-fix

或直接装到 desktop profile(桌面应用实际加载的 profile,装完后 fs.watch 会自动把 web 同步上):

dsh plugin --profile desktop add dsh-client-fix

两种方式等价,区别只在先落哪一个 profile,之后都会被自动同步补齐。注意用 npm 包名安装,不要写路径。

本地开发调试时,可用 link: 指向源码目录:

dsh plugin --profile desktop add link:C:/dshplugins/dsh-client-fix

源码目录建议放在无空格路径下,含空格路径会被 dsh→pnpm 转发截断。

内置接口

插件提供三个接口:

  • /dsh-client-fix/status:查看 desktop/web 插件版本对比与同步状态
  • /dsh-client-fix/sync:手动触发一次同步(向 desktop 对齐)
  • /dsh-client-fix/repair-shims:手动修复 pnpm/node shim 编码

自动机制之外,可以用它们手动触发同步或修 shim。

适用场景与注意

适合这些情况:

  • Windows + DSH Desktop,安装路径含中文,dsh plugin 报「系统找不到指定的路径」
  • 同时使用 web 与 desktop profile,不想每次市场更新后手动同步两边
  • 需要安装刚发布、还没过 pnpm 24 小时时间限制的插件

安装前注意:

  • 插件以当前 dsh 进程权限运行,建议先到 GitHub 检查源码与许可证(MIT)再安装
  • 用 npm 包名安装,不要写路径
  • link: 本地调试时,源码目录不要含空格

小结

dsh-client-fix 把桌面端三件重复性的事——修 shim 编码、同步 web 与 desktop、豁免新包安装——交给了插件自动处理,装完之后基本不用再管。DSH 的理念是「一切皆插件」,客户端侧的这类修复由插件来补齐,正是这个思路的体现。

  • 目录页:https://www.skillhub.cn/plugins/labi43186-spec/dsh-client-fix
  • 源码:https://github.com/labi43186-spec/dsh-client-fix

(目录为社区独立维护的站点,与 DeepSeek / 幻方无官方从属关系。)

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

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

小夜