先把“没有执行”拆成三种情况
定时任务问题通常有三类:任务根本没有创建、任务创建了但下一次时间计算不符合预期、任务实际触发但执行过程失败。三者需要不同的证据,不能只看聊天里有没有回复。
1. 列出任务并确认 Profile
先查看当前 Profile 下的任务列表:
hermes cron list
确认任务名称、启用状态、计划表达式和最近一次运行信息。命名 Profile 的任务状态与 default Profile 不一定相同,排查时必须记录启动命令和 Profile。
2. 核对时区和时间表达式
“每天早上八点”必须明确是服务器时区、系统时区还是任务配置指定的时区。可以先查看服务器当前时间:
date
再用一个距离当前时间很近的测试计划验证触发机制,验证完成后删除或停用测试任务。不要为了测试直接修改生产任务的执行时间。
3. 区分触发成功与任务失败
触发器成功不代表正文执行成功。检查最近运行记录、退出状态和错误输出。如果任务启动了但模型请求失败,应转到 API、网络或凭据排查;如果完全没有运行记录,应回到任务状态、时区和后台进程。
4. 检查后台服务是否仍在运行
VPS 重启、进程退出或权限变化都可能让定时任务停止。检查进程管理器或 Hermes 网关状态,确认服务的工作目录、环境变量和日志目录一致。不要只依赖一个“看起来还在”的 Shell 窗口。
5. 为生产任务增加可验证的输出
每次运行至少记录任务开始、任务结束、成功或失败状态,以及脱敏后的错误摘要。重要任务还应发送恢复通知,并对连续失败设置退避和告警去重,避免同时产生大量重复消息。
验收清单
- 任务在预期 Profile 下存在并处于启用状态;
- 时间表达式与时区已经明确;
- 测试运行有可追溯记录;
- VPS 重启后任务仍能恢复;
- 失败时有本地日志或通知;
- 日志中没有 Token、Cookie 或完整 API Key。