LucienLL/dsh-plugin-proxy
dsh-plugin-proxy
Global proxy for DeepSeek Harness: route agent tools, model requests and web fetches through the Windows system proxy or a custom proxy with one persistent toggle and agent-visible status
Install
npx @deepseek-ai/dsh plugin --profile web add dsh-plugin-proxyRestart `dsh web` after install. Bundle APIs can change during the developer preview.
README badge
[](https://dshhub.dev/plugins/dsh-plugin-proxy)Paste this into your README. The star count updates with every catalog sync.
From the README
Excerpt from LucienLL/dsh-plugin-proxy, cleaned of badges and images.
dsh-plugin-proxy
Global proxy for DeepSeek Harness: route agent tools, model requests and web fetches through the Windows system proxy or a custom proxy — with one persistent switch in the main UI, an editable settings card, and agent-visible proxy status so the model always knows whether traffic is proxied.
Why
Without a proxy, outbound network operations fail and the agent burns tokens retrying. With this plugin, the whole runtime goes through the proxy the moment you flip one switch — and because the agent is told the proxy state in its system prompt (and can query/toggle it with tools), it never silently routes an operation that must go direct through the proxy.
What it does
| Concern | Mechanism |
|---|---|
| Model requests (chat completions, SSE streaming, web search/fetch providers) | Swaps the undici global dispatcher to EnvHttpProxyAgent — every in-process fetch() (all LLM adapters use global fetch) is routed through the proxy. |
Agent subprocesses (curl, git, npm, pwsh-spawned tools) | Writes HTTP_PROXY/HTTPS_PROXY/ALL_PROXY/NO_PROXY into process.env, which the harness's child env inherits. |
| Agent awareness | A dynamic system-prompt section (Proxy status: ON/OFF) is re-rendered on every request; plus two model tools — proxy_status (read) and proxy_set (toggle). |
| Persistence | Settings live in the proxy settings namespace (Settings → Plugins → Proxy in the web UI), layered over the composition entry, applied live (applies: live) — no restart to change values. |
UI
- Persistent switch at the sidebar foot (always visible): one click toggles the proxy on/off. Collapsed rail keeps a compact switch.
- Settings card under Settings → Plugins → Proxy:
- 代理地址来源 (address source):
系统代理(Windows Internet Settings) /自定义地址(custom URL) /不使用代理(none). - 自定义代理地址 (custom URL): e.g.
http://127.0.0.1:7890. - 直连名单 (NO_PROXY): comma-separated bypass hosts.
localhost/127.0.0.1/::1are always direct.
- 代理地址来源 (address source):
Agent-facing behavior
The model's system prompt always states the current proxy state, the effective address, and the NO_PROXY bypass list, and instructs the agent to:
- treat every outbound request as proxied unless the host is on the bypass list;
- go direct for localhost / internal targets (bypass list);
- use
proxy_setwithenabled=falsefor operations that must NOT use the proxy, then re-enable afterwards; - check
proxy_statusbefore retrying failed network operations instead of blindly retrying.
proxy_set persists the change — the switch in the UI follows it.
Install
# in the DSH profile directory (or anywhere, then restart DSH)
dsh plugin --profile web add dsh-plugin-proxy
or add the package to your profile package.json dependencies and dsh.profile.bundles, then restart DSH. The first install requires a DSH restart; after that all configuration is live.
Configuration
All fields are editable in the settings UI; the same schema accepts composition defaults:
…

