代理与镜像下更新 DeepSeek Harness:DSH plugin 的 npm 镜像与内网策略
更新 DeepSeek Harness 失败时,大多数人第一反应是「网络问题」并卡在这一步——但网络问题其实分四层:DNS、代理、源、证书,修法完全不同。 本文按「先分层定位、再选方案(换源 / 走代理 / 内网自建源)、最后处理慢与卡」推进。注意 DSH plugin 走同一套源配置,本体的结论基本可以直接套用。
更新 DeepSeek Harness 卡住时先分清卡在哪一层
一句话结论:用一条手动请求就能把四层分开——拿到响应说明链路通,问题在包与版本;拿不到就逐层往上看。
- DNS 层:解析不了源域名(表现为「找不到主机」)。试
ping或nslookup该域名;失败说明 DNS 被拦或指向错误。 - 代理层:能解析但连不上(表现为超时)。检查代理是否必须、变量是否设对、代理本身是否可达。
- 源层:链路通但包取不到(表现为 404 或「版本不存在」)。换镜像源或查该版本是否已同步。
- 证书层:报 TLS / 证书链错误。企业网关做 TLS 拦截时常见,需要让工具信任企业根证书,而不是关掉校验(后者有安全代价)。
npm config get registry
npm view @deepseek-ai/dsh version # 预期:能返回版本号 → 链路与源都通
# 若这里报错,按报错类型对照上面四层定位
方案 A:换 npm 镜像源更新(最常用)
一句话结论:把 registry 指到可达的镜像源,常规升级立刻能走通;唯一代价是同步延迟,影响「刚发布就升级」这一种需求。
- 写进项目级
.npmrc(避免污染全局):
# .npmrc
registry=https://你的镜像源地址/
- 验证并更新:
npm config get registry
npm i -g @deepseek-ai/dsh@0.2.0-rc.2
dsh --version
- 遇到「版本不存在」时怎么办:先确认镜像上有该版本(
npm view @deepseek-ai/dsh versions);没有就是还没同步,等一会儿或用官方源装这一次。 - 临时切源两条路:命令行参数指定源,或临时设置环境变量——用完记得恢复,别把临时配置留成常态。
方案 B:走代理更新(有外网但必须经代理)
一句话结论:需要代理就把 HTTP/HTTPS 两个变量都填成同一个可用地址;不需要就彻底取消设置——留空是最常见的坑。
- 设对代理:
export HTTPS_PROXY=http://127.0.0.1:7890
export HTTP_PROXY=http://127.0.0.1:7890
env | grep -i proxy # 预期:两个变量都有地址,且没有空值项
- 清掉多余的空值变量:
unset all_proxy ALL_PROXY 2>/dev/null || true
env | grep -iE '(proxy)=' # 逐项确认没有 "xxx=" 这种空值
- 为什么留空会坏:空字符串会被当成有效值传给子进程,并可能触发为特定代理场景保留的清理逻辑,结果是子进程静默直连——宿主侧看不出异常,只有子进程拉不到包。
- 代理与镜像不要同时乱配:同时设代理与私有源时,代理要能到达私有源,否则会出现「本来内网可达却被代理绕出去」的反效果。
方案 C:内网自建源 + 定期同步(企业长期方案)
一句话结论:把「能不能更新」变成「同步任务有没有跑」——用一台出网机器定期把本体与插件清单拉进内网源,内网机器只从那里装。
- 选一台能访问外网的机器做同步机,负责拉取;内网其余机器只读私有源。
- 同步内容分三类:本体包、要用的 DSH plugin 包、以及它们的依赖包。
- 用清单驱动,别临时找包:先在 DSH Plugin Hub 里敲定要用哪些插件,把清单写进同步脚本,一次同步到位。
- 同步完做一次抽样验证:在内网机器上手动装一个插件确认能装上,比看同步日志可靠。
- 镜像与代理一起考虑:同步机自己怎么出网(直连 / 镜像 / 代理)要单独记录,出问题时先查它。
DSH plugin 更新慢或卡住的三种网络层定位手段
一句话结论:这一篇只看网络层——慢看源质量,卡看进程停在哪一步;进程残留、磁盘满、缓存锁这些非网络原因不在本篇展开。
- 看输出的最后一行:停在哪一步(解析版本 / 下载 / 解压)决定是源、代理还是证书的问题。
- 换源对照:同一条命令换一个有响应的源跑一次——明显变快说明原源质量差。
- 限时执行,区分「慢」与「卡」:
timeout 600 npm i -g @deepseek-ai/dsh@0.2.0-rc.2
# 预期:超时以非零码退出,便于判断是「一直慢」还是「彻底卡死」
- 非网络原因统一走另一篇:进程残留、磁盘满、缓存锁、桌面端卡住,见 dsh update 卡死排查。
DSH plugin 排查注意事项
一句话结论:本体能更新、插件不能,九成是「插件包没进你的源」;先补同步,再谈网络。
- 报 404 的包名是哪一层:本体还是插件——决定你去补源还是补同步清单。
- 代理变量先排空值,否则后面所有判断都不准。
- 更新完必须重启服务,
dsh web常驻不会自动换版本。 - 入口要唯一:全局与 npx 并存时会「更新了却没生效」(见 npx 与全局混装的版本漂移)。
- 镜像同步延迟要知情:追最新版就临时切官方源,别怀疑安装坏了。
- 修复状态如实:本文各条基于 npm 官方 registry / .npmrc 机制与官方 CLI 的升级说明;具体源地址、代理地址与你所在网络策略相关,命令参数以
dsh --help为准。
更新前先在 DSH Plugin Hub 里核对一遍要用的插件与版本,能避免「本体升上去了、插件却没同步」这种半成品状态。

