dsh-proxy-config:为 DeepSeek Harness 配置可探测的出站 HTTP 代理

前言

在 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)。

核心功能

  1. 可达性探测与滞后切换
    挂载时探测配置的端点(默认 127.0.0.1:11811)。端点应答:进程内 fetch(LLM、搜索、HTTP MCP)经代理,子进程继承代理环境变量,并在 $DSH_HOME/.env 中维护受管块,下次启动仍走代理。端点无应答且 fallbackToDirect 为真:安装直连调度器,从 process.env 清除各代理变量,并移除受管 .env 块。默认每 checkIntervalMs(30000 ms)再探;连续失败 unhealthyAfter(默认 2)次才回退,连续成功 healthyAfter(默认 1)次才恢复,避免单次超时来回抖动。

  2. 桌面端设置页(推荐)
    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 进入。

  3. 受管 .env 块
    Harness 只从 Harness-home 的 .env 读取代理名;项目级 .env 若带这些变量会导致启动器拒绝启动。插件仅在 $DSH_HOME/.env(默认)写入一段带标记的块,不改动文件其余内容,且仅在内容变化时重写。回退或禁用插件时会移除该块,使无代理状态在重启后仍成立。

  4. 状态工具 proxy_status
    报告当前模式(proxy / direct / disabled)、端点是否应答、最近探测与错误、生效的代理变量、受管 .env 状态及下次检查时间。传 recheck: true 会先再探测一次再报告。

  5. 安装即带默认补丁
    包为 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。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye