codexpulse.
返回首页

codex exec 卡住:先保存 JSONL,再改配置

两次 Codex CLI 0.157.0 运行记录说明:耗时和 warning event 不能单独定位非交互任务的卡点。

最近更新: 2026-10-02

作者 Stometa · 核验依据与日期见正文中的来源和运行记录。

2026 年 10 月 2 日,Codex CLI 0.157.0 用 22.38 秒完成了一个两行文件计数任务。9 月 30 日的相近任务超过 120 秒,但当时的控制程序丢弃了输出。先保留 JSONL,再决定是否改模型或超时设置。 9 月的记录无法定位卡点;10 月的记录能确认 turn 完成、文件读取成功。一次成功不能解释此前的超时。

代价:本地 trace 可能包含任务文本和工具输出。先私下保存、检查和脱敏。下表是公开的第一方记录摘要;原始 stdout 和 stderr 留在仓库之外。

两次运行各证明了什么?

两次都在临时 Git 仓库里执行,sample.txt 都有两行。留存的 10 月控制程序证明这两行是 alpha 和 beta;9 月摘要没有保留文件的准确内容。命令都是只读、ephemeral 的 codex exec --json。9 月的控制程序没有保留中途输出,也没有记录 stdin 如何处理。10 月控制程序将 stdin 设为 DEVNULL,分别保存 stdout 和 stderr。继承的配置与服务状态没有做严格配对。

运行控制条件与留存观察结果仍未知
9 月 30 日,CLI 0.157.0120 秒上限;中途输出丢失;stdin 未记录控制程序超时最后一个 Codex event、工具是否执行、延迟原因
10 月 2 日,CLI 0.157.0120 秒上限;关闭 stdin;分别保存 JSONL 和 stderr22.38 秒退出,exit 0、turn.completed,文件命令输出 2stdin、provider 时延或其他条件中,哪项造成差异

10 月 trace 先出现 thread.started,随后有两个带配置 warning 的 item.completed,再出现 turn.started、成功读取文件的命令,以及 turn.completed。本次 warning 没有阻止任务完成。如果脚本把每个 item.completed error item 都判为任务失败,就会误判这次运行。应先看 turn 结局和进程退出码,再单独处理 warning。

超时时怎样留下 trace?

OpenAI 官方非交互模式文档在 10 月 2 日核对:--json 把 JSON Lines event 写到 stdout,包含 thread.started、turn.started、turn.completed、turn.failed、item.* 和 error。不用 --json 时,进度写到 stderr,最终消息写到 stdout。文档还说明:命令已有 prompt 参数时,管道输入的 stdin 会被当作附加上下文。stdin 因此必须记录,但这并未证明它是 9 月超时的原因。

在临时仓库里,边运行边把两个输出流写入文件,不要等一次 communicate() 才决定是否保留:

with open('run.jsonl', 'wb') as events, open('run.stderr', 'wb') as diagnostics:
    process = subprocess.Popen(
        ['codex', 'exec', '--ephemeral', '--sandbox', 'read-only',
         '--json', '-C', repo, prompt],
        stdin=subprocess.DEVNULL, stdout=events, stderr=diagnostics,
    )
    try:
        exit_code = process.wait(timeout=120)
    except subprocess.TimeoutExpired:
        process.terminate()
        exit_code = process.wait(timeout=5)

这段摘录假设已经定义 subprocess、repo 和 prompt。实际控制程序还要处理 terminate 无法结束进程的情况;我们 10 月留存的控制程序有 kill 路径。最后一个有效 JSONL event、退出码和 stderr 是三项独立证据。不要把 stderr 当 JSONL 解析,也不要上传未经检查的 trace。

首次运行可读Codex CLI 指南;配置 key 被忽略时可读config.toml 校验;交互任务也变慢时可读质量与延迟检查表。

最后核验:2026 年 10 月 2 日核对官方 event 与 stdin 说明,并完成一次保留 JSONL 的本地受控运行。未关闭的循环: 还需在 stdin、配置、模型和 provider 条件配对后重复任务,才能讨论 9 月超时的归因。