ChatGPT 定时任务到点不触发 —— 完整排查指南

本应早上 9 点跑的 Task 没动 —— 通常是时区漂移、套餐降级,或者任务被自动暂停。

你设了一个每日 Task:“每个工作日早上 9 点,总结 Gmail 收件箱并发到 Slack。“周一 9 点 05 分一看 —— 没动静。Task 还挂在 Settings → Tasks 里,状态是 active,“next run: tomorrow” 那一行明显已经漂移了。ChatGPT Tasks 是一个调度层:把一个保存好的提示按 cron 形式定时跑,然后通过推送、邮件或者会话内消息把结果推给你。Task 到点不触发,几乎总是这四件事之一:账号和调度器之间的时区错配、Task 被静默暂停了、套餐变了导致功能被关、或者最近换过模型把 Task 绑定的模型搞丢了。

常见原因

按出现频率粗排。

1. 账号时区和设备时区不一致

Task 按创建那一刻账号上绑的时区触发。如果你出差时建的 Task,或者账号注册时所在地区不同,“早 9 点”就是账号时区的早 9 点 —— 可能比你本地早 6 小时。Task 其实按时跑了,你只是不在那个时刻查看。

怎么判断:Settings → Account → Timezone 显示的不是设备时间。Task 的 “last ran” 时间戳正好偏了 N 小时。

2. 任务被暂停了 —— 手动或自动

每个 Task 都有 active / paused 开关。Tasks 连续 N 次失败后(常见 3-5 次)ChatGPT 会自动暂停,免得一直推失败给你。暂停的 Task 还在列表里,还会显示一个 “next run” 估算,但实际什么都不会跑。

怎么判断:任务行上有个小暂停图标或者灰色的开关。最近 run 历史里连续 3 次以上失败。

3. 套餐降级 —— Tasks 是 Plus 起步才有的功能

Tasks 是付费层级专属。Plus 一旦失效(卡被拒、自动续费失败),你所有 Task 都会在套餐切回 Free 的一刻冻住。它们还显示在那里但永远不会触发。参考 ChatGPT 订阅未被识别

怎么判断:Settings → Subscription 显示 Free,或者 Plus 的续费日期已经过去。所有 Task 的 “last fired” 时间戳都在套餐失效那一刻附近。

4. Task 绑了一个已经下线 / 改名的模型

Task 创建时会把模型选择存下来。OpenAI 下线或者改名某个模型时(比如老的 gpt-4o 变体改名为 gpt-5.5),部分 Task 的绑定会失效。调度器内部会记 “model unavailable”,然后静默跳过这次。

怎么判断:Task 是三个月以上之前建的。最近 run 历史里出现 “skipped” 但没有任何输出,或者 Task 设置里模型字段显示一个已经废弃的名字。

5. 推送 / 邮件投递通道坏了

Task 其实顺利跑完了,但投递失败:推送权限被撤、邮件进了垃圾箱、Slack webhook URL 过期。你以为没触发,其实跑过了,只是结果丢了。

怎么判断:Settings → Tasks → 点进 Task → “Run history” 显示是成功的。但你的通知中心 / Slack 频道里什么都没看到。

6. 任务每日 / 每周配额满了

每个账号有一个活跃 Task 的上限(Plus 通常 10 个,Team / Pro / Enterprise 更多)。创建第 11 个不会报错 —— 它就那么挂着不激活。超过配额的新建 Task 永远不会触发。

怎么判断:你最近一口气建了好几个 Task。统计活跃 Task 数发现已经卡在上限,最新建的几个状态是 “pending activation”。

7. Task 触发时依赖的工具不可用

如果 Task 用了 web 浏览、Code Interpreter、自定义连接器这类工具,而触发时这些工具正在退化或被限流,Task 可能中断。调度器把它记成一次失败,累积到自动暂停阈值。

怎么判断:Run 历史里某次详情面板写着 “tool error: browsing unavailable” 这类信息。

开始之前

  • 确认这个 Task 上一次成功触发是哪一天、几点。
  • 记录创建后是否换过套餐、国家或者时区。
  • 把 Task 的提示文本备份 —— 万一要重建,不要靠记忆手敲。
  • 看一眼今天其它 Task 是否触发了;单个 Task 坏 vs. 全局都没动,处理方式不同。

需要收集的信息

  • 任务的 run 历史(Settings → Tasks → 点进 Task → History 标签)。
  • 调度表达式(如 “每个工作日 09:00”)以及它旁边显示的时区。
  • 套餐和续费日期。
  • Task 绑定的模型名。
  • 投递通道(推送 / 邮件 / 会话内)和该通道上一次成功投递的时间。
  • 活跃 Task 总数 vs. 配额。

一步一步修

从最便宜的门排起。

第 1 步:对齐时区

Settings → Account → Timezone,改成你实际所在地。然后编辑每个 Task,重新确认调度时间 —— 有些 Task 存的是一个绝对 UTC 偏移,不会跟着账号时区自动变。重新保存一次 “9:00” 会强制把它绑定到新的时区。

第 2 步:把 Task 关掉再开

在 Task 列表里,把 active 开关关掉,等 5 秒,再开。这会强制调度器重新计算下一次触发时间。如果是因为多次失败被自动暂停的,这一步也能清掉暂停标志。

第 3 步:确认订阅并重新激活 Task

套餐过期了就先续上。付款成功之后 Task 不一定会自动恢复 —— 打开 Settings → Tasks 把每一个都关掉再开。确认 “next run” 那一行更新到一个不远的未来时间。

第 4 步:重新绑定模型

打开 Task,把模型换成当前默认(比如 GPT-5.5),保存。如果之前那个模型已经不可用,选择器会给个提示。换成支持的模型再保存就能解开孤立状态。参考 ChatGPT 对话中模型被自动换掉

第 5 步:验证投递通道

在 Task 详情里点 “Run now” 手动触发一次。如果手动跑能完成但你没收到通知:

  • iOS / Android:Settings → ChatGPT → Notifications → 确保所有分类都打开。
  • 邮件:在 spam / promotions 里搜 OpenAI 发件人。把 noreply@openai.com 加白名单。
  • Slack / webhook:轮换 webhook URL,粘回 Task 里。旧 webhook 会静默过期。

第 6 步:检查 Task 配额

数一下活跃 Task 数(active 是开的,没被暂停)。卡在上限就决定退掉哪些。在建新 Task 之前先空出位置。“create” 按钮在你已经满额时不会警告你。

第 7 步:如果提示依赖不稳的工具,把它拆开

如果 run 历史里出现工具错误,把 Task 的提示简化。比如把一个 “browse → summarize → email” 的单 Task 拆成:

  1. 主 Task:每天只生成一份研究提示。
  2. 浏览 + 邮件那一步用别的方式(手动或者另一个自动化)。

这能隔离失败,避免自动暂停的连锁反应。

第 8 步:实在不行就重建

有时候 Task 内部状态损坏了,UI 上怎么切换都没用。把提示文本拷出来,删掉 Task,用同样的调度和提示重建。手动 “Run now” 应立即触发,下一次定时也会准点落到位。

验证

  • 手动 “Run now” 大约 30 秒内有输出,且通过你选的通道送达。
  • 下一次触发时间是未来时间,而且对应你账号时区。
  • 一天后,run 历史里多了一条 status “success” 的新记录,output 非空。
  • 推送 / 邮件 / Slack 等通道里能看到这次新 run 的内容。

长期预防

  • 账号时区固定为常住地,只在永久搬家时才改。
  • 一个月审一次 Tasks:把不再用的清掉,保持在配额内,列表也更容易扫。
  • 在 Task 的提示里直接写明期望的投递通道 —— 从 run 历史测试时会更方便。
  • OpenAI 宣布模型下线时,在弃用窗口内把 Tasks 列表过一遍,绑回当前默认。
  • 依赖工具(浏览、连接器)的 Task 加一行兜底:“如果浏览工具报错,就返回一段纯文本摘要,不要直接失败。”
  • 把重要 Task 的提示在笔记 app 里备份一份 —— Tasks 没有导出功能。

常见坑

  • 编辑 Task 后看到 “next run: in 2 minutes”,但以为它会按原本的早 9 点触发 —— 部分修改会从编辑时刻重算下一次时间。
  • 以为 “Run now” 成功就代表调度也正常;它只测试提示,不测试调度。
  • 调试时把 Task 设成 “每分钟” —— 很快就会触发自动暂停阈值,看起来像 bug。
  • 为了专注把 iOS 全局通知关掉,然后忘了 Task 推送也是这个通道。
  • Task 设到午夜账号时区,跑了你也看不到 —— 你正在睡觉。
  • 把凭据或 webhook URL 直接写在提示里 —— 它们会和 Task 一起被保存,所有能访问你账号的人都能看到。

FAQ

Q: Run 历史显示 success,但我没收到通知,输出在哪儿?

跑完了,输出存着 —— 打开 Task 详情,点那条 run 行,完整 output 就出现在右侧面板。投递是另一回事,通知关了 run 仍然成功。

Q: Task 算在消息上限里吗?

算。每次 Task 触发都从 Plus 每 3 小时的消息预算里扣。重度用 Task 的人可能在日中就把上限耗光,后续 Task 触发就会静默失败。参考 ChatGPT 消息上限触发

Q: 我设备离线时 Task 会触发吗?

会。Task 在服务端跑,跟你设备状态无关。投递通道(推送 / 邮件)会排队,等你设备上线再送达。运行本身按时发生。

Q: 我的 Task 用自定义 GPT,还能用吗?

以前限制比较多。最近的版本允许 Task 调用自定义 GPT,但你必须在 Task 的模型选择器里明确选中那个 GPT。如果自定义 GPT 被删了或者它的连接器吊销了,Task 会静默失败。

Q: Task 触发的最短间隔是多久?

生产用途上,最短一般是每天;部分套餐支持每小时。亚小时级是不支持的,UI 会直接拒绝。要更高频率,直接用 API 配合你自己的调度器。

标签: #ChatGPT #tasks #scheduling #automation #排查