dsh-undici-timeout-fix
在终端中运行以下命令:
dsh plugin install lilinhua0413/dsh-undici-timeout-fix
将以下提示词粘贴到 DeepSeek Harness 对话框中:
在 DeepSeek Harness 中执行 dsh plugin install lilinhua0413/dsh-undici-timeout-fix,或在插件管理里从 https://github.com/lilinhua0413/dsh-undici-timeout-fix 安装后完全退出并重启 DSH。
插件介绍
如果你把 DSH 接到本机或内网的大模型上,很可能遇到过这样一种挫败:模型还在认真做 prompt 预处理(prefill),客户端却已经报 terminated,服务端日志里只剩一句 Client disconnected。问题往往出在 Node 内置 fetch 背后的 undici:连接级的 bodyTimeout 默认五分钟,而且是按「空闲」计时的——prefill 阶段一个字节都不发,计时器就不会被重置,时间一到 socket 就被拆掉。这和你在 DSH 里调 streamIdleTimeoutMs 不是同一条链路;只把看门狗拉长,常常只是让 undici 先赢,报错从 stream idle timeout 变成光秃秃的 terminated。
dsh-undici-timeout-fix 在插件加载时替换 undici 的全局 dispatcher,把传输层的 body 超时关掉(用 0 表示禁用,而不是换一个更长的数字)。DSH 经 pi-ai 走 openai SDK 时用的是全局 fetch,因此无需改 DSH 本体,模型相关请求就能绕过这道五分钟天花板。装好后仍需为每个指向本地模型的 provider 配置足够大但有限的 streamIdleTimeoutMs:插件拿掉了传输上限,也拿掉了 DSH 侧的同档位兜底,否则真卡死的连接可能一直挂着。
适合在本机跑 Ollama、vLLM、LM Studio 等推理服务、且单次 prefill 经常超过五分钟的开发者与重度用户。若设置了 HTTP_PROXY、HTTPS_PROXY 或 ALL_PROXY,dsh-http-proxy 会在启动时装上带同样限制的 Agent 并覆盖本插件效果,需在不走这类代理的环境下使用。修改后请完全退出并重启 DSH,否则已运行进程不会重新安装 dispatcher。
使用场景
- 本地大模型 prefill 超过五分钟时请求被 terminated 切断
- DSH 连接 Ollama、vLLM 等本机推理服务做长上下文预处理
- 只调大 streamIdleTimeoutMs 仍出现 Client disconnected 或裸 terminated
适合人员
- 在本机或内网部署大模型并接入 DSH 的开发者
- 单次推理静默时间经常超过五分钟的本地模型用户
- 需要区分 undici 与 DSH 看门狗超时来源的排障者