dsh-undici-timeout
在终端中运行以下命令:
dsh plugin install mqnu00/dsh-undici-timeout
将以下提示词粘贴到 DeepSeek Harness 对话框中:
在 DeepSeek Harness 中执行 dsh plugin install mqnu00/dsh-undici-timeout 从 https://github.com/mqnu00/dsh-undici-timeout 安装本插件,装完后重启 DSH 生效。
插件介绍
在 DSH 里,大模型请求往往走 globalThis.fetch,背后其实是 Node 自带的 undici。它的连接阶段(DNS、TCP、TLS)被硬卡在约 10 秒,既不能调环境变量,也不能在调用侧改参数。网络稍慢、双栈探测踩到无出口的 IPv6,或上层每次重试都重新握手时,就容易在边界上被砍掉,表现为 TIMEOUT、TRANSPORT,重试越多越像「永远在连」。
本插件用一份可解析的 undici 自建 Agent,只接管你配置的直连域名(默认含 opencode.ai),把连接、响应头、保活等超时做成可配项,并在空闲连接上复用,减少「每次尝试都是新握手」的开销。检测到 http_proxy 等代理环境变量时会自动让路,与 dsh-net-proxy、dsh-net-autoswitch 等代理链路并存;同时默认关闭 HTTP/2,避免 undici 8 默认开 h2 时,Cloudflare 边缘对 SSE 长流掐断带来的另一类传输错误。
它是有明确边界的补丁:单文件、零依赖、可随时卸载。适合经常在直连 LLM 网关时卡在约 10 秒连接预算、或 WSL/本机 IPv6 无出口导致探测浪费的用户;若 DSH 或上游已支持自定义 dispatcher、连接超时,或 stats 里长期不再出现 TIMEOUT,就可以考虑摘掉。
使用场景
- 直连 LLM 网关时经常在约 10 秒处出现 TIMEOUT 或 TRANSPORT
- 重试频繁但每次仍是新 TCP/TLS 握手,延迟和失败率居高不下
- 本机双栈或 IPv6 无出口导致内置 fetch 连接探测失败,而 curl -4 正常
适合人员
- 在 DSH 中直连 opencode.ai 等白名单域名的日常用户
- WSL 或弱网环境下需要更长连接预算的开发者
- 需要与 net-proxy 共存、并靠状态路由排查联网问题的运维者