
【Bug已解决】codex: tool call timeout / Function execution exceeds limit — CodeX CLI 工具调用超时解决方案1. 问题描述CodeX CLI 在调用工具Bash、文件操作、MCP 等时超时# Bash 工具超时 $ codex 运行 npm test Error: Tool call timed out after 60000ms Bash execution exceeded the time limit. # 或文件读取超时 $ codex 分析大型日志文件 Error: Tool call timed out Reading /var/log/app.log (500MB) exceeded time limit. # 或 MCP 工具超时 $ codex 使用 github 工具搜索仓库 Error: MCP tool timeout github server did not respond within 30000ms. # 或命令执行卡住 $ codex 运行 npm install Error: Tool call timed out after 60000ms # npm install 等待用户输入卡住这个问题在以下场景中特别常见命令执行时间过长npm test、npm install文件过大导致读取超时MCP 服务器响应慢命令等待交互输入卡住网络请求慢默认超时太短2. 原因分析核心原理拆解CodeX 调用工具 → 等待工具执行完成 ↓ 命令慢/文件大/MCP 慢/卡住 ↓ 超过超时时间原因分类表原因分类具体表现占比命令慢npm test/install约 35%文件大大日志/数据约 25%MCP 慢服务器响应慢约 20%交互卡住等待输入约 10%网络慢API 请求慢约 5%超时短默认 60s约 5%3. 解决方案方案一增加工具超时最推荐# 步骤 1增加工具超时 export CODEX_TOOL_TIMEOUT180000 # 180 秒3 分钟 # 步骤 2永久设置 echo export CODEX_TOOL_TIMEOUT180000 ~/.zshrc source ~/.zshrc # 步骤 3或在配置文件中 cat ~/.codex/config.json EOF { toolTimeout: 180000, mcpTimeout: 60000 } EOF # 步骤 4验证 codex 运行 npm test方案二拆分长时间命令# 步骤 1拆分 npm test # 错误: codex 运行 npm test全部测试可能几分钟 # 正确: codex 运行 npm test -- --grep auth # 步骤 2分批运行 codex 运行 npm test -- --grep auth codex 运行 npm test -- --grep api # 步骤 3或使用 timeout 命令 codex 运行 timeout 30 npm test # 30 秒后自动终止 # 步骤 4限制输出 codex 运行 npm test 21 | tail -50方案三后台运行# 步骤 1后台运行长命令 codex 在后台运行 npm test结果保存到 /tmp/test.log # 步骤 2等待后查看结果 sleep 30 codex 读取 /tmp/test.log 查看测试结果 # 步骤 3或使用 nohup codex 运行 nohup npm test /tmp/test.log 21 # 步骤 4检查进度 codex 检查 /tmp/test.log 的最后 20 行方案四处理交互卡住# 步骤 1避免交互命令 # 错误: codex 运行 npm install可能等待输入 # 正确: codex 运行 npm install --yes # 步骤 2使用 --yes 或 -y 标志 codex 运行 npm install --yes codex 运行 apt-get install -y curl # 步骤 3或使用 echo 管道 codex 运行 echo y | npm install # 步骤 4或使用 /dev/null codex 运行 npm install /dev/null方案五限制文件大小# 步骤 1不要读取超大文件 # 错误: codex 分析 /var/log/app.log500MB # 正确: codex 运行 tail -n 1000 /var/log/app.log 并分析 # 步骤 2使用 head/tail 限制 codex 运行 head -n 500 /var/log/app.log 并分析错误 codex 运行 tail -n 500 /var/log/app.log 并分析最近的日志 # 步骤 3使用 grep 过滤 codex 运行 grep ERROR /var/log/app.log | tail -50 并分析方案六增加 MCP 超时# 步骤 1增加 MCP 超时 export CODEX_MCP_TIMEOUT60000 # 60 秒 # 步骤 2或在配置中 cat ~/.codex/config.json EOF { mcpTimeout: 60000, toolTimeout: 180000 } EOF # 步骤 3验证 codex 使用 github 工具搜索仓库4. 各方案对比总结方案适用场景推荐指数难度方案一增加超时通用⭐⭐⭐⭐⭐低方案二拆分命令命令慢⭐⭐⭐⭐⭐低方案三后台运行长命令⭐⭐⭐⭐⭐低方案四处理交互卡住⭐⭐⭐⭐⭐低方案五限制大小文件大⭐⭐⭐⭐⭐低方案六MCP 超时MCP 慢⭐⭐⭐⭐低5. 常见问题 FAQ5.1 CodeX 默认工具超时是多少通常 60 秒。通过CODEX_TOOL_TIMEOUT环境变量调整。5.2 如何增加超时export CODEX_TOOL_TIMEOUT180000 # 180 秒 # 或配置: {toolTimeout: 180000}5.3 npm test 超时怎么办拆分测试npm test -- --grep 特定测试或后台运行后查看结果。5.4 命令卡住等待输入使用--yes、-y标志或 /dev/null避免交互输入。5.5 大文件读取超时使用head -n 500或tail -n 500限制读取行数。5.6 MCP 工具超时增加CODEX_MCP_TIMEOUT60000。5.7 timeout 命令是什么Linux/macOS 命令在指定时间后终止进程timeout 30 npm test。5.8 后台运行如何查看结果codex nohup npm test /tmp/test.log 21 sleep 30 codex tail -n 20 /tmp/test.log5.9 CI/CD 中工具超时设置CODEX_TOOL_TIMEOUT180000或使用timeout命令。5.10 排查清单速查表□ 1. CODEX_TOOL_TIMEOUT180000 增加超时 □ 2. CODEX_MCP_TIMEOUT60000 MCP 超时 □ 3. 拆分: npm test -- --grep auth □ 4. 后台: nohup /tmp/log □ 5. --yes/-y 避免交互卡住 □ 6. /dev/null 避免等待输入 □ 7. head -n 500 限制文件读取 □ 8. tail -n 500 只看最近日志 □ 9. grep 过滤后分析 □ 10. timeout 30 限制命令时间6. 总结根本原因工具调用超时最常见原因是命令执行慢35%npm test/install和文件过大25%最佳实践设置CODEX_TOOL_TIMEOUT1800003 分钟对 MCP 设置CODEX_MCP_TIMEOUT60000拆分命令使用npm test -- --grep auth拆分长时间测试或后台运行后查看结果避免交互使用--yes、-y或 /dev/null避免命令等待输入卡住最佳实践建议大文件使用head/tail限制读取长命令后台运行 sleep 读取结果文件故障排查流程图flowchart TD A[工具调用超时] -- B[增加 CODEX_TOOL_TIMEOUT] B -- C[180000ms 3 分钟] C -- D[codex 验证] D -- E{还超时?} E --|否| F[✅ 问题解决] E --|是| G{是命令慢?} G --|是| H[拆分命令] G --|否, 文件大| I[head/tail 限制] G --|否, MCP| j[增加 MCP 超时] G --|否, 卡住| K[避免交互] H -- L[npm test --grep auth] L -- M[或后台运行] M -- N[sleep 30 读取结果] N -- D I -- O[tail -n 500 file] O -- D j -- P[CODEX_MCP_TIMEOUT60000] P -- D K -- Q[--yes 或 /dev/null] Q -- D D -- R{成功?} R --|是| F R --|否| S[timeout 30 限制命令] S -- T[或 --max-turns 限制轮次] T -- F F -- U[CI/CD: CODEX_TOOL_TIMEOUT timeout] U -- V[✅ 长期方案]