Replies: 1 comment 1 reply
|
分析到位,我按你引用的三处源码( 补充两点,供你参考: 1. 可以先试试 Node 官方开关,零代码改动。 Node 22.21+ / 24+ 内置了 export HTTP_PROXY=http://代理地址:端口
export HTTPS_PROXY=http://代理地址:端口
export NO_PROXY=127.0.0.1,localhost,::1
export NODE_USE_ENV_PROXY=1
npx @deepseek-ai/dsh web
2. 你的 另外一个小建议:全局 dispatcher 会影响进程内所有 方便的话补充一下环境信息,大家排查起来更快:
|
Uh oh!
There was an error while loading. Please reload this page.
现象(Problem)
在内网环境(访问公网需要通过 HTTP 代理,浏览器走系统代理可以正常上网)的 Windows 主机上运行
dsh web:原因(Root cause)
fetch(undici),且没有配置任何代理/Dispatcher:packages/llm/llm-deepseek/src/adapter.ts:607(chat/completions)packages/llm/llm-deepseek/src/files-api.ts:147(Files API)packages/web/web-search-deepseek/src/provider.ts:222(Anthropic 兼容端点)fetch默认不读取HTTP_PROXY/HTTPS_PROXY环境变量(Node 22 实测)。api.deepseek.com,被内网防火墙拦截(ECONNRESET);而浏览器走系统代理不受影响,于是页面收到TRANSPORT错误。修改说明(Fix)
在启动入口统一安装环境代理,使所有
fetch自动走代理:packages/boot/app-boot/src/proxy.ts:installEnvProxy()— 检测到http_proxy/HTTP_PROXY/https_proxy/HTTPS_PROXY时,安装 undiciEnvHttpProxyAgent作为全局 dispatcher(自动遵守NO_PROXY,本地回环流量仍直连)。packages/boot/app-boot/src/index.ts:在boot()开头调用installEnvProxy()(覆盖所有dsh子命令),并从包导出。packages/boot/app-boot/package.json:新增依赖undici@^7.28.0。packages/boot/app-boot/tests/proxy.spec.ts(4 个用例)。installEnvProxy()为 no-op,直连环境行为保持不变。验证(Verification)
app-boot全部单元测试通过(含新增 4 个)。dsh web后,在网页发送消息,DeepSeek 经代理正常回复,不再报错。All reactions