npx 装的 DeepSeek Harness 怎么更新到最新版?DSH plugin 的 @latest 与两层缓存
npx 装的 DeepSeek Harness 要拿到最新版,关键在「显式带 @latest + 按需清两层缓存」:npx 没有常驻安装实体,每次运行按标签现解析,但可能命中 ~/.npm/_npx 与 ~/.npm/_cacache 里的旧副本,所以直接重跑未必等于升级(来源)。 这篇从「为什么老是旧版」「怎么确保每次拿到最新版」两个方向讲清,npx 与全局安装的关系只作一句带过。
DSH plugin 概览:先把 npx 与全局安装分清
动手前先确认自己属于哪一类:全局安装有可 update 的实体,npx 没有。 一条命令分清楚:
npm ls -g @deepseek-ai/dsh
预期:有输出说明是全局安装;输出 (empty) 而你平时用 npx @deepseek-ai/dsh 启动,就属于 npx 场景。本文只讲 npx 场景「怎么每次拿到最新版」,全局 npm 更新与两者的差异在文末一句带过,完整升级路径见《DeepSeek Harness 怎么升级到最新版?》。
DSH plugin 视角:npx 模式为什么「装完就不更新」
npx 模式没有「已安装版本」这回事,但又不总是拉最新,症结就在解析与缓存。 拆开看三层:
- 没有常驻安装 — npx 是临时执行器,包被下载到临时目录后运行,不像全局安装那样留在 node 全局目录里,所以没有 npm update -g 可作用的对象。预期:明白「update」这条路对 npx 不走。
- 按标签现解析 — 每次运行都会重新解析包,默认按 latest 标签;这本来意味着「每次都最新」,但下一层会打折扣。预期:知道理论上是「跑一次解析一次」。
- 可能命中缓存,而且是两层 — npx 把下载过的包放进
~/.npm/_npx(npx 临时运行环境),npm 自身的下载缓存则在~/.npm/_cacache,两处都可能让你复用旧副本(来源)。预期:理解「感觉一直是旧版」的真正来源是缓存,而非命令写错。
一句话总结:npx 不是「不更新」,而是「更新与否取决于这一次解析有没有落到最新」。 想稳定拿到最新,就要把「显式带标签」和「必要时清两层缓存」两手都用上;这两层各存什么、怎么区分,拆解见《npx 版本缓存机制》。
DSH plugin 最新版怎么拿:@latest 与 dist-tag
拿最新版的标准动作是显式带 @latest,dist-tag 决定它解析到哪个版本。 按四步走:
- 看 registry 上的最新版 — 执行
npm view @deepseek-ai/dsh version。预期:输出 npm 上的最新稳定版号,记下来待会用。 - 显式带最新标签启动 — 执行
npx -y @deepseek-ai/dsh@latest web。预期:npx 按 latest 标签解析并运行;-y跳过安装确认提示。 - 怀疑命中旧版时清两层缓存 — 先执行
npm cache clean --force清 npm 下载缓存~/.npm/_cacache,再执行rm -rf ~/.npm/_npx清 npx 临时运行环境,然后重跑上一步。预期:npx 重新解析并重新下载,按最新版运行;两处目录彼此独立,只清一处常常看不到变化。 - 确认实际版本 — 执行
npx @deepseek-ai/dsh@latest --version,或看启动日志里的版本行。预期:输出与第 1 步记下的号一致,说明这次确实是最新版。
一个容易踩的点:把浏览器旧标签页当成「没更新」——Web 界面本身有缓存,命令行已是最新时,界面仍可能显示旧内容,硬刷新页面再判断。
换镜像源后怎么核对版本
镜像源有同步延迟,npm view 读到的版本偏低时,先换官方源复核再下结论。 三步核对:
- 看源指向哪 — 执行
npm config get registry。预期:输出当前 registry 地址;若指向国内镜像源(如 npmmirror),它同步官方源通常有几分钟到几小时延迟。 - 直连官方源复核 — 执行
npm view @deepseek-ai/dsh version --registry https://registry.npmjs.org。预期:输出官方源上的最新稳定版;与镜像源结果不一致时,以官方源为准。 - 区分 latest 与预发布标签 — 执行
npm view @deepseek-ai/dsh dist-tags。预期:latest指向最新稳定版,rc等预发布标签(若维护者发布过)指向候选版;@latest只解析到latest,不会把候选版带给你,想试候选版必须显式写对应标签。
三种写法:追最新、锁版本、试预发布
同一个 npx 命令,只改包名后缀就能切换「追最新、锁版本、试预发布」三种行为。 对照选:
| 写法 | 命令 | 解析到 | 适用 |
|---|---|---|---|
| 追最新 | npx -y @deepseek-ai/dsh@latest web | latest 标签指向的稳定版 | 日常想每次拿到最新 |
| 锁版本 | npx @deepseek-ai/dsh@<版本号> web | 你写死的那一版 | 复现问题、团队统一环境 |
| 试预发布 | npx @deepseek-ai/dsh@rc web | rc 标签指向的候选版(若存在) | 想提前尝新、能接受不稳定 |
锁版本前先到官方 Releases 页或 npm 包页确认那个版本号真实存在,别凭记忆写;试预发布同理,先确认维护者确实发布过该标签。三种写法都不会动你本机已装的全局版本,切换只影响这一次运行(来源)。日常只要最新就用 @latest,需要固定环境时优先锁版本,两者随时可以互相切换。
DSH plugin 与全局安装的关系(一句带过)
npx 与全局安装是两条互不影响的线:前者每次按标签现解析、没有可 update 的实体,后者走 npm update -g 或 npm install -g @deepseek-ai/dsh@latest。 这层差异已有专文详述,本文不展开,见《npm 怎么更新 dsh?》;如果你两条都在用,两边会各跑各的版本,排查「怎么还是旧版」时先确认敲的命令到底走了哪一条。
还有一条常被混淆:更新 DeepSeek Harness 本体不等于更新 DSH plugin,插件由 dsh plugin 通道管理,用 dsh plugin --profile web update 升级,走的是另一条维护路径(来源)。
使用 DSH plugin 的注意事项与局限
这类 DSH插件(DeepSeek插件)与本体更新要分清,下面几点建议照做。 逐条如下:
- @latest 别省:npx 场景下不带 @latest 就可能命中缓存旧版,写全更稳。
- 两条线分开想:npx 与全局安装独立更新,别以为更新了一条另一条也变了。
- 本体与插件分开更:本体走 npx / npm,插件走
dsh plugin update,别混成一个问题。 - 清缓存分两层:
npm cache clean --force只清~/.npm/_cacache,npx 旧副本在~/.npm/_npx,要用rm -rf ~/.npm/_npx另删;两步都做才彻底。 - 注意镜像滞后:
npm view版本偏低时查npm config get registry,必要时用--registry https://registry.npmjs.org直连官方源复核。
本体更新完,别忘了插件侧也同步——与其每次手动敲 npx 命令、还要记标签和清缓存,不如让 DeepSeek Harness 的 DSH Plugin Hub 在重启后把插件更新也一并管起来:已安装列表里带「可更新」徽标的逐个点更新,确认弹窗展示新版本信息后原位覆盖安装,避免把「本体没更新」和「插件没更新」混成一个问题。

来源:npm Docs - npx、dsh CLI README、deepseek-ai/deepseek-harness GitHub 仓库。
常见问题
npx 运行的 DeepSeek Harness 没有常驻的安装实体,但可能命中本地缓存 ~/.npm/_npx 里的旧副本,所以「感觉一直是旧版」。 每次运行都会解析包,只有显式写 @latest 才强制按最新标签解析,否则可能复用缓存中已下载的版本。
npx 场景更新 DeepSeek Harness 最直接的办法是显式带 @latest 重跑:npx -y @deepseek-ai/dsh@latest web。 加的 -y 用于跳过安装确认提示;若仍像旧版,先 npm cache clean --force 清 ~/.npm/_cacache,再 rm -rf ~/.npm/_npx 清 npx 临时目录,然后重跑。
npx 场景没有常驻安装实体,npm update -g 找不到可更新的对象,所以只能靠按标签重新解析。 npx 每次运行现下载现执行,要拿最新版就显式带 @latest 重跑;只有全局安装才有 npm update -g 或 npm install -g @deepseek-ai/dsh@latest 这条路。
三步核对即可:先执行 npm view @deepseek-ai/dsh version 看 registry 上的最新稳定版,再用 npx @deepseek-ai/dsh@latest --version 看实际拉到的版本,两者应一致。 若不一致且要确认是否为最新,优先显式带 @latest 并检查 npm 源是否指向了同步滞后的镜像。
不能——npm cache clean --force 只清 npm 的下载缓存 ~/.npm/_cacache,npx 的旧副本在另一个目录 ~/.npm/_npx,要用 rm -rf ~/.npm/_npx 单独删。 先执行 npm cache clean --force,再删 ~/.npm/_npx,然后用 npx -y @deepseek-ai/dsh@latest web 重跑,才是彻底断旧副本的完整做法。
相关术语
- npx
- npx 是 npm 附带的包执行器,可以不预先全局安装就下载并运行一个 npm 包。用 npx 跑 DeepSeek Harness 时没有常驻安装实体,每次运行按标签解析包,可能命中缓存。— npm Docs
- @latest
- @latest 是 npm 的默认发布标签,npx @deepseek-ai/dsh@latest 表示按 latest 标签解析到最新稳定版。显式带 @latest 是让 npx 不命中旧缓存的直接办法。— npm Docs
- npx 缓存
- npx 相关的缓存分两处:npx 临时运行环境在 ~/.npm/_npx,npm 下载缓存在 ~/.npm/_cacache,两者独立。npm cache clean --force 只清 ~/.npm/_cacache,npx 旧副本要用 rm -rf ~/.npm/_npx 清,或直接显式带 @latest 重跑绕过。— npm Docs
- profile
- profile 是 DeepSeek Harness 区分运行环境的配置单元,插件装进哪个 profile 就只影响那个环境。更新本体后用 dsh plugin --profile web update 更新当前 profile 下的 DSH plugin。— dsh CLI README
来源
- npm Docs - npx· npm
- dsh CLI README(plugin add 与 profile 语义)· deepseek-ai
- deepseek-ai/deepseek-harness GitHub 仓库· GitHub