前言¶
在 DeepSeek Harness(DSH)里做联网(LLM 调用、网页搜索、HTTP MCP 等)时,出站流量往往需要经过本机或内网的 HTTP 代理。常见做法是在 Harness 主目录下的 .env 里手写 HTTP_PROXY、HTTPS_PROXY 等变量;代理进程没起来时,Harness 仍可能按这些变量去连,排查起来也不直观。
下面介绍社区插件 dsh-proxy-config(维护者 dthcle):在桌面端 Settings 或配置补丁里填写代理端点,由插件按可达性自动决定是否走代理,并在代理恢复后切回代理路径。插件归类为「联网工具」,当前在 SkillHub 目录页 与 GitHub 仓库 分发;社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。
这是什么¶
dsh-proxy-config 是 DSH 的一个可配置出站 HTTP 代理插件:在设置里指定代理端点,挂载时探测端点是否应答;应答则通过 Harness 自带的 @deepseek-ai/dsh-http-proxy 安装代理策略,未应答则在开启回退时走直连并清理进程环境中的代理变量。默认每 30 秒重新探测,代理恢复后自动切回。效果上相当于把一组代理相关环境变量写入 ~/.dsh/.env,但数值由插件配置生成,并在每次探测后重新决策。
许可证为 MIT(见仓库 README);npm 包版本在资料中为 0.1.1,要求 DSH ≥ 0.2.1-rc.1(engines.dsh)。
核心功能¶
-
可达性探测与滞后切换
挂载时探测配置的端点(默认127.0.0.1:11811)。端点应答:进程内fetch(LLM、搜索、HTTP MCP)经代理,子进程继承代理环境变量,并在$DSH_HOME/.env中维护受管块,下次启动仍走代理。端点无应答且fallbackToDirect为真:安装直连调度器,从process.env清除各代理变量,并移除受管.env块。默认每checkIntervalMs(30000 ms)再探;连续失败unhealthyAfter(默认 2)次才回退,连续成功healthyAfter(默认 1)次才恢复,避免单次超时来回抖动。 -
桌面端设置页(推荐)
Settings → “HTTP proxy” 为独立页面,与 General、Models、Built-in plugins 并列。首行展示实时状态(走代理 / 已回退直连 / 已禁用、端点是否应答、最近错误、受管.env状态),并提供 Check now。表单分组包括:端点(scheme、host、port、用户名、密码)、路由(启用、bypass、ALL_PROXY、回退)、探测与回退、Harness-home.env。保存即写入 profile 的 patch 层并立即生效,无需重载插件或重启客户端;密码在 Host 侧脱敏,留空表示保留已存值。同一表单也可从 sidebar Plugins → dsh-proxy-config → 行proxy-config→ Configure 进入。 -
受管
.env块
Harness 只从 Harness-home 的.env读取代理名;项目级.env若带这些变量会导致启动器拒绝启动。插件仅在$DSH_HOME/.env(默认)写入一段带标记的块,不改动文件其余内容,且仅在内容变化时重写。回退或禁用插件时会移除该块,使无代理状态在重启后仍成立。 -
状态工具
proxy_status
报告当前模式(proxy/direct/disabled)、端点是否应答、最近探测与错误、生效的代理变量、受管.env状态及下次检查时间。传recheck: true会先再探测一次再报告。 -
安装即带默认补丁
包为 bundle:安装后会加入 patch 行proxy-config及 schema 默认值,profile 重载后即针对http://127.0.0.1:11811生效;在端点应答之前插件报告为direct,不会强行把流量打进未就绪的代理。
安装与启用¶
需要 DSH 0.2.1-rc.1 或更新版本。在桌面客户端插件目录,或命令行执行:
dsh plugin --profile desktop add dsh-proxy-config
从源码(GitHub)安装而非 npm:
dsh plugin --profile desktop add github:dthcle/dsh-proxy-config
安装前请自行查看仓库源码与 MIT 许可证;插件以当前 DSH 进程权限运行。
典型用法¶
桌面端改端点并保存¶
在 Settings → HTTP proxy 填写 scheme、host、port 等,点 Save。配置字段均为 volatile,保存后下一轮评估即应用。
在 profile patch 里覆盖配置¶
例如在 ~/.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
常用字段默认值与含义(摘自 README 配置表):
| 字段 | 默认 | 含义 |
|---|---|---|
enabled |
true |
是否应用代理;关闭则移除受管块且不应用策略 |
scheme |
http |
仅支持 http / https |
host / port |
127.0.0.1 / 11811 |
代理端点 |
username / password |
空 | 需认证的代理 |
noProxy |
localhost,127.0.0.1,::1 |
绕过列表;Harness 会追加本机回环项 |
includeAllProxy |
true |
是否同时设置 ALL_PROXY / all_proxy |
fallbackToDirect |
true |
代理不可达时是否直连 |
probeUrl |
空 | 每次检查经代理请求的 http:// URL;空则仅做连接探测 |
probeTimeoutMs |
1500 |
单次探测超时 |
checkIntervalMs |
30000 |
重探间隔;0 仅在挂载、配置变更与手动检查时探测 |
unhealthyAfter / healthyAfter |
2 / 1 |
回退 / 恢复所需连续失败 / 成功次数 |
manageEnvFile / envFile |
true / $DSH_HOME/.env |
是否及何处写入受管块 |
受管块示例:
# >>> dsh-proxy-config (managed) >>>
HTTP_PROXY=http://127.0.0.1:11811
...
# <<< dsh-proxy-config (managed) <<<
与手写整份 .env 相比,差异在于变量由插件配置生成,并在每次探测后重新决定是否安装代理策略。
适用场景与注意¶
适合谁:本机或内网已有 HTTP/HTTPS 代理(如 127.0.0.1:11811),希望 DSH 出站统一走代理,又希望在代理未启动时自动直连、代理恢复后自动切回,而不必反复手改 .env 的开发者。
限制(README Limits):
- 仅
http://与https://代理;SOCKS 或 PAC 会被 harness 包拒绝,对应 scheme 保持直连。 - Workflow workers 与模型生成的脚本按 Harness 策略不继承代理。
- 遥测(OTLP)设计上保持直连。
- 模式切换只影响新子进程:代理活跃时已开的持久 shell 仍保留旧环境,直到该 shell 重启;Harness 自身与新 spawn 的子进程立即跟随当前模式。
- 桌面客户端浏览器侧改动需重载一次窗口;Host 侧行为变更需在插件管理器中关开 bundle。
结尾¶
dsh-proxy-config 把「写 .env + 猜代理是否活着」收成一套可配置、可探测、可回退的出站代理策略,并和 DSH 自带的 http-proxy 模块及 Harness-home .env 规则对齐。需要安装或查字段时,可看 SkillHub 目录 与 GitHub:dthcle/dsh-proxy-config。