--- summary: "动态工具超时顺序、转弯执行预算和本地结算" read_when: - "您需要动态工具超时顺序" - "您正在更改回合执行预算" - "你正在调试一个永远不会解决的转弯" title: "Codex 超时和回合结算" sidebarTitle: "超时" --- Codex 回合的超时预算,以及 OpenClaw 如何解决已完成的回合。 [Codex harness参考 ](/plugins/codex-harness-reference) 的一部分; [ 每个部分移动的位置](/plugins/codex-harness-reference#where-each-section-moved) 列出每个部分。 ## 超时 客户端启动和应用程序服务器控制请求预算会测量经过的时间,因此系统时钟调整不会缩短或延长它们。 OpenClaw- 拥有的动态工具调用与 `appServer.requestTimeoutMs` 无关。普通 Codex `item/tool/call` 请求按以下顺序使用第一个可用超时: - 每次调用的 `timeoutMs` 参数(必须为正数)。 - A 正整数每次调用 `timeoutSeconds` 参数,加上用于设置和完成的 30000 毫秒。 - 对于 `image_generate`,使用 `agents.defaults.mediaModels.image.timeoutMs`。 - 对于未配置超时的 `image_generate`,使用 120 秒的图像生成默认值。 - 对于媒体理解 `view_image` 工具,选定的具有图像功能的 `tools.media.models[]` 条目的 `timeoutSeconds` 转换为毫秒,或 60 秒媒体默认值。对于图像理解,这适用于请求本身,并且不会因早期的准备工作而减少。 - 对于 `message` 工具,使用固定的 600 秒外部预算,该预算涵盖网关传递和有界的同键协调。 - 90 秒的动态工具默认值。 该看门狗是外部动态`item/tool/call` 预算。特定于提供者的请求超时在该调用内部运行并保留自己的超时语义。普通动态工具预算上限为 600000 毫秒。 `agents_wait` 添加 30000 毫秒的外部完成宽限。人机交互工具使用经过验证的问题等待加上 30000 毫秒:`ask_user` 和 `secrets` 凭证请求遵守其问题超时,而委托的 `openclaw` 调用使用固定的 930000 毫秒默认值。该预算涵盖十分钟的审批窗口以及准备和申请;模型创作的参数无法覆盖它。应用程序服务器请求看门狗在适用工具预算之外再留出 30000 毫秒,以便结果达到 Codex。 前台 `node_exec` 使用执行工具的解析命令和节点传输预算,而不是普通的 90 秒默认值或 600 秒上限。省略的 `timeoutSeconds` 继承执行工具的运行时、每个代理或全局默认值(未配置时为 1800 秒)。正覆盖控制命令预算。每次调用 `timeoutSeconds: 0` 禁用命令计时器,同时根据 exec 默认值保留节点传输的有界等待。动态工具看门狗增加了 30000 毫秒的设置和完成时间;应用程序服务器看门狗收到相同的已解决预算,并额外增加 30000 毫秒用于响应传递。停止、截止日期、生命周期取消和审批权限过期仍然会结束受影响的工作。 超时时,OpenClaw 会中止受支持的工具信号,并向 Codex 返回失败的动态工具响应,以便转弯可以继续,而不是将会话留在 `processing` 中。在请求运行或工具关闭后,这些等待预算永远不会保留批准权限。 ### Session 目录读取 会话目录读取超时后,当目录源和查询仍然匹配时,稍后的轮询可以在同一打开的连接上共享其挂起的本机请求。较早的呼叫者停留失败;新的调用者保留自己的请求预算和当前的授权检查。当刷新挂起时,缓存的陈旧页面仍然可用。没有当前服务员的回复将被丢弃。 连续两次本地目录源失败后,新页面尝试在重试之前使用有界退避。延迟从五秒开始,加倍至最多六十秒;成功恢复或配置重新加载会将其清除。现有的待处理页面读取保持其结果共享生命周期,并且缓存的过时页面仍然可用。退避不会取消本机工作或更改单个请求预算。 连接关闭使当前等待者失败,稍后的独立轮询可以正常重新连接。本地超时或连接丢失都不能证明本机工作已停止。这些预算适用于个人本地阅读;目录操作可以读取多个页面并执行附加处理。 ### 回合执行及结算 本机 Codex 拥有提供商流活跃性、网络恢复和本机轮次完成。对于普通轮次,OpenClaw 等待具有确切线程和轮次标识的 `turn/completed`,或者权威失败或取消。沉默、完成的工具输出以及看似完成的辅助消息并不能证明回合已经完成。部分输出在失败时仍然可用,但 OpenClaw 不会将超时或丢失的客户端升级为成功。 现有的 `agents.defaults.timeoutSeconds` 设置为每次尝试提供一个已用执行预算,默认为 48 小时。进展不会重置该预算,包括在长期工具执行期间。将其设置为 `0`,或使用每次运行超时 `0`,以实现无限制执行。本机连接恢复可以不断重试,因此提供程序流超时不是整轮截止时间。无限的本机等待仅在本机终端结果、权威失败或显式停止时结束。启动、应用程序服务器控制请求、批准、动态工具和取消保留其独立的截止日期。 `/btw` 附带问题保留其单独的十分钟完成预算。 在收到确切的本地终端事件后,OpenClaw 在异步转录和媒体投影之前启动绝对两分钟的本地结算预算。稍后的通知不会重置它。演示回调按顺序启动并在结算时加入,而不会阻止本机通知处理。如果本机回合成功完成并获得完整的最终答案,则到期会将该答案保留为降级成功。 OpenClaw 淘汰未完成的投影和过时的写入,然后通过现有的记录所有者保留答案,保留写入顺序和挂钩。即使相应的工具投影未解决或消息写入挂钩替换了消息,恢复的回复仍保留本机网络结果来源。 `turn.settlement_warning` 轨迹事件记录待处理的演示回调、transcript/checkpoint 写入或媒体投影阶段,以及已用时间和预算。新保留的恢复回复也带有和解警告。最终持久性保留其尽力而为策略和现有的五秒耗尽宽限;如果写入器仍然不可用,OpenClaw 会记录 `turn.settlement_persistence_unavailable` 并传送完整的文本,而不会留下过时的写入。如果没有本机完整答案,则过期仍然是超时。在单独有界中止清理之后,排队的投影获得五秒的耗尽宽限。这些本地限制也适用于无限制运行。 停止和执行预算到期会中断受影响的本机尝试并在释放其通道之前进行绑定清理。安静的转变或本地结算失败并不能证明共享应用程序服务器客户端已经死亡;健康客户端上不相关的线程租用保持隔离。通用过时运行恢复还尊重确切的活动本机所有者,而不免除过期的 OpenClaw 请求、工具、取消、终端清理或无所有者状态。 重放安全的 stdio 应用程序服务器故障可以在重新尝试时重试一次。助手、工具、活动项目或副作用证据可能会使重放不安全; OpenClaw 然后报告故障而不是自动重新运行工作。在重试不安全的失败转弯之前验证当前状态。 以前的 `appServer.turnCompletionIdleTimeoutMs`、`appServer.turnAssistantCompletionIdleTimeoutMs` 和 `appServer.postToolRawAssistantCompletionIdleTimeoutMs` 设置已停用。运行 `openclaw doctor --fix` 将其删除。 Doctor 保留不相关的设置,并且不会将空闲窗口转换为已用运行预算。