dsh 更新了版本没变,先分清三层:磁盘上的包、PATH 命中的命令、正在跑的进程。最常见是服务没重启与多份安装;本文给 which -a、npm root -g、hash -r 与缓存、镜像滞后的逐项排查。
本文转自 DSH Plugin Hub 插件市场
dsh 更新了版本没变,先分清三层:磁盘上装的包、PATH 命中的那条命令、以及正在运行的进程。 DSH插件 与 DeepSeek插件 的版本判断同样依赖 PATH 与缓存机制,插件侧另有入口,见文末。十次里有七八次是「服务进程没重启」,剩下的多在多份安装与 PATH 顺序、nvm 切换过的 Node、命令哈希缓存这几处——这篇按这个顺序逐层排掉。
版本没变先分清三层:DeepSeek Harness 的包、命令与进程
「版本没变」有三种含义完全不同的情况:包没装上、装上了但命令走的不是这一份、命令是新的但跑着的进程还是旧的(来源)。 先按下表对号入座:
| 现象 | 指向哪一层 | 第一件事 |
|---|---|---|
npm ls -g @deepseek-ai/dsh 版本没变 |
包没更新成功 | 查 npm 源与权限,见《DeepSeek Harness 更新失败怎么办?》 |
npm ls -g 是新版,但 dsh --version 是旧版 |
命令命中了另一份安装 | 用 which -a dsh 看 PATH 顺序 |
| 命令版本是新的,浏览器界面/行为没变 | 进程没重启 | 重启 dsh 或托管它的后台服务 |
- 看包装到哪一步 — 执行
npm ls -g @deepseek-ai/dsh。预期:输出 npm 记录的全局版本号。 - 看命令实际是哪份 — 执行
which dsh(Windows:where dsh)。预期:输出命令真正执行的路径,与上一步的全局目录对照。 - 看进程用的哪份 — 重启 dsh 后再执行
dsh --version。预期:重启后仍不一致,才需要往 PATH 与缓存方向继续查。
最常见的原因:DeepSeek Harness 服务进程没重启
更新改的是磁盘上的包文件,已经在跑的 dsh 进程仍持有旧代码,所以必须重启进程版本才会变——这是「更新成功但版本没变」里占比最高的一种(来源)。 三步处理:
- 先停掉当前进程 — 在运行 dsh 的终端按
Ctrl+C;若配了后台服务,用systemctl --user restart dsh(Linux)或launchctl kickstart -k gui/$(id -u)/org.dsh.web(macOS)重启。预期:lsof -i :3080先无监听、重启后再出现监听。 - 确认没有残留进程 — 执行
pgrep -af dsh。预期:只应看到你刚启动的那一个;有多个说明旧进程还占着端口。 - 重新验证版本 — 执行
dsh --version。预期:显示新版本。若仍为旧版,继续往下查 PATH。
一个容易忽略的点:浏览器里打开的页面属于旧进程,重启后要刷新页面(必要时强制刷新),否则看到的行为可能仍是旧的。
DSH plugin 的 PATH 与多份安装:更新落在另一份上
同一个 dsh 在机器上存在多份安装时,npm 更新的与你执行的不是同一份,版本自然「没变」(来源)。 四步排清:
- 列出所有匹配 — 执行
which -a dsh(Windows:where dsh)。预期:输出多行,第一行是命令实际执行的那份;行数大于一则存在多份安装。 - 确认 npm 更新的是哪一个目录 — 执行
npm ls -g @deepseek-ai/dsh与npm root -g。预期:全局目录路径与第 1 步里命中的那份是否一致,一眼可判。 - 确认当前 Node 版本 — 执行
node -v与npm prefix -g。预期:若你用过 nvm,每个 Node 版本有各自的全局目录,在某版本下更新不会影响另一个版本。 - 在正确的那份上重装 — 切到你实际使用的 Node 版本后执行
npm install -g @deepseek-ai/dsh@latest。预期:npm root -g与which dsh指向同一区域,dsh --version同步变化。
处置原则:与其在多份安装间反复更新,不如只保留一份——把多余的全局安装卸掉,或统一用 nvm 管理 Node,避免长期出现「更新了但没变」。
DeepSeek Harness 命令哈希缓存与 npx 缓存
交互式 shell 会缓存命令名到路径的映射,程序被替换或移动后缓存可能仍指向旧路径;如果你用 npx 运行,还可能命中 ~/.npm/_npx 里的旧副本(来源)。 三步清理:
- 清 shell 命令缓存 — 执行
hash -r(bash 与 zsh 都可用),zsh 也可用rehash。预期:再执行which dsh拿到的是当前真实路径。 - 清 npm 与 npx 缓存 — 执行
npm cache clean --force。预期:之后npx @deepseek-ai/dsh@latest会重新下载,而不是复用旧副本。 - 重新验证 — 依次执行
which dsh、dsh --version、npm view @deepseek-ai/dsh version。预期:三者版本口径一致;若最后一个偏低,看下一节。
DeepSeek Harness 镜像源滞后:把「还没同步」误判成「更新没生效」
npm view 与 npm outdated 读的是当前源的缓存数据,源指向镜像站时可能落后于官方发布,于是看起来「没有新版本可更新」(来源)。 三步确认:
- 看当前源 — 执行
npm config get registry。预期:输出当前 registry 地址,判断是否为镜像站。 - 直连官方源复核 — 执行
npm view @deepseek-ai/dsh version --registry https://registry.npmjs.org。预期:与上一步结果对比,若这里更高,说明是镜像滞后而非更新失败。 - 需要时切源或临时指定 — 若长期停留在镜像上,用
--registry临时指定官方源重新安装。预期:版本号更新到官方源上的最新稳定版。
五条通用注意事项:
- 先重启再怀疑更新失败:进程没重启是最常见原因,别一上来就反复重装。
- 别在多份安装之间来回更新:每次都只动一份、验证另一份,永远对不上;先收敛成一份再谈更新。
which dsh之后的路径要记下来:它是判断「命令走哪份」的唯一依据,比看哪个目录都觉得像更可靠。- 清缓存后首次启动会变慢:重新下载属于正常现象,别把它当成新的故障。
- 更新后行为异常但版本已变:那属于兼容性问题,走另一条路,见《DeepSeek Harness 更新后 DSH plugin 不兼容?》。
排完本体版本问题后,插件侧的状态要单独看:DSH Plugin Hub 是 DeepSeek Harness 内置的官方插件市场,已安装列表会显示每个插件的当前版本与可更新徽标。 版本号已核对无误、界面行为却仍不符合预期时,先在这一页确认相关插件是否确实升到了新版,避免把插件没更新误当成本体没生效。

