dsh-system-proxy
DSH host plugin — smart outbound HTTP(S) routing: named proxies (http/https/socks4/4a/5/5h), per-host/provider/plugin rules, direct-first fallback with health memory (global fetch + node http/https).
AI Analysis
核心用途是提供具名代理配置、基于主机/提供商/插件的路由规则,以及健康度记忆的直连回退。适合需要精细控制 DSH 网络出站流量、解决 API 访问网络受限问题的用户。
Install
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:khiqwq/dsh-system-proxyREADME
Read the full README ↗配置
交互式配置
安装到带有 Settings 服务的 DSH profile 后,插件会以 system-proxy 命名空间注册交互式配置。可在 DSH 的 Settings → 插件页面编辑 enabled、代理来源、具名代理、路由规则和默认策略;保存后插件会串行停止旧传输包装并按最新配置热重装,无需手工编辑 patch 或重启主进程。loader entry 中的 config 作为 base 层:没有用户设置时保持原行为,清除用户覆盖后也会回落到该 base。
代理密码必须优先使用 passwordRef:插件配置页中的密码框是只写输入,保存后仅显示“已配置”,不会回填、显示首尾或提供 reveal API;实际值由 ctx.credentials 解析。配套的 dsh-credentials-system 使用 Windows 当前用户绑定的 DPAPI 密文存储,并替换默认的明文 dsh-credentials-local。role("secret") 只负责页面/API 脱敏,本身不等于磁盘加密。
仍可直接使用下面的 cordis.patch.yml 配置;交互式用户层优先于 entry base。
配置位于 profile 的 cordis.patch.yml。以下示例与当前 package schema 一致:proxies 是对象,rules 是数组,默认策略位于 default 对象中。
- id: system-proxy
config:
enabled: true
mode: auto # auto | env | system | manual
url: '' # 旧配置兼容:隐式 default 代理
patchNodeHttp: true
protectPrivate: true # 默认直连私网、链路本地和 metadata
healthMaxEntries: 10000 # 每主机健康表上限(LRU 淘汰)
noProxy:
- localhost
- '127.0.0.1'
- '::1'
- api.deepseek.com
only: [] # 旧配置兼容:非空时只代理这里的主机
proxies:
clash-http: http://127.0.0.1:7890
v2ray-socks: socks5h://127.0.0.1:10808
legacy-socks: socks4a://127.0.0.1:1080
os-proxy: { source: system }
# 推荐用 passwordRef 从 DSH credentials 服务解析密码;不能与 password 同时设置
authenticated: { url: http://proxy.example:8080, username: user, passwordRef: DSH_PROXY_OFFICE_PASSWORD }
rules:
- host: [api.deepseek.com]
action: direct
- host: [api.openai.com]
provider: [openai]
action: proxy
proxy: v2ray-socks
- plugin: [some-unreachable-plugin]
action: fallback
proxy: clash-http
directTimeoutMs: 2000
- host: [api.blocked.example]
action: block
default:
strategy: fallback # direct | proxy | fallback
proxy: clash-http
directTimeoutMs: 3000
latencyThresholdMs: 1500
cooldownMs: 60000
methods: [GET, HEAD, OPTIONS, TRACE]
trustRouteHeaders: false
routeHeaderPrefix: x-dsh-route
Loader 配置是整体替换
Cordis loader 只在 EntryOptions 顶层合并。config 一旦出现在后续 patch 中,就会整体替换原 config;rules 或 proxies 使用数组/对象不会产生跨层深合并。
因此,在 profile patch 中增加一条规则时,必须重述要保留的完整 config,包括全部 proxies、rules、default 和兼容键。只写增量字段会丢失其他配置。
交互式配置
安装到带有 Settings 服务的 DSH profile 后,插件会以 system-proxy 命名空间注册交互式配置。可在 DSH 的 Settings → 插件页面编辑 enabled、代理来源、具名代理、路由规则和默认策略;保存后插件会串行停止旧传输包装并按最新配置热重装,无需手工编辑 patch 或重启主进程。loader entry 中的 config 作为 base 层:没有用户设置时保持原行为,清除用户覆盖后也会回落到该 base。
代理密码必须优先使用 passwordRef:插件配置页中的密码框是只写输入,保存后仅显示“已配置”,不会回填、显示首尾或提供 reveal API;实际值由 ctx.credentials 解析。配套的 dsh-credentials-system 使用 Windows 当前用户绑定的 DPAPI 密文存储,并替换默认的明文 dsh-credentials-local。role("secret") 只负责页面/API 脱敏,本身不等于磁盘加密。
仍可直接使用下面的 cordis.patch.yml 配置;交互式用户层优先于 entry base。
配置位于 profile 的 cordis.patch.yml。以下示例与当前 package schema 一致:proxies 是对象,rules 是数组,默认策略位于 default 对象中。
- id: system-proxy
config:
enabled: true
mode: auto # auto | env | system | manual
url: '' # 旧配置兼容:隐式 default 代理
patchNodeHttp: true
protectPrivate: true # 默认直连私网、链路本地和 metadata
healthMaxEntries: 10000 # 每主机健康表上限(LRU 淘汰)
noProxy:
- localhost
- '127.0.0.1'
- '::1'
- api.deepseek.com
only: [] # 旧配置兼容:非空时只代理这里的主机
proxies:
clash-http: http://127.0.0.1:7890
v2ray-socks: socks5h://127.0.0.1:10808
legacy-socks: socks4a://127.0.0.1:1080
os-proxy: { source: system }
# 推荐用 passwordRef 从 DSH credentials 服务解析密码;不能与 password 同时设置
authenticated: { url: http://proxy.example:8080, username: user, passwordRef: DSH_PROXY_OFFICE_PASSWORD }
rules:
- host: [api.deepseek.com]
action: direct
- host: [api.openai.com]
provider: [openai]
action: proxy
proxy: v2ray-socks
- plugin: [some-unreachable-plugin]
action: fallback
proxy: clash-http
directTimeoutMs: 2000
- host: [api.blocked.example]
action: block
default:
strategy: fallback # direct | proxy | fallback
proxy: clash-http
directTimeoutMs: 3000
latencyThresholdMs: 1500
cooldownMs: 60000
methods: [GET, HEAD, OPTIONS, TRACE]
trustRouteHeaders: false
routeHeaderPrefix: x-dsh-route
Loader 配置是整体替换
Cordis loader 只在 EntryOptions 顶层合并。config 一旦出现在后续 patch 中,就会整体替换原 config;rules 或 proxies 使用数组/对象不会产生跨层深合并。
因此,在 profile patch 中增加一条规则时,必须重述要保留的完整 config,包括全部 proxies、rules、default 和兼容键。只写增量字段会丢失其他配置。