Repository navigation
Replies: 1 comment
|
核对成立(master c291e79): 1) llm-deepseek 用裸全局 fetch(adapter.ts:651), 传输失败包 LlmError TRANSPORT(:657-664), 消息模板与你的引用逐字一致; 2) 退避参数吻合: llm/src/retry-policy.ts:14-24 maxRetries=5、initial=500ms、max=10000、jitter 0.1、TRANSPORT 在 retryableCodes, 第 5 次 500·2^4=8000ms×(0.9~1.1); 3) 根因结构成立: util/http-proxy/src/install.ts:143-157 每 origin 建 Pool/ProxyAgent(:154/:150), :213 setGlobalDispatcher 进程级长驻(:45-46 注释 long-lived 不关闭), 而传输失败路径全仓无任何回收机制(无 recycleGlobalDispatcher 符号). 两点标注【未核实】: HTTP/2 会话与 CLOSED 套接字细节、同机 curl 可用属你的实测. 可引事实: CONTRIBUTING.md:9 现文拒收外部 PR. 你的 fork 修复(传输失败后回收进程 dispatcher、不传私有 dispatcher 避免绕过代理)与代码结构一致, master 尚无等价修复. |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
现象
dsh-llm-deepseek在进程换网卡 / Wi-Fi 漫游丢掉本机地址后,会出现:DeepSeek API request to https://api.deepseek.com failed(code: TRANSPORT)llm-retry连退 5 次(含约 8s 的第五次延迟)仍然失败fetch/ curl 能打到api.deepseek.com本机证据:长驻
dsh进程里留下192.168.10.25 → DeepSeek 边缘:443 (CLOSED),而本机已经没有这个地址。根因:undici 把 HTTP/2 会话放在进程 dispatcher 的连接池里。地址消失后套接字停在
CLOSED,重试复用同一条死连接。修复(fork 分支)
官方仓目前 Pulls API 404 / 无 CreatePullRequest 权限,且 CONTRIBUTING 写明暂不接收外部 PR。补丁在 fork 上,相对
masterahead 1 / behind 0:fix(llm-deepseek): recycle process fetch dispatcher after TRANSPORT做法:
dsh-http-proxy增加recycleGlobalDispatcher();DeepSeek chat/Filesfetch在非 abort 的传输失败后回收进程 dispatcher,不传入私有dispatcher(避免绕过代理)。验证:
transport.spec.ts3 passed,http-proxy/install.spec.ts28 passed;两处源文件覆盖率 100%。如果官方重新开放 PR,可以用上面的 compare 直接开。
All reactions