dthcle/dsh-proxy-config ↗★ 0

dsh-proxy-config

One configurable outbound HTTP proxy for DeepSeek Harness, with a live reachability check and an automatic no-proxy fallback while the proxy does not answer. 适合需要为DSH配置网络代理,并要求在代理失效时自动切回直连的用户。

Package
dsh-proxy-config
Compatibility
Unverified
Harness peer range
*
Version
0.1.1
License
MIT
Last updated
Oct 21, 2026

Other repositories with this package name

Install

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:dthcle/dsh-proxy-config

Configuration

Every field has a default, so the bare row already targets http://127.0.0.1:11811.

In the desktop client (recommended)

Settings → “HTTP proxy” — a settings page of its own, listed beside General, Models, and Built-in plugins. The top line shows the live state (using the proxy / fallen back to direct / disabled, whether the endpoint answers, the last error, the managed .env state) with a Check now button, followed by four groups of inputs: the endpoint (scheme, host, port, user name, password), routing (enable, bypass list, ALL_PROXY, fallback), probe and fallback, and the Harness-home .env. Save writes the profile's patch layer and applies it immediately — these fields are volatile, so neither a plugin reload nor a client restart is needed. The password is redacted by the Host, so leaving it empty keeps the stored value.

The same form is on sidebar Plugins → dsh-proxy-config → the row proxy-config → Configure.

In the configuration file

Override what you need in the profile's patch layer, for example ~/.dsh/profiles/desktop/cordis.patch.yml:

- id: proxy-config
  name: dsh-proxy-config
  config:
    enabled: true
    host: 127.0.0.1
    port: 11811
    noProxy: localhost,127.0.0.1,::1
FieldDefaultMeaning
enabledtrueApply the proxy. Off removes the managed .env block and applies nothing.
schemehttpEndpoint scheme; http and https only.
host / port127.0.0.1 / 11811The proxy endpoint.
username / passwordemptyFor a proxy that requires authentication; password carries the secret role.
noProxylocalhost,127.0.0.1,::1Bypass list; the harness always adds its loopback entries.
includeAllProxytrueAlso publish ALL_PROXY/all_proxy, which non-Node tools read.
fallbackToDirecttrueConnect directly while the proxy does not answer.
probeUrlemptyAn http:// URL fetched through the proxy on every check, to verify forwarding; empty means a connect-only probe.
probeTimeoutMs1500Deadline for one probe.
checkIntervalMs30000Re-probe interval; 0 probes only at mount, on a config change, and on demand.
unhealthyAfter / healthyAfter2 / 1Consecutive failures before falling back / successes before returning.
manageEnvFile / envFiletrue / $DSH_HOME/.envWhether and where the managed .env block lives.

All fields are volatile: an edit applies on the next evaluation without reloading the plugin.

In the configuration file

Override what you need in the profile's patch layer, for example ~/.dsh/profiles/desktop/cordis.patch.yml:

- id: proxy-config
  name: dsh-proxy-config
  config:
    enabled: true
    host: 127.0.0.1
    port: 11811
    noProxy: localhost,127.0.0.1,::1
FieldDefaultMeaning
enabledtrueApply the proxy. Off removes the managed .env block and applies nothing.
schemehttpEndpoint scheme; http and https only.
host / port127.0.0.1 / 11811The proxy endpoint.
username / passwordemptyFor a proxy that requires authentication; password carries the secret role.
noProxylocalhost,127.0.0.1,::1Bypass list; the harness always adds its loopback entries.
includeAllProxytrueAlso publish ALL_PROXY/all_proxy, which non-Node tools read.
fallbackToDirecttrueConnect directly while the proxy does not answer.
probeUrlemptyAn http:// URL fetched through the proxy on every check, to verify forwarding; empty means a connect-only probe.
probeTimeoutMs1500Deadline for one probe.
checkIntervalMs30000Re-probe interval; 0 probes only at mount, on a config change, and on demand.
unhealthyAfter / healthyAfter2 / 1Consecutive failures before falling back / successes before returning.
manageEnvFile / envFiletrue / $DSH_HOME/.envWhether and where the managed .env block lives.

All fields are volatile: an edit applies on the next evaluation without reloading the plugin.