Updating DeepSeek Harness via proxy: DSH plugin registry
Most DeepSeek Harness update failures are filed as network problems, but network is four layers — DNS, proxy, registry and TLS — each with a different fix. Work in order: separate the layers, choose a route (mirror, proxy, internal registry), then handle slowness and hangs. DSH plugin packages use the same registry configuration, so the CLI conclusions transfer.
Separating the four layers of a DeepSeek Harness update failure
Bottom line: one manual metadata request separates all four. A response means the path works and the problem is package or version; no response means walk upward.
- DNS: the registry hostname does not resolve ("host not found"). Try ping or nslookup on that host.
- Proxy: resolves but will not connect (timeouts). Confirm a proxy is required, the variables are set, and the proxy itself is reachable.
- Registry: path works but the package is missing (404, "version not found"). Switch mirrors or check whether the version synced.
- TLS: certificate chain errors. Common behind enterprise TLS inspection; trust the enterprise root instead of disabling verification, which has a security cost.
npm config get registry
npm view @deepseek-ai/dsh version # expected: returns a version, meaning path and registry work
# if this errors, classify it against the four layers above
Route A: use an npm mirror to update DeepSeek Harness
Bottom line: point the registry at a reachable mirror and routine upgrades work immediately. The only cost is sync delay, which affects "upgrade the instant it ships."
- Configure at project level to avoid polluting global config:
# .npmrc
registry=https://your-mirror/
- Verify and update:
npm config get registry
npm i -g @deepseek-ai/dsh@0.2.0-rc.2
dsh --version
- When told the version does not exist, check the mirror's version list first. If the version is absent, it has not synced — wait, or use the official registry for that one install.
- Two ways to switch temporarily: a command-line registry flag or a temporary environment variable. Restore afterwards; do not let temporary configuration become permanent.
Route B: update DeepSeek Harness through a proxy
Bottom line: when a proxy is required, set both variables to the same reachable address; when it is not, unset them. Leaving them empty is the most common trap.
- Set the proxy correctly:
export HTTPS_PROXY=http://127.0.0.1:7890
export HTTP_PROXY=http://127.0.0.1:7890
env | grep -i proxy # expected: both variables hold addresses, with no empty entries
- Remove stray empty variables:
unset all_proxy ALL_PROXY 2>/dev/null || true
env | grep -iE '(proxy)=' # confirm no "xxx=" empty values remain
- Why empty breaks: an empty string is treated as a real value and can trigger cleanup logic reserved for proxy scenarios, so children connect directly with no warning — only the child fails to fetch.
- Do not misconfigure proxy and private registry together: when both are in play, the proxy must be able to reach the private registry, or internal traffic is routed outward for no reason.
Route C: internal registry with scheduled sync
Bottom line: turn "can we update" into "did the sync job run." One internet-connected machine pulls the CLI and plugin list; internal machines install only from there.
- Designate one syncing machine with internet access; everyone else reads the private registry.
- Sync three categories: the CLI package, the DSH plugin packages you use, and their dependencies.
- Drive sync from a manifest: decide the plugin set in DSH Plugin Hub, write it into the sync script, and sync in one pass.
- Spot-check after syncing by installing one plugin on an internal machine — more reliable than reading sync logs.
- Document how the syncing machine reaches the internet (direct, mirror, proxy). When updates break, check that first.
Three network-layer checks for slow or stuck DSH plugin updates
Bottom line: this article only covers the network layer — slow means source quality, stuck means which step is waiting. Leftover processes, a full disk and cache locks are out of scope here.
- Read the last output line: resolution, download or extraction tells you whether it is source, proxy or TLS.
- A/B the registry: run the same command against a responsive source. Much faster means the original source is poor.
- Time-box the run to separate slow from stuck:
timeout 600 npm i -g @deepseek-ai/dsh@0.2.0-rc.2
# expected: exits non-zero on timeout, distinguishing "always slow" from "truly stuck"
- Non-network causes go to the other guide: leftover processes, full disks, cache locks and desktop hangs are covered in troubleshooting stuck dsh updates.
DSH plugin troubleshooting behind proxies
Bottom line: when the CLI updates but plugins do not, the plugin packages are almost certainly missing from your source. Sync first, then discuss network.
- Note which layer 404'd: CLI or plugin decides whether you fix the source or the sync manifest.
- Clear empty proxy variables first, or every later conclusion is unreliable.
- Restart the service after updating; a long-running dsh web keeps the old version.
- Keep one entry point: global and npx together produce "updated but not in effect" (see npx versus global version drift).
- Expect mirror sync delay and switch to the official registry when you truly need the newest release.
- Repair status, stated honestly: each item follows npm registry and .npmrc mechanics plus the official CLI upgrade notes. Registry addresses and proxy settings are environment-specific; confirm flag names with dsh --help.
If the update merely stalls or runs slow without mirror or proxy constraints, see troubleshooting stuck dsh updates.
Sources: apps/cli/README.md, npm Docs · registry, apps/desktop/README.zh.md.
FAQ
In DeepSeek Harness, separate the layers: a failed name lookup is DNS, an inability to connect is proxy, a connection that succeeds but returns no package is the registry, and a handshake failure is TLS. The fastest discriminator is to request registry metadata manually: if it responds, the path works and the issue is package or version; if not, walk the layers upward.
In DeepSeek Harness, two rules: when a proxy is needed, set both HTTP_PROXY and HTTPS_PROXY to the same reachable address; when it is not, unset them rather than leaving them empty. An empty value is treated as a real value and can trigger cleanup logic reserved for proxy scenarios, producing silent direct connections and the illusion that a configured proxy does nothing.
In DeepSeek Harness, mirrors sync with a delay, so a release published minutes ago may not be there yet. If your goal is precisely that newest version, wait for sync or temporarily use the official registry for that install; for routine upgrades a mirror is entirely sufficient. Confirm by querying whether the version exists on the mirror.
In DeepSeek Harness, plugins share the same registry configuration as the CLI, so a CLI that installs while plugins 404 almost always means those plugin packages were never synced. In intranet setups, sync the whole plugin list at once — chosen via DSH Plugin Hub — rather than adding one package each time a request comes in. Native dependencies may also need artifacts built for the offline architecture.
In DeepSeek Harness, no, it is an activation problem: a running dsh web does not reload the new version, so restart it. If it is still wrong, check whether you updated a different entry point, such as a global versus an npx copy. That is an entry-point issue, not a network one.
Related Terms
- npm mirror
- An npm mirror is a third-party registry that syncs the official source to improve speed and reachability in a region. Its cost is sync delay: a newly published DeepSeek Harness version may not appear immediately.— https://docs.npmjs.com/cli/v10/using-npm/registry
- HTTP_PROXY / HTTPS_PROXY
- These environment variables route command-line traffic through a proxy. Implementations treat empty and unset values differently: an empty string may be passed on as a real value and cause child processes to connect directly, so either set them properly or unset them.— https://docs.npmjs.com/cli/v10/using-npm/registry
- sync delay
- Sync delay is the lag between the official registry and a mirror, an inherent mirror limitation. It explains why installing the moment a release ships sometimes requires the official registry.— https://docs.npmjs.com/cli/v10/using-npm/registry
- scheduled registry sync
- Scheduled registry sync is an intranet practice where one internet-connected machine periodically pulls approved packages into a private registry, and internal machines install only from there. It converts sporadic network failures into a scheduled task.— https://docs.npmjs.com/cli/v10/using-npm/registry