补充一个排查角度:先确认到底是「模型真的没吐字」还是「中间层提前判定 idle」。你这条日志里 decision=surface_error reason=timeout,是 failover 逻辑主动 surface 出来的,不一定是模型卡死。可以先把 idle timeout 临时调到 300s 看会不会复现,如果调大之后正常出结果,那大概率是大模型首 token 延迟(397B 这种规模冷启动确实慢);如果调大还是超时,再去查网关 keepalive 和 provider 侧限制。另外想问下你是本地起的还是走远程 endpoint?两种情况要查的地方不太一样。