
更新时间:2026-03-23
这篇文章不是功能说明,也不是需求文档。
它想认真回答一个很容易被低估的问题:
AI 产品里的定时任务,到底应该是什么?
这个问题表面看像是一个边角能力问题,实际上会直接影响产品站位。
因为一旦你认真做定时任务,你就已经不再只是一个“用户来问一句,你答一句”的聊天产品了。
你开始进入另一个领域:
让系统在用户不在线时,继续代表用户处理工作。
这件事一旦成立,定时任务就不再只是个小功能,而会变成产品哲学的一部分。
一句话结论
OpenCrab 里的定时任务,不应该被设计成“定时发送一条 prompt”。
它更合适的定位是:
一个按时间或周期触发的后台执行单元。
但这里还有一个更重要的判断:
它既不应该退化成“高级提醒器”,也不应该异化成“只有高级用户才会配置的调度系统”。
OpenCrab 想做的,是介于两者之间,但产品层级更高的一种东西:
- 它有调度系统的稳定性
- 有工作台的上下文连续性
- 有对话产品的可理解性
- 也有团队产品的持续推进能力
换句话说:
OpenCrab 的定时任务,最终不该是一个独立的 automation 面板,而应该是一个能按节奏唤醒工作上下文继续运行的系统能力。
一、为什么很多 AI 产品的定时任务,总让人感觉“不太对”
现在越来越多 AI 产品都在做:
- tasks
- scheduled actions
- alerts
- automations
- recurring jobs
但很多产品做出来以后,会让人有一种奇怪的感觉:
- 它明明能定时执行,但你不太想把真实工作交给它
- 它明明功能很多,但不像产品的一部分,更像后台工具
- 它明明能跑起来,但和聊天、项目、团队之间的关系不自然
我觉得问题不在于“技术做不到”,而在于很多产品一开始就把定时任务理解错了。
最常见的两个误区是:
误区一:把定时任务理解成提醒器升级版
这种理解会把定时任务做成:
- 到点提醒我
- 到点发我一句话
- 到点给我一份摘要
这类功能当然有用,但它只覆盖了很小一部分真实需求。
误区二:把定时任务理解成调度器外露
这种理解会把产品做成:
- schedule
- session
- webhook
- route
- delivery mode
- cron expression
它很强,但普通用户不会自然地认为“这就是我想用的 AI 工作能力”。
从系统角度看,这类设计可能很成熟;但从产品角度看,它只是把基础设施直接暴露给了用户。
二、定时任务的真实需求,到底是什么
如果只从用户价值看,而不是从技术实现看,我现在更倾向于把定时任务分成四类。
1. 提醒型
这是最直观的一类:
- 明天下午提醒我
- 每周提醒我做某件事
- 某个时间点不要忘了
这类需求的核心不是 AI 推理能力,而是:
别让我忘记。
它最重要的是:
- 简单
- 准时
- 通知可靠
2. 情报 / 监控型
比如:
- 每天给我 AI 新闻摘要
- 每周盯一下竞品变化
- 定时看看某个项目有没有新进展
这类需求不是 reminder,而是:
持续观察外部世界,并生成有价值的更新。
它节省的是用户的持续注意力,而不是一次性的记忆负担。
3. 周期性产出型
比如:
- 每周生成周报草稿
- 每月生成复盘框架
- 每周生成一次例会纪要模板
这类任务已经不只是“通知”,而是:
按节奏生成工作成果。
这时,系统更像一个后台文员。
4. 持续推进型
这是我认为最容易被低估、但对 OpenCrab 最关键的一类。
比如:
- 每周继续推进一次某个客户方案
- 每天把某个研究项目往前整理一步
- 每周唤醒一个 Team Room 继续处理 backlog
这类需求的重点不是创造一个新的独立结果,而是:
在既有上下文里,继续把某件事往前推。
到了这里,定时任务已经不像提醒器,也不像订阅器,而更像:
一个有节奏运行的后台 teammate。
三、真正统一这四类需求的,不是“提醒”,而是“后台执行单元”
如果把上面四类需求放在一起,你会发现:
定时任务 真正统一的抽象,不是 reminder,不是 alert,也不是 cron。
而是:
后台执行单元。
这个执行单元至少应该包含这些要素:
- 有明确目标
- 有触发节奏
- 有上下文来源
- 有运行记录
- 有结果出口
一旦这样定义,很多产品争论就会变得清楚。
比如:
- 它是不是一条消息,不重要
- 它是不是一个按钮,也不重要
- 它最关键的问题只有两个:
触发后做什么结果落到哪里
四、OpenClaw 的路线:强调度、强投递、强 runtime,但它不是最终的产品答案
如果只看今天公开资料里,谁在“定时任务 runtime”这件事上做得最完整,OpenClaw 确实很值得研究。
它的 cron jobs 设计相当成熟。官方文档里明确说:
- cron 是 Gateway 内建 scheduler
- job 会持久化
- 可以在正确时间唤醒 agent
- 可以把结果投递回聊天
- 也可以走 webhook
更重要的是,它区分了两种不同执行方式:
main sessionisolated session
前者更像:
- 把一个 system event 注入主上下文
- 让主会话在下一个 heartbeat 里继续工作
后者更像:
- 单独跑一个独立 agent turn
- 结束后再决定怎么投递结果
这套设计非常成熟,因为它已经不是“会不会定时跑”,而是把这些关键问题都回答了:
- 任务是否持久化
- 任务在哪里运行
- 结果如何投递
- 是否应该污染主线程
- 后台 run 怎么记录
- 多 agent 情况下 job 绑定谁
- isolated job 是否可以覆盖 model / thinking
从 runtime 角度看,这套系统很强。
而且很理性。
参考:
五、我对 OpenClaw 定时任务路线的评价
我对它的评价是:
系统设计非常成熟,但它更像调度系统,而不是最终的前台产品体验。
我觉得它做得很对的地方
1. 它清楚地知道:定时任务首先是 runtime 问题
很多产品一上来就在讨论 UI、按钮、提醒文案,但 OpenClaw 先把最关键的系统问题想清楚了:
- 任务存哪
- 什么时候执行
- 谁来执行
- 怎么投递
- 主线程和隔离线程怎么区分
这非常重要。
2. 它把 “main vs isolated” 说清楚了
这几乎是所有 AI 定时任务系统都应该有,但很多产品没有抽象清楚的一点。
不是所有定时任务都应该进入主对话。
有些任务天然适合:
- 留在当前工作上下文里继续
有些任务则天然适合:
- 在后台单独跑完,再把结果投递回来
OpenClaw 把这点做成第一性概念,这是它最大的优点之一。
3. 它把 delivery 当成正式能力,而不是附属细节
很多系统只关心“跑完了”,但现实里更关键的是:
- 跑完之后发到哪
- 用什么形式发
- 是发回聊天,还是发 webhook,还是内部消化
OpenClaw 在这件事上比很多产品成熟。
但我也觉得它有明确边界
1. 它更像基础设施,而不是工作台产品语言
从用户心智看,cron、heartbeat、announce、webhook、last route 这些概念都很系统化。
这套设计对工程型产品很好,对普通用户不够自然。
2. 它强调的是“调度与投递”,不是“任务与工作对象的关系”
OpenClaw 会非常清楚地告诉你:
- 任务怎么跑
- 跑在哪
- 跑完发哪
但它并不天然强调这些更偏产品的问题:
- 这个任务属于哪个工作上下文
- 这个任务是在继续推进某件事,还是只是在发一个结果
- 用户应该把它当成提醒、订阅、后台 job,还是团队节奏器
3. 它更偏 gateway-first,而不是 workspace-first
这意味着它的强项在:
- always-on
- channels
- routing
- automation
而不是:
- 对话连续性
- 项目上下文
- 团队推进叙事
- 任务与工作空间的关系
所以我会说:
OpenClaw 解决了“任务如何稳定运行”的大问题,但没有把“任务作为工作台产品对象”的问题讲到最前面。
六、OpenCrab 从 OpenClaw 应该借什么,不该借什么
这是最重要的一部分。
因为我们不是在评判谁好谁坏,而是在判断:
对 OpenCrab 来说,什么值得借,什么不能照搬。
1. 值得借的
借鉴一:把定时任务当作系统级能力,而不是页面级功能
这一点我非常认同 OpenClaw。
定时任务不是 tasks 页面上的一个小卡片功能,而应该是 runtime 层的能力。
它应该天然能接:
- conversation
- team room
- channels
- webhook
- future inbox
借鉴二:明确区分“在原上下文继续”与“独立后台运行”
这在 OpenCrab 里也必须成为正式概念。
我更愿意用更产品化的语言来表达:
继续当前工作空间后台独立运行
但底层抽象,本质上就是 OpenClaw 的 main session vs isolated session。
借鉴三:run history 和 delivery 必须是正式能力
任务不是只有 schedule 和 prompt。
一个成熟的任务对象还必须有:
- run history
- status
- result target
- delivery policy
- failure behavior
借鉴四:多 agent / 多模型任务绑定应该是正式支持的
这对 OpenCrab 的 Team Mode 很重要。
以后任务不应该只知道:
- 什么时候跑
还应该知道:
- 由哪个工作上下文来跑
- 由哪个 team / agent profile 来跑
2. 不该照搬的
不要把系统术语直接暴露给普通用户
普通用户不该先理解:
- cron
- heartbeat
- webhook
- isolated session
他应该理解的是:
- 这个任务会在什么时候执行
- 它会继续哪个工作
- 结果会回到哪里
- 是否会通知我
不要把任务产品做成调度台
OpenCrab 不是要做一个通用 automation gateway dashboard。
OpenCrab 要做的是:
面向普通用户的 AI 工作台。
所以任务页不该优先展示“调度配置”,而应该优先展示:
- 这是什么任务
- 它在推进什么
- 最近做了什么
- 下次会做什么
- 如果我点进去,我会回到哪个工作空间
不要让任务脱离工作对象
这是我认为 OpenCrab 和 OpenClaw 最大的产品差别。
在 OpenCrab 里,任务不该只是“某个时间运行一次 agent”的记录。
它应该和这些对象有稳定关系:
- 对话
- Team Room
- Agent Room
- future artifacts / inbox
也就是说,OpenCrab 里的任务必须是 workspace-aware 的。
七、回到 OpenCrab:定时任务到底该和对话如何关系化
这个问题我现在的答案比之前更明确:
任务本身应该独立,但结果目标必须显式。
我不赞成两个极端:
极端一:永远绑定原对话
问题是:
- 原对话可能会跑题
- 长期任务会把普通聊天刷乱
- 任务对象感很弱
极端二:永远新起一个对话
问题是:
- 会割裂本来连续的上下文
- 用户追问不自然
- Team Mode 场景尤其别扭
所以更合理的方案是:
Task是一等对象Task有自己的生命周期、状态、运行记录Task不从属于某条聊天- 但
Task每次执行都要有明确result target
这个 target 可以是:
- 当前 conversation
- 当前 Team Room
- 专属 task-only space
- 未来的 channel / inbox / artifact board
八、OpenCrab 现在已经对了一半,但还不够
从当前实现看,OpenCrab 已经走在正确方向上了。
它现在已经具备这些特征:
- 任务是独立对象
- 任务可以绑定
conversationId - 任务也可以绑定
projectId - 没有绑定 conversation 时,可以创建专属任务对话
- 任务详情里已经把“结果回流”作为正式概念展示
这说明 OpenCrab 已经不是“消息里点一个 reminder 按钮”的思路了。
但它距离我理想中的状态还差几层关键语义:
1. 任务类型还没有显式分层
现在创建任务更像统一表单:
- 名称
- prompt
- 时间
但从产品角度看,至少应该显式区分:
- 提醒型
- 情报 / 监控型
- 周期产出型
- 持续推进型
因为这四类任务的默认 target、默认通知方式、默认历史展示方式都应该不同。
2. 结果目标还没有成为创建时的核心问题
底层已经有 conversationId / projectId,这是好事。
但前台还没有把:
这条任务以后把结果回到哪里
做成用户可理解、可确认的核心步骤。
3. 通知层和回流层还没有分开
这会是后面很重要的一步。
因为:
- 结果落点
- 通知方式
不应该是一回事。
一个任务完全可以:
- 结果继续沉淀在 Team Room
- 但只在需要用户介入时发提醒
4. run history 还更像记录,而不是任务叙事主干
这是一个产品成熟度问题。
理想状态下,用户看任务时最想知道的是:
- 最近一次做了什么
- 和上次相比变了什么
- 有没有需要我接手
- 这次是在提醒、监控、产出还是推进
也就是说,run history 不该只是日志,而应该成为任务体验的主叙事。
5. 和 Team Mode 的结合还不够深
现在你已经支持 projectId,这方向完全正确。
但更进一步,定时任务在 OpenCrab 里的真正价值,应该是:
- 唤醒一个 Team Room
- 让这个团队在节奏点继续工作
- 在需要用户时回到 frontstage
这时任务就不再像“单独调一次 prompt”,而更像:
一个团队节奏器。
九、所以,OpenCrab 到底要做什么,为什么
说到底,OpenCrab 在定时任务这件事上,不想做两种东西:
1. 不想做纯提醒器
因为这太浅了。
它能解决“别忘了”,但解决不了:
- 持续观察
- 周期产出
- 背景推进
2. 也不想做纯调度器
因为那会把产品推向工程化配置面板。
它能解决“怎么稳定地跑”,但解决不了:
- 普通用户如何理解它
- 任务如何融入工作空间
- 定时任务如何成为产品主线,而不是后台功能
所以 OpenCrab 想做的,是第三条路:
把定时任务做成工作台中的后台执行能力。
这意味着它必须同时满足这四件事:
第一,任务要独立
它必须是一等对象,有自己的生命周期,而不是聊天里的附属动作。
第二,任务要有上下文归属
它必须知道:
- 它是在继续哪个 conversation / team / workspace
第三,任务要有结果出口
它必须知道:
- 结果放哪
- 什么时候通知
- 什么情况需要用户介入
第四,任务要能融入长期工作流
它不只是提醒一条消息,而是要让 OpenCrab 从聊天产品逐步变成:
- 工作台
- 团队面板
- 后台执行系统
十、我的最终判断
如果让我把这篇文章的结论压成最短的一句话,我会这样说:
OpenCrab 的定时任务,不该是聊天上的一个小功能,也不该是暴露给用户的调度系统;它应该是一个能按节奏唤醒工作上下文继续运行的后台执行能力。
这也是为什么我觉得 OpenClaw 对我们很有价值,但不能直接照搬。
OpenClaw 告诉我们:
- 调度必须严肃对待
- main / isolated 的区分必须清楚
- delivery 和 run history 必须是正式能力
但 OpenCrab 要走得更远一点:
- 用更产品化的语言包装这些能力
- 让任务天然归属于 conversation / team / workspace
- 让任务服务于“长期推进工作”,而不是只服务于“定时执行”
如果这条路走对了,OpenCrab 的定时任务不会只是“AI 产品里那个顺手加上的功能页”,而会成为整个产品从聊天走向工作台、再走向团队化运行系统的一条关键主线。
参考资料
相关文章

从提示词市场到 Agent 市场:一条正在成形的应用生态链
这不是一串术语更替,而是 AI 应用层的软件商品单位一路从 Prompt 演进到 Agent、Agent Team 与 Outcome Market 的过程。

OpenCrab 要不要自建 Agent Loop / Harness
一轮更完整的开源调研,聚焦 runtime、tool router、context、recovery,以及 OpenCrab 是否该逐步拥有自己的 agent 宿主层。

数字团队不能只有聊天记录
Team Memory 和 Autonomy Gate 不是附属能力,而是数字团队真正可持续协作所需要的结构化记忆、治理停点与恢复机制。