尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

dcode 无头任务以退出码 124 结束怎么排查?

dcode 无头任务以退出码 124 结束怎么排查? dcode 无头任务以退出码 124 结束怎么排查【免费下载链接】deepagentsThe batteries-included agent harness.项目地址: https://gitcode.com/GitHub_Trending/de/deepagents在 CI 或脚本里用deepagents-codedcode以无头模式执行一次性任务时例如dcode -n run the focused tests进程最终以退出码124结束。在 dcode 里124不是通用故障码——通用失败用1124是专门对齐 GNUtimeout约定的专用退出码只有两种触发条件--timeout设定的墙钟时间用尽或--max-turns设定的回合预算耗尽。排查的核心动作只有一步看 stderr 上打印的是哪条错误消息它直接指向被耗尽的那项预算再按文档给出的提示调整对应参数。124 对应哪两种预算耗尽run_non_interactive的返回值约定在源码注释中写得很明确见 non_interactive.py0成功或 hook 主动停止1执行错误124--max-turns预算被耗尽与 GNUtimeout一致130键盘中断。而--timeout的 CLI 帮助文本见 main.py说明它与--max-turns互补--timeout SECONDS Hard wall-clock timeout in seconds. The agent is cancelled and the process exits with code 124 if the timeout is reached. Complements --max-turns (turn count) with a time-based limit; both use exit code 124 on expiry. Requires -n or piped stdin.也就是说--timeout时间上限和--max-turns回合数上限任一项到期进程都退出124。两个参数都要求无头任务存在-n或管道 stdin且无头模式下每次运行都会创建新的 UUID7 线程不能靠--resume回到上次状态继续。先看 stderr 是哪条错误消息两种触发会打印不同的错误文本这是区分路径的依据--timeout墙钟超时时main.py 在捕获TimeoutError后向 stderr 打印并退出Error: agent timed out after 600s. Retry with a larger --timeout, or use --max-turns for a turn-count limit.其中600s是命令实际传入的--timeout值{timeout}按运行时参数填充不是固定数值。--max-turns回合预算耗尽时non_interactive.py 捕获HITLIterationLimitError后打印红色错误并附一条黄色提示然后返回124Hint: The agent may be repeatedly attempting commands that are not in the allow-list. Consider expanding the --shell-allow-list or adjusting the task.所以拿到124后的第一步是翻 stderr看到agent timed out after ...就属于时间超限看到上面这条 allow-list 提示就属于回合预算耗尽。处理--timeout超时文档给出的处置方式就是错误消息本身建议的两条路见 run-dcode-session.md 中给出的无头任务示例形态# 一个有界的一次性任务同时约束回合数与墙钟时间 dcode -n run the focused tests --max-turns 8 --timeout 600若任务本身确实需要更长时间增大--timeout单位秒正整数若想避免任务无限滚动同时或改用--max-turns限制回合数两者可并存各自到期都返回124。处理--max-turns预算耗尽--max-turns的作用是最大 agent 回合数防止 CI 里 agent 跑飞。文档给出的提示指向一个具体原因agent 反复尝试不在 shell 允许列表中的命令每个回合都被拦下最终耗尽回合数。对应的调整手段是--shell-allow-list无头模式下不提供 allow-list 时 shell 访问直接禁用recommended或显式条目只启用允许列表内的命令all允许不受限的 shell 命令会同时自动批准工具调用慎用。因此按文档提示二选一扩展--shell-allow-list放行任务确实需要的命令或者改写任务文本让它不依赖被禁命令。注意all的权限边界只在任务与检出环境都可信时使用。在 GitHub Actions 中排查 124如果124出现在 GitHub Actions 里来源要再多检查一层。根目录的 composite action见 ACTION.md 与 github-action.md通过exit_code输出暴露 agent/包装层的真实退出码run 步骤本身也以该码退出普通非零结果会让 action 失败文档明确exit_code在任务超时时同样是124存在两层超时action 输入timeout单位是分钟默认30作用于包装层task_timeout单位是秒转发给 dcode 的--timeout。两者都接受正整数。包装层超时按约定也返回124。排查时的最小工作流形态摘自仓库文档示例jobs: review: runs-on: ubuntu-latest steps: - uses: actions/checkout9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - uses: langchain-ai/deepagentsmain with: prompt: Review this repository and summarize the highest-risk issues. model: openai:gpt-5.5 openai_api_key: ${{ secrets.OPENAI_API_KEY }} shell_allow_list: recommended,git,gh max_turns: 8 task_timeout: 600 quiet: true判断方式读取该 step 的response输出dcode 的 stdout 与 stderr 合并的原始文本未做脱敏不要直接回显到其他服务确认里面是agent timed out after ...还是 allow-list 提示再对照本次实际生效的task_timeout秒与timeout分钟确认是哪一层先到期。验证与边界调整参数后重跑同一无头任务退出码回到0即说明预算足够再次124且错误文本相同说明该预算仍偏小或任务本身卡在了某类被禁命令上见 allow-list 提示。注意与相邻退出码区分130是键盘中断CI 中通常意味着进程被外部信号终止而非预算耗尽1是普通执行错误78是 managed 配置无法强制时的 fail-closed 启动失败——后两者与124的预算语义无关不应按超时时处理。无头模式下-y/--auto-approve与--yolo只会被警告并忽略不能用来绕过回合预算shell 权限的唯一操作开关就是shell_allow_list。相关背景文档Run a dcode Session、GitHub Action Integration。【免费下载链接】deepagentsThe batteries-included agent harness.项目地址: https://gitcode.com/GitHub_Trending/de/deepagents创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表