DeepSeek Harness · run failure
dsh run failed: “stream idle timeout” — the response stream stalled
DeepSeek stream idle timeout after 300000ms
The response stream stopped producing data for longer than the configured idle timeout, so the turn was ended. The turn ended with `{"kind":"error","code":"TIMEOUT"}`.
响应流在超过配置的空闲超时后仍未产生数据,因此该 turn 被结束。turn 以 `{"kind":"error","code":"TIMEOUT"}` 结束。
Why it happens根因
Either a transient stall on the provider or network path, or a turn that legitimately needed longer than the idle window — long tool-heavy turns and very large contexts are the usual candidates. The message names the window that elapsed.
要么是 provider 或网络链路的临时停滞,要么是这个 turn 确实需要比空闲窗口更长的时间——工具很多的长 turn 和超大上下文是常见候选。信息里写明了耗尽的窗口长度。
How to fix it怎么修
- Re-run the turn; a transient stall usually does not repeat.
- If the same heavy turn times out again, raise the idle timeout rather than retrying blindly — the work is fine, the window is too short.
- For turns with many tool calls, check `npx dsh-why run` for whether tool calls had already run, so you know what to redo.
npx dsh-why run see every run failure this can name看它能定性的全部运行期失败- 重跑这个 turn;临时停滞通常不会复现。
- 如果同一个重 turn 再次超时,应该调大空闲超时,而不是盲目重试——活儿没问题,是窗口太短。
- 对工具调用很多的 turn,用 `npx dsh-why run` 看是否已有工具执行过,从而知道哪些需要重做。
npx dsh-why run see every run failure this can name看它能定性的全部运行期失败Is this my plugin’s fault?这是我的插件引起的吗?
No. The turn failed between dsh and the provider — before, or instead of, a model reply. Plugins run inside dsh; none of them sits on the path to the API host. A failed plugin shows up as a load error at startup, not as a provider rejection.
不是。这个 turn 是在 dsh 与 provider 之间失败的——发生在模型回复之前,或取代了模型回复。插件跑在 dsh 里面,没有任何一个位于通往 API 主机的链路上。插件坏了会表现为启动时的加载错误,而不是 provider 的拒绝。
Related failures相关失败
DeepSeek API request to https://api.deepseek.com failedthe API call never completed502 status code (no body)a 5xx from the providerclient-modules: require("…") missed the module table— or the other way round: dsh will not start at all
DeepSeek API request to https://api.deepseek.com failedAPI 请求根本没完成502 status code (no body)provider 返回 5xxclient-modules: require("…") missed the module table—— 或者反过来:dsh 根本起不来
FAQ常见问题
Did my run lose work when it timed out?
Whatever tool calls had already completed, completed. `npx dsh-why run` reports how many of the turn’s tool calls ran before it ended, so you know whether anything needs redoing or cleaning up.
Is a stream idle timeout the same as a slow model?
No. It measures silence on the stream, not total duration. A model that streams steadily for ten minutes will not trip it; one that goes quiet for the whole window will.
超时后我的 run 丢东西了吗?
已经完成的工具调用就是完成了。`npx dsh-why run` 会报告这个 turn 结束前执行了多少次工具调用,你就知道是否需要重做或清理。
流空闲超时和模型慢是一回事吗?
不是。它衡量的是流上的静默,而不是总时长。稳定输出十分钟的模型不会触发它;沉默满一个窗口的会。