盯着检查和每天提醒不是一回事
解释 GoWork 里 interval 与 daily 的边界:什么时候该持续轮询状态,什么时候该落在固定钟点提醒,避免把“每 N 小时”建错成会漂移或根本盯不住条件的任务。
如果你的真实需求是“盯着某个状态,一旦变化就告诉我”,那就该用 interval;如果你的需求是“每天 8 点提醒我一次”,那就该用 daily。两者看起来都像“定时任务”,但解决的根本不是一类问题:前者是在做监控,后者是在做钟点提醒。
这个边界在 GoWork 里尤其重要,因为很多含糊的说法——比如“每 6 小时提醒我”“帮我盯着发布状态”——如果建错模型,结果不是提醒时间漂移,就是任务根本盯不住条件。OmniGoAI 的 GoWork 把这两类需求拆开,就是为了避免这种“看起来差不多、实际完全不是一回事”的自动化误用。
如果你已经看过 定时发布和轮询任务有什么区别 和 GoWork 定时任务通知会发到哪里?,这篇文章会把问题进一步收窄到最容易配错的一步:在 GoWork 里,什么时候该用 interval,什么时候该用 daily?
先说结论:盯条件用 interval,落钟点用 daily
可以先记一条最短判断法:
- 你关心的是“什么时候条件成立”,而不是“几点执行”吗?
- 是:用 interval。
- 你已经知道要落在哪个固定钟点,比如每天 08:00、20:00,或者每周一 09:00 吗?
- 是:用 daily/weekly 这类固定时间任务。
- 你的原话只是“每 6 小时”“每两小时查一次”,但没有给具体钟点吗?
- 这通常是 interval,因为它描述的是频率,不是钟面时间。
- 你的原话是“每天 0/6/12/18 点”“早晚各提醒一次”吗?
- 这通常是 daily,因为它描述的是明确时刻,不是滚动频率。
一句话概括:interval 回答“隔多久看一次”,daily 回答“每天几点执行”。
为什么 interval 不是“另一种 daily”
interval 的核心不是日历,而是轮询频率。你创建任务时,只定义“每隔多少分钟再看一次”,并不保证它一定落在某个整点。
比如你在下午 3:07 创建“每 6 小时检查一次”的任务,它后面通常会落在:
- 21:07
- 次日 03:07
- 次日 09:07
- 次日 15:07
这正是 interval 的设计目的:它是从创建时刻往后滚动的守护型任务,适合监控、巡检和条件触发,而不是追求稳定落在固定钟点。
典型的 interval 场景包括:
- 每 5 分钟检查一次网页价格,低于阈值就通知我;
- 每 10 分钟看一次审核状态,变成 completed 再继续;
- 每半小时看看有没有新的评论或异常日志;
- 每 2 小时巡检一次某个队列是否堆积。
这些场景的共同点是:命中时间未知,只能定期检查。
为什么 daily 不是“另一种 interval”
daily 的核心不是频率,而是固定钟点。你在创建任务时已经说清了每天几点执行,因此系统应该尽量让它稳定落在这些时间,而不是依赖创建时刻往后滚。
典型的 daily 场景包括:
- 每天早上 8 点提醒我发日报;
- 每天 08:00 和 20:00 各巡检一次;
- 每天中午 12 点提醒我复盘上午任务;
- 每天晚上 10 点提醒我关掉测试环境。
这类需求看起来也像“每隔若干小时”,但产品意图完全不同。用户要的不是“从现在起每 12 小时滚一次”,而是“稳定落在早晚两个明确时段”。
这也是为什么 GoWork 会把“每天 0/6/12/18 点”理解成 fixed-time 任务,而不是 interval。对吃药提醒、排班提醒、固定时段巡检来说,钟点稳定比频率描述更重要。
真正容易混淆的,是“每 N 小时”这句话
大多数误配都出在这里。
“每 6 小时”至少可能有两种完全不同的意思:
- 意思 A:从现在开始,每隔 6 小时检查一次。
- 这是 interval。
- 意思 B:每天固定在 0 点、6 点、12 点、18 点执行。
- 这是 daily。
两种说法听起来接近,但系统行为差异很大。
当用户说的是频率
例如:
- “每两小时看一眼价格有没有变”;
- “每 5 分钟检查一次日志”;
- “帮我盯着审核状态,每 30 分钟查一次”。
这些话描述的是轮询节奏。此时重点是检查频率,所以应该建 interval。
当用户说的是钟点
例如:
- “每天早八点和晚八点各提醒一次”;
- “每天 0/6/12/18 点检查一次”;
- “工作日 9 点提醒我开站会”。
这些话描述的是落在什么钟面时间。此时应该建 daily 或 weekly,而不是 interval。
为什么把监控需求建成 daily,通常等于没监控
这是 GoWork 里最常见的误用之一。
如果用户说“盯着这个页面,一旦有新的报名入口就告诉我”,而你把它建成 daily,每天只看一次,那它实际上已经不是“盯着”,而是“偶尔看一眼”。
监控类需求的关键词通常包括:
- 盯着;
- 监控;
- 一旦……就告诉我;
- 有新的就通知我;
- 每 5 分钟检查一次。
这些词指向的都不是固定钟点,而是持续观察。对于这类任务,正确建模通常是:
- 用 interval 指定检查频率;
- 每次运行真实去查状态;
- 条件未命中时少打扰或静默;
- 条件命中时通知;
- 如果这是“盯到发生为止”的任务,命中后主动取消任务。
如果你把这类需求误建成 daily,用户会以为系统在持续盯,实际却只是每天看一次,结果很可能错过真正重要的变化窗口。
为什么把固定提醒建成 interval,会出现时间漂移
反过来,固定提醒最怕被建成 interval。
例如用户想要的是:
- 每天早上 8 点提醒吃药;
- 每天 18:00 提醒发日报;
- 每天早晚各一次巡检。
如果你把它们建成“每 12 小时一次”或“每 24 小时一次”的 interval,锚点就会落在创建时刻,而不是用户心里的钟点。
比如任务是下午 3:07 创建的:
- “每 12 小时”会在 03:07 / 15:07 触发;
- “每 24 小时”会每天 15:07 触发。
这当然不是“每天早晚各一次”真正想表达的含义。
所以只要用户说出了具体钟点,就应该优先保留钟点,而不是偷懒翻译成“每隔 N 小时”。
四个最常见场景,怎么一眼判断
场景 1:盯着价格直到低于阈值
需求:每 2 分钟检查一次价格,低于 250 就告诉我。
正确选型:interval。
原因:价格何时变化未知,只能定期检查;命中时再通知。
场景 2:每天固定两次巡检
需求:每天 08:00 和 20:00 检查一次服务状态。
正确选型:daily。
原因:这里追求的是稳定落在明确时段,而不是从创建时刻开始每隔 12 小时滚动。
场景 3:有新评论就提醒我
需求:有新的评论或私信就告诉我。
正确选型:interval。
原因:评论出现时间未知,监控类需求本质上就是轮询或守护。
场景 4:每天晚上提醒我做收尾
需求:每天晚上 10 点提醒我整理日报。
正确选型:daily。
原因:提醒时间已知,不需要运行前再判断外部条件。
一个实用判断法:先问自己两个问题
在创建 GoWork 定时任务前,先问自己两个问题。
问题 1:我关心的是钟点,还是条件?
- 关心钟点:用 daily/weekly/monthly 这类固定时间任务;
- 关心条件:用 interval。
问题 2:这个任务是否需要反复“再看一眼”?
- 需要,例如“过会儿再查一次”“一旦发生就通知我”:用 interval;
- 不需要,只要到点执行:用 daily。
这两个问题基本能把大多数“提醒”和“监控”需求分开。
在 GoWork 里,最稳的建模方式是什么
如果把经验再压缩一点,可以记成下面四条:
- 说了具体钟点,就尽量保留成 fixed-time 任务。
- 说的是频率,就按 interval 理解。
- 监控类需求默认优先 interval,而不是 daily。
- “每 N 小时”有歧义时,优先确认它到底是频率还是钟点。
这也是为什么 GoWork 在调度规则上会刻意把“每天 0/6/12/18 点”和“每 6 小时查一次”分成两类。前者强调时刻不漂移,后者强调从创建时刻开始的固定检查节奏。
常见问题
“盯着某个状态,一旦变化就通知我”应该用 daily 吗?
不应该。这类需求的重点是持续观察和条件命中,通常应该用 interval。daily 只适合固定时段执行,不适合承担监控职责。
“每天早晚各一次”为什么不直接写成每 12 小时?
因为“早晚各一次”表达的是钟点意图,不是频率意图。用户通常希望它稳定落在两个明确时段,而不是锚定在创建时刻后滚动 12 小时。
“每 6 小时”到底应该怎么理解?
如果只说频率、没说钟点,通常按 interval 理解;如果用户明确说的是每天 0/6/12/18 点,那就该用 daily。关键不是字面像不像,而是用户到底在描述频率还是时刻。
interval 任务命中条件后为什么最好取消?
因为很多监控类任务只是“盯到发生为止”。条件已经满足还继续轮询,通常只会制造无意义触发和噪音。更稳的做法是命中后通知,并把任务收尾掉。
如果你想把提醒、巡检、自动跟进放进聊天式助手里,可以试试 OmniGoAI 的 GoWork:https://omnigoai.com/zh/download/gowork/ 。如果你还想把“定时执行”和“结果回传范围”一起设计清楚,可以继续看 GoWork 定时任务通知会发到哪里? 和 用 GoWork 定时任务做巡检、日报和自动跟进。