前言¶
在 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.json 与 pnpm-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.yaml 的 minimumReleaseAgeExclude,让刚发布的包能直接装上。
安装与启用¶
包已发布到 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 / 幻方无官方从属关系。)