故障处理
Codex 定时任务到点没运行?从计划、运行记录到结果位置排查
Codex 自动化到点没执行、漏跑或没有通知?先区分客户端与任务类型,再核对计划时间、运行条件、执行记录和结果位置,用最小只读任务验证,而不是盲目重复运行。
设好了 Codex 定时任务,到了约定时间却没有看到结果。先确认是否存在这一次的执行记录,以及结果应该出现在什么位置。没弹通知、没有可报告的新发现、执行失败和根本没触发,是四种不同情况。
本文解决 codex automation not running、automation missed run 和定时任务到点没运行的问题。先定位任务与运行阶段,再验证同一条件下的结果,不把反复点击运行或重建计划作为第一步。
先从现象分流
| 现象 | 检查起点 | 应得到的证据 |
|---|---|---|
| 找不到原来建的任务 | 账号、工作区、客户端与任务入口 | 找到对应计划,而不只是创建时的聊天文字 |
| 到点却看不到执行记录 | 启用状态、时间、任务类型与运行条件 | 确认这次是否应该触发 |
| 有运行记录,但报错或没完成 | 该次运行的第一条实际错误 | 明确认证、工具、文件或权限等失败阶段 |
| 运行完成,仍找不到结果 | 新运行还是原聊天、结果目录与提示词 | 找到结果,或确认本次没有可报告内容 |
| 能看到结果,只是没通知 | 通知设置与任务的报告条件 | 把通知问题与执行问题分开 |
现有 Codex 自动化工作流介绍哪些任务适合计划运行;这里处理已经配置了计划,却没有得到预期执行结果的情况。
1. 先确认是哪种任务、在哪个客户端管理
适用情况: 入口、结果位置或运行前提不明确。
核验日的官方文档使用 Scheduled tasks(计划任务) 名称,并分别说明桌面应用、网页、CLI 和 IDE 扩展的行为。旧文章或部分版本可能仍使用 Automations 等名称;按当前客户端实际可见的入口核对。
先记录以下信息:你在哪个账号与工作区创建、从哪个客户端管理、计划是否依附现有聊天、是否涉及本地项目、实际在哪台电脑或执行环境运行。随后打开对应客户端的 Scheduled 或本版本的计划任务入口,找到这项任务和它的近期运行。
| 任务位置或类型 | 核对什么 | 结果查找方向 |
|---|---|---|
| 桌面应用中的独立计划任务 | 项目、本地目录或 worktree、每次运行范围 | Scheduled 中的独立运行与对应聊天 |
| 现有聊天内的计划任务 | 绑定的是哪段聊天,提示词如何使用已有上下文 | 原聊天中的后续执行与结果 |
| 网页计划任务 | 工作区是否支持、可用上传内容与连接工具 | 网页 Scheduled 的状态和近期运行 |
外部脚本调用 codex exec |
是哪个外部调度器启动脚本 | 外部调度日志与脚本退出状态 |
官方目前说明 CLI 和 IDE 扩展不提供 Scheduled 管理界面;它们可以帮助准备或测试提示词、脚本和项目内容。外部 cron 或 CI 没启动脚本时,需要先排查外部调度器,不能只在 Codex 会话里找原因。
预期结果: 找到实际计划、任务类型和预期结果位置。若只有“以后帮我检查”的聊天文字,却找不到任务记录,先确认计划是否真的创建成功,不先猜网络或权限问题。
2. 用完整时间核对计划,不只看“每天九点”
适用情况: 已找到任务,但不确定是不是到点没触发。
打开任务详情,查看本版本显示的启用或暂停状态、计划内容、下一次执行时间及近期运行;将它们与完整日期、时刻和时区对照。若界面没有显示某个字段,记为尚未确认,不从“几分钟后”推断真实计划。
可在支持管理该任务的聊天中要求只读核对:
请检查这项既有计划任务,先不要修改或运行。说明当前可见的任务状态、计划时间、下一次执行时间和绑定的项目或聊天。请按 Asia/Shanghai 显示时间;不能读取的字段请明确说明,不要猜测时区。
把时区换为你的实际目标时区。若计划不符,先记录原设置,只纠正这一项,再核对保存后的下一次时间;不要同时更改提示词、执行目录和频率。
还要确认它到底按时间运行,还是等待应用事件。官方将事件触发任务单独说明;等待某个事件的任务,不能只按钟表时间判断漏跑。
预期结果: 可以明确说出下一次应何时触发,且任务状态允许运行。若详情与预期不一致,先处理计划本身;若计划正确但没有对应记录,再进入第 3 步。
3. 按执行位置核对运行前提
适用情况: 时间与状态正确,仍无对应运行,或启动后读不到项目。
需要本地文件的桌面任务: 官方要求电脑开着、应用运行。核对预定时刻该执行主机是否关机、休眠或应用已退出,同时确认项目路径仍存在、所需磁盘可用。另一台电脑上打开了聊天,不等于原来的本地目录也可用。
网页任务: 官方说明它不能直接工作在你电脑的本地目录中,也不会在运行间保留本地 worktree。核对任务依赖的文件是否通过该网页任务支持的上传、项目或连接服务提供;不能用“我本机有这个文件”证明它可读。
本地项目与 worktree: 若运行实际在独立 worktree 内,依赖、目录和输出也要在该位置检查。找不到改动或结果时,继续看 worktree 改动定位。不要直接把真实项目配置和凭据复制到陌生运行目录来试错。
预期结果: 运行位置与所需资源匹配。若怀疑曾因电脑离线而漏跑,恢复条件后先检查有没有已经执行或补出的记录;官方文档不能据此保证所有历史漏跑都会自动补齐。涉及外部写入的任务,确认未执行后再决定是否手动运行,避免重复操作。
4. 有运行记录:从第一条实际错误继续查
适用情况: 任务确实启动,但没有完成预期工作。
打开这一次的运行详情,记录时间、执行位置及第一条相关错误。不要拿上周另一次运行的错误解释本次故障。
| 本次运行的证据 | 下一步 | 修复后验证 |
|---|---|---|
| 登录失效、401 等认证错误 | 核对实际执行环境的认证,参考 登录排障 | 同一环境完成必要的只读访问 |
| 路径、文件或依赖不可用 | 核对该次项目、worktree 与运行主机 | 能读取目标输入或执行项目所需检查 |
| MCP 初始化或调用失败 | 按具体服务器和阶段查 MCP 排障 | 相关连接或只读调用通过 |
| 明确的权限或策略拒绝 | 确认目标操作是否在已授权范围与生效策略内 | 必要操作获准,错误消失 |
| 已启动脚本,但输出和状态不明确 | 查看 exec 输出与退出排查 | 退出状态、完成事件与实际产物对应 |
| 修改文件时补丁失败 | 查看 apply_patch 排障 | 目标修改实际落盘且 diff 正确 |
官方说明计划任务会在无人值守条件下按其适用的默认权限执行,管理策略还可能限制操作。因此,手动聊天成功不自动证明后台运行拥有相同的工具和权限。以该次运行的错误和有效策略为准,不把全访问模式、关闭安全校验或重新登录当通用修复。
如果提示词只写“检查这个”“照上面继续”,还要确认它能否取得所需上下文。独立计划每次从保存的提示词开始;同一聊天内的计划可使用该聊天上下文。把持久目标、输入来源、完成条件和报告条件写清楚,参见官方聊天内计划任务说明。
5. 已执行但没看到结果:查位置和报告条件
适用情况: 运行记录显示完成,却没有期待的消息或文件。
先确认你期待的产物是什么。独立计划的结果可能在 Scheduled 的独立运行中,同一聊天内的计划则要回原聊天查看;文件型任务还需检查实际执行目录。用明确的文件名、时间或内容标记核对,不只找聊天列表里的新标题。
再看任务是否要求“只有发现变化才报告”“无异常保持安静”。这种任务可能正常执行,但没有可报告结果。阅读执行摘要、工具结果和目标状态,才能判断它是否完成检查;不能从没有新通知反推没有运行。
若结果已经存在而通知缺失,再检查当前客户端和操作系统的通知允许状态、免打扰及任务报告条件。通知成功与执行成功分别验收,不要为了弹出通知而修改原业务逻辑。
预期结果: 能定位产物,或说明本次为什么按提示词保持安静。如果只有完成标记却没有足够执行证据,保留该次记录,进入第 6 步验证,而不是直接宣布正常。
6. 用最小只读任务,分别验证“能执行”和“会按计划触发”
适用情况: 分流后仍不能确认调度是否工作。手动或计划运行会使用当前账号额度;先选不读写项目、不调用外部服务的检查。
按照官方测试计划任务建议,先在普通聊天手动测试同一个提示词。例如:
这是一次执行链路检查。
只回复一行:SCHEDULE_CHECK_OK。
不要读取或修改文件,不运行 shell,不调用外部工具。
第一项验证: 手动执行能给出标记。若失败,先解决当前模型、认证或提示词层的问题;它还没有证明调度失败。
第二项验证: 使用同样的无害提示词建立单独测试计划,通过当前客户端支持的计划设置,选一个明确的未来日期、时间与时区。若支持只运行一次,使用一次;若只能重复运行,在确认一次结果后手动暂停该测试计划。保存后回看显示的下一次时间,不调整原业务任务的频率。
到时检查:任务是否出现新的运行记录、是否输出标记、执行位置是否符合设定。通知另记一项,不要求必须弹通知才算任务执行成功。
| 验证结果 | 可以判断什么 | 继续查哪里 |
|---|---|---|
| 手动也失败 | 执行链路尚未通过 | 具体错误、认证、模型或提示词 |
| 手动成功,测试计划无运行记录 | 需要继续查触发条件 | 计划状态、完整时间、执行主机与客户端 |
| 测试计划有记录但失败 | 调度已触发,执行阶段失败 | 该次第一条实际错误 |
| 测试计划成功,业务任务仍失败 | 问题更可能在业务所需条件 | 输入、工具、权限、目录与报告条件 |
一项成功的无害测试只证明当时这些条件下可以触发并回复,不保证离线、睡眠或其他执行环境也相同。验证完成后暂停或移除测试计划,再用原任务所需的最小只读操作复查业务条件。
仍然漏跑时,保留哪些证据
提供客户端与版本、任务类型、账号/工作区范围的脱敏描述、目标时区、预期执行时间、显示的下一次时间、近期运行记录及第一条错误。说明当时执行主机和应用的状态,以及最小测试是否成功。遮去私有提示词、项目内容、凭据和个人信息。
不要修改内部数据库字段来“推进时间”,也不要照搬旧 issue 的清空缓存、删除会话或无范围重试方案。配置明明改过却与运行不同,可继续看 config.toml 排障。
本文于 2026-10-17 核对当前官方文档,按客户端、触发、执行与结果四个阶段组织排查。本文没有为写作创建或运行真实计划任务,也未复现所有平台的漏跑;以上最小验证用于在实际客户端取得可核验的证据,不把文档核对当作真实调度实测。