Appearance
subagents.runTimeoutSeconds 配置被 LLM 忽略导致子代理超时过短
问题
agents.defaults.subagents.runTimeoutSeconds 配置项(在 2026.2.23 版本加入)本意是设置子代理的默认超时时间。但当 LLM 在 sessions_spawn 调用中显式传入一个更低的超时值(比如 60 秒)时,配置文件中的值会被直接覆盖,完全失效。
比如你在配置里设了 runTimeoutSeconds: 300,但 LLM 偏偏在工具调用里写 runTimeoutSeconds: 60,你的龙虾就只给子任务 60 秒——配置形同虚设。
解决方案
在 src/agents/subagent-spawn.ts 中,将原来的直接赋值改为取两者的较大值:
ts
// 修改前(配置被 LLM 覆盖)
const timeout = paramTimeout ?? cfgSubagentTimeout;
// 修改后(配置作为最低保障)
const timeout = Math.max(paramTimeout ?? 0, cfgSubagentTimeout ?? 0);这样配置值就变成了真正的"最低保障",LLM 传再小的值也不会低于你设定的下限。
该补丁已由社区用户 Starefossen 在 v2026.3.1 生产环境验证,超过 200+ 次子代理启动均稳定运行。
注意:对应测试用例(explicit runTimeoutSeconds 测试)需要同步更新,将断言从"显式值覆盖配置"改为"取两者的最大值"。
相关 Issue:#25810