常见问题
dsh 更新命令跑完了、也提示成功,为什么 dsh --version 还是旧版本?
DeepSeek Harness 更新完版本没变,最常见的原因是正在跑的进程还是旧代码。更新改的是磁盘上的包文件,已经启动的服务进程不会自动换成新版本,必须重启 dsh(或重启托管它的后台服务)再执行 dsh --version。
电脑上装了好几份 dsh,怎么确认更新的是哪一份、命令走的又是哪一份?
确认 DeepSeek Harness 更新的是哪一份、命令走的又是哪一份,用 which -a dsh(Windows 用 where dsh)列出 PATH 里所有匹配的 dsh,第一个就是命令实际执行的那份。再执行 npm ls -g @deepseek-ai/dsh 与 npm root -g,确认 npm 更新的是哪个全局目录;两者不一致时,更新就落在了另一份上。
用 nvm 切换过 Node 版本之后 dsh 版本好像变回去了,是什么原因?
用 nvm 切换 Node 后 DeepSeek Harness 版本变回去,是因为 npm 的全局目录随 Node 版本变化:每个 Node 版本有各自的全局 node_modules,在 A 版本下更新的包在 B 版本下看不到。用 node -v 与 npm root -g 确认当前生效的是哪一套,然后在你实际使用的那套下重新更新。
更新后命令哈希缓存会让 dsh 还指向旧路径吗?怎么刷新?
会——更新 DeepSeek Harness 后 bash 与 zsh 可能仍缓存着旧路径,若旧路径已被替换,缓存可能仍指向它。执行 hash -r(bash/zsh 均可)或 zsh 的 rehash 清掉缓存,再执行 which dsh 与 dsh --version 复核。
npm view 看到的版本比官网低,是更新没生效吗?
DeepSeek Harness 更新后 npm view 看到的版本偏低,多数不是更新问题,而是 npm 源指向了镜像站、镜像同步有延迟。执行 npm config get registry 确认源,必要时加 --registry https://registry.npmjs.org 直连官方源再查一次,避免把镜像滞后误判成更新失败。
本文转自 DSH Plugin Hub 插件市场,版权归属 DSH Plugin Hub 插件市场。
分类:更新与升级
原文地址:https://dsh-plugin.org/zh/tutorials/dsh-update-not-working
来源:npm Docs - npm prefix、npm Docs - npm ls、GNU Bash Reference Manual(hash)、deepseek-ai/deepseek-harness GitHub 仓库