DeepSeek Harness 在企业代理下不可用:Zscaler 回环与 CA 配置判定

故障排查发布于 2026-10-30作者: DeepSeek Plugin 插件市场
DeepSeek HarnessDSHZscaler代理NO_PROXYNODE_EXTRA_CA_CERTS企业网络
装了 Zscaler 的公司电脑上 DeepSeek Harness 起不来,本地回环流量被代理接管。按三条判据确认环境后,让本机通信直连、外网走代理,用 NODE_USE_ENV_PROXY 与 NODE_EXTRA_CA_CERTS 信任企业 CA。

「我的电脑能正常用 cc、codex、copilot CLI,只有 dsh 不行」——这句话本身就是判断线索:不是外网不通,而是本机回环那条路被代理接管了。 Zscaler 会在本地开一个监听端口接管流量,而 DSH 自己也要在本机起一个随机端口做客户端与 Host 的通信(#10439)。先判环境,再分层配置。

DeepSeek Harness 第一步:三条判据确认是企业网络问题

同时满足这三条,基本可以按企业代理处理,不必去查安装或权限。

  1. 机器上装了安全网关客户端(例如 Zscaler),并且它有本地监听端口。
  2. 本机回环通信被它接管:用 curl http://127.0.0.1:<本地端口>/ 观察是否被重定向或拦下。
  3. 现象是「外网部分能用、本地那一条不通」,而不是全部请求超时。

补充两条旁证:同类 CLI 能用但 DSH 不行;关掉代理软件后一切正常。前者说明是路径差异,后者说明是代理介入。

DSH插件 第二步:让本机通信直连

把 localhost、127.0.0.1、::1 从代理里排除出去,这一步优先于任何代理配置。

  1. 系统代理或 PAC 里,把上述三个主机设为直连。
  2. NO_PROXY 里显式写入 localhost,127.0.0.1,::1。
  3. 保留原来的内网条目,用英文逗号拼接。
  4. 不要用分号分隔——分号会让整条豁免失效。
  5. 也不要写 10.*.*.* 这类通配符,它不生效;内网段要写具体主机名或域名。

这一步做完,桌面端至少应该能启动并连上自己的 Host,剩下的才是外网请求问题。

DeepSeek Harness 第三步:让外网请求真的走代理

Node 内置 fetch 默认不读代理变量,必须显式开启,否则你设了 HTTPS_PROXY 也没用。

  1. 确认 Node 版本在 22.21+ 或 24.x,旧版本没有这个开关。
  2. 设置 HTTP_PROXY、HTTPS_PROXY,需要时再加 ALL_PROXY。
  3. 设置 NODE_USE_ENV_PROXY=1。
  4. 用一个外部地址验证:能拿到响应说明代理链路生效。
  5. 再回到 DSH 里发一条消息,确认外网请求正常。

DeepSeek插件 第四步:信任企业 CA

如果报 SELF_SIGNED_CERT_IN_CHAIN,说明公司做了 HTTPS 检查,需要把企业根证书加进信任链。

  1. 向 IT 索取企业根证书的 PEM 文件。
  2. 设置 NODE_EXTRA_CA_CERTS=<证书路径>,路径写绝对路径。
  3. 重启应用后再试。
  4. 不要用 NODE_TLS_REJECT_UNAUTHORIZED=0,那等于关掉全部证书校验。
  5. 如果证书更新导致再次报错,先换新证书,再怀疑其它配置。

DeepSeek Harness 一份可直接用的环境变量清单

社区报告者最终就是用这一组变量解决的;按你的代理地址与证书路径替换即可。

powershell
$proxy = "http://127.0.0.1:9000"
$env:HTTP_PROXY  = $proxy
$env:HTTPS_PROXY = $proxy
$env:ALL_PROXY   = $proxy
$env:NO_PROXY    = "localhost,127.0.0.1,::1"
$env:NODE_USE_ENV_PROXY = "1"
$env:NODE_EXTRA_CA_CERTS = $caBundle

几点提醒:代理地址要换成你机器上真实的监听端口;NO_PROXY 里如果要保留内网主机,直接追加在逗号后面,别用分号;$caBundle 指向 PEM 的绝对路径。

DSH插件 为什么桌面端要写用户级变量

桌面端从图标启动时不继承你终端里临时设置的变量,写在当前会话里等于没写。

  1. 在系统设置里把上述变量写成用户级环境变量。
  2. 完全退出应用,包括托盘图标与任务管理器里的残留进程。
  3. 重新启动,再验证本机与外网两条链路。
  4. 如果仍然失败,从终端启动 app 二进制做对照——能通就说明是环境变量作用域问题。

一套验证顺序:先本机,再外网,最后应用

每次只验证一层,失败就能定位到具体配置项。

  1. 本机:curl http://127.0.0.1:<Host端口>/,应当直连返回而不是被重定向。
  2. 外网:curl https://api.deepseek.com/,应当返回正常响应而不是证书错误。
  3. 应用:启动 DSH 并发一条消息,确认无代理相关报错。
  4. 任一层失败,回到对应步骤单独修,不要同时改多个变量。

注意事项

  1. 不要靠关闭 Zscaler 绕过。这是公司安全策略,绕开既不现实也不合规。
  2. 不要只配外网代理。回环被接管时,外网通了也没用。
  3. 不要用分号分隔 NO_PROXY。一条分号能让整条豁免失效。
  4. 不要用通配符写内网段。写具体域名或主机名。
  5. 不要关闭 TLS 校验。用企业根证书解决问题,而不是把校验关掉。

如果配置完仍然只有 DSH 失败,而同类 CLI 正常,把两者的代理变量与 Node 版本逐项对齐,差异点通常就是原因。相关排查见 DeepSeek Harness 环境变量与凭据排查:git 调用失败、凭据变量名匹配漏掉、子进程不走代理与凭据格式代差。

常见问题

公司电脑装了 Zscaler,DeepSeek Harness 桌面端起不来,是软件不兼容吗?

多数情况不是不兼容,而是回环流量被代理接管,DeepSeek Harness 因此起不来。DSH 会在本地起一个随机端口,客户端与 Host 之间走 127.0.0.1;代理把这些流量也拦下就会失败。把 localhost、127.0.0.1、::1 加进 NO_PROXY 即可,不用关 Zscaler。

为什么 cc、codex、copilot CLI 都能用,只有 DeepSeek Harness 的 DSH 不行?

因为 DeepSeek Harness 和它们的网络路径不同。DSH 除了外网请求,还依赖本机回环通信;回环被代理接管时,外网部分可能正常,本地那一条却断了。

只设置 HTTP_PROXY,就能让 DeepSeek Harness 正常工作吗?

不够,DeepSeek Harness 依赖的 Node 内置 fetch 默认不读代理环境变量,需要 Node 22.21+ 或 24.x 并显式设置 NODE_USE_ENV_PROXY=1,否则代理变量只对部分请求生效。

DeepSeek Harness 报 SELF_SIGNED_CERT_IN_CHAIN 时该怎么办?

这是 DeepSeek Harness 遇到的 HTTPS 检查证书链问题。用 NODE_EXTRA_CA_CERTS 指向 IT 下发的企业根证书 PEM,不要用 NODE_TLS_REJECT_UNAUTHORIZED=0 关闭校验。

环境变量只写在终端里,为什么 DeepSeek Harness 桌面端不生效?

DeepSeek Harness 桌面端不一定继承终端的环境变量。建议写进用户级环境变量,然后完全退出应用(含托盘与后台进程)再启动。

相关术语

Zscaler
Zscaler 是企业常用的安全网关客户端,会在本机开启监听端口并把流量导向它。它可能一并接管回环流量,从而影响依赖 127.0.0.1 通信的应用。— https://github.com/deepseek-ai/deepseek-harness/discussions/10439
NO_PROXY
NO_PROXY 是代理排除列表,命中的主机不走代理。多个条目用英文逗号分隔,本机回环应写 localhost、127.0.0.1、::1。— https://github.com/deepseek-ai/deepseek-harness/discussions/10439
NODE_USE_ENV_PROXY
NODE_USE_ENV_PROXY 是让 Node 的 fetch 使用 HTTP_PROXY/HTTPS_PROXY 等环境变量的开关。缺少它时,Node 内置 fetch 默认不读代理配置。— https://github.com/deepseek-ai/deepseek-harness/discussions/10439
NODE_EXTRA_CA_CERTS
NODE_EXTRA_CA_CERTS 是 Node 的附加根证书路径,用于信任企业 HTTPS 检查用的根证书。它只增加信任,不会关闭证书校验。— https://github.com/deepseek-ai/deepseek-harness/discussions/10439

来源