如果只是更新卡住或很慢、并不涉及镜像与代理,可直接看dsh update 卡死排查。
来源:apps/cli/README.md、npm Docs · registry、apps/desktop/README.zh.md。
常见问题
在 DeepSeek Harness 里,先分清卡在哪一层:解析不了域名是 DNS 问题、连不上是代理问题、能连但包取不到是源的问题、握手失败是证书问题。最快的判定是先手动请求一次源的元数据地址,能拿到响应说明链路通、问题在包与版本;拿不到就逐层往上看 DNS 与代理。
在 DeepSeek Harness 里,两条纪律:需要代理时把 HTTP_PROXY 与 HTTPS_PROXY 都填成同一个可用地址;不需要代理时把它彻底取消设置而不是留空。留空会被当成有效值传给子进程,并可能触发为特定代理场景保留的清理逻辑,导致静默直连,表现为「配了代理却还是拉不到包」。
在 DeepSeek Harness 里,镜像源是同步的,通常有短暂延迟:刚发布的版本可能还没同步过来。如果你的目标就是「立刻升到刚发布的那一版」,先等同步或临时切回官方源装一次;如果是常规升级,镜像源完全够用。判断方法很简单——在镜像源上查该版本是否存在,不存在就是还没同步。
在 DeepSeek Harness 里,插件与本体走同一套源配置,所以本体能装而插件拉不到,基本都是「这个插件包没同步进镜像/私有源」。内网的解法是把要用的插件清单一次性同步进私有源(清单可先用 DSH Plugin Hub 选定),而不是遇到一个补一个;同时注意插件的原生依赖在离线机器上可能需要预编译产物。
这不是网络问题:DeepSeek Harness 常驻的 dsh web 不会自动加载新版本,需要重启。如果还不对,检查是不是更新到了另一个入口(全局与 npx 两份并存),这与网络无关而与入口有关。
相关术语
- npm 镜像源
- npm 镜像源是对官方源做同步的第三方 registry,用于改善特定区域的下载速度与可达性。它的代价是同步延迟:刚发布的 DeepSeek Harness 版本可能尚未出现在镜像上。— https://docs.npmjs.com/cli/v10/using-npm/registry
- HTTP_PROXY / HTTPS_PROXY
- 这两个环境变量用于让命令行工具经代理访问网络。它们在实现上对「空值」与「未设置」敏感:留空可能被当作有效值传递并导致子进程直连,因此要么填对、要么取消设置。— https://docs.npmjs.com/cli/v10/using-npm/registry
- 同步延迟(sync delay)
- 同步延迟指镜像源与官方源之间的更新时间差,是镜像源的固有限制。它决定了「刚发布就升级」这类需求需要临时改用官方源。— https://docs.npmjs.com/cli/v10/using-npm/registry
- 私有源定期同步(scheduled registry sync)
- 私有源定期同步是企业内网维护可用包的常见策略:由一台能访问外网的机器定期把指定包拉进私有源,内网机器只从私有源安装。它把「偶发网络问题」转化为「可计划的同步任务」。— https://docs.npmjs.com/cli/v10/using-npm/registry
来源
- deepseek-ai/deepseek-harness — apps/cli/README.md(升级命令与插件管理)· deepseek-ai(GitHub)
- npm Docs — registry 与 .npmrc 配置· npm
- deepseek-ai/deepseek-harness — apps/desktop/README.zh.md(桌面端更新路径差别)· deepseek-ai(GitHub)