☰
让AI在你睡觉时工作:Cabinet定时任务Cron调度与Heartbeat实战指南
2026/9/29 8:03:07 网站建设 项目流程

让AI在你睡觉时工作:Cabinet定时任务Cron调度与Heartbeat实战指南

【免费下载链接】cabinetAI-first knowledge base and startup OS项目地址: https://gitcode.com/gh_mirrors/cabinet3/cabinet

🗄️Cabinet是一款开源的 AI-first 知识库与创业 OS(Startup OS),内置**定时任务(Cron 调度)与智能体心跳(Heartbeat)**两大自动化机制。用自然语言或简单的日历拖拽,就能让 AI 智能体在你睡觉时自动巡检、写报告、整理知识——"你的团队会在你睡觉时成长"。

两大自动化机制:Jobs 与 Heartbeat 有什么区别?

在 Cabinet 中,让 AI"自己动"的方式有两种,理解它们的区别是玩转定时调度的第一步:

机制定位配置位置典型场景
定时任务(Job)精确的 Cron 计划任务{cabinetPath}/.jobs/{id}.yaml每 6 小时 Reddit 情报侦察、周一晨报
心跳(Heartbeat)智能体自主的"生物节律"智能体persona.md的 frontmatter客服智能体每天 9 点自醒检查待办
  • Jobs:由 server/cabinet-daemon.ts 中的常驻守护进程通过node-cron注册,到点即触发一次新的智能体会话。
  • Heartbeats:写在智能体人设文件里(src/lib/agents/heartbeat.ts 负责执行),相当于给每个 AI 员工一个"生物钟",按自己的节奏周期性醒来自检、推进目标。

💡 两者的运行状态都会汇入同一张日历视图,统一管理、统一观察。

快速上手:3 步创建第一个定时任务

第 1 步:选择智能体。在 Agents 页面打开任意智能体(如 Researcher、Content Marketer),进入其 Schedule 标签页。

第 2 步:选择调度模式。调度选择器(src/components/mission-control/schedule-picker.tsx)支持 6 种模式,新手建议直接用自然语言:

  • Once(单次)/ Daily(每天)
  • Weekday(工作日)/ Weekly(每周)/ Monthly(每月)
  • Custom(自定义):直接输入 cron 表达式,或写"每 6 小时""工作日 9 点"等自然语言,由/api/schedule/parse端点自动解析为 cron

第 3 步:保存。改动会通过PUT /api/agents/[id]/jobs落盘为 YAML 文件,守护进程在约 200ms 内自动热加载新计划——无需重启任何服务。

日历即调度台:拖拽、标记、右键菜单

Cabinet 的调度管理没有表单地狱,一切发生在日历上(src/components/cabinets/schedule-view.tsx 统一渲染于 Tasks、Agents、智能体详情三个入口):

  • 🖱️框选创建:在空白时间段按住拖拽,松手即创建一次性任务;
  • 📦重复任务:创建时即可选择 Repeat(Once / Daily / Weekly / Custom);
  • ✋拖拽改期:拖动事件到新时间;改重复任务时会提示"仅此次 / 全部事件",机制与 Google Calendar 一致(服务端通过exceptions[]即 EXDATE 实现);
  • 🖱️右键菜单:立即运行 / 编辑 / 复制 / 跳过此次 / 启用·禁用 / 删除;
  • ⏰当前时间红线+ 今天高亮,随时看清"现在到哪了"。

它是怎么工作的?调度架构一图看懂

不用关心代码也能跑,但知道架构会更有掌控感。核心链路:

  1. 落盘:任务 YAML(JobConfig类型见 src/types/jobs.ts)与心跳配置(heartbeat、heartbeatEnabled字段)全部是磁盘上的纯文本,可 Git 追踪;
  2. 注册:守护进程 server/cabinet-daemon.ts 读取所有 cabinet 的.jobs/*.yaml与 persona 心跳,用node-cron按主机本地时间注册;
  3. 触发:到点后守护进程发起PUT(带action: "run"、source: "scheduler"和精确到分钟的scheduledAt时间戳),为这次运行创建一个可回看的智能体会话;
  4. 可观测:每次运行都能在日历上点击"过去的药丸",直接打开对应的任务会话面板(机制详见 docs/CALENDAR_RUN_LINKAGE.md)。

Heartbeat 实战:给 AI 员工设一个"生物钟"

打开智能体后点击Heartbeat行(或日历中任意心跳事件),弹出共享的心跳编辑器(src/components/agents/heartbeat-dialog.tsx),你可以:

  • ⚡启用/禁用开关:一句话控制"它是否按自己的节奏醒来";
  • 🕐设置节奏:复用同一个调度选择器,如"每 4 小时"或"每天 8 点";
  • ▶️立即运行一次:不占用计划槽位,适合验证效果;
  • 📄查看定义:链接直达 persona 文件中"心跳到底做什么"的正文部分。

典型玩法:给客服智能体设每日 9 点心跳,醒来检查邮件与消息队列;给 Researcher 设每 6 小时心跳,持续追踪行业动态并写入知识库。

避坑指南:定时任务没跑起来怎么办?

🚨琥珀色"未运行"标记:日历中过去的时间点如果显示为灰底 + 琥珀色警告图标,说明那次调度没有执行(src/components/cabinets/schedule-calendar.tsx)。点击它会弹出琥珀色横幅,提示可能原因:

  1. Cabinet 守护进程当时没有运行(最常见——机器休眠或进程退出);
  2. 该调度当时处于禁用状态;
  3. 运行启动失败(如 AI CLI 未登录)。

✅三个保命建议:

  • 确保机器不深度休眠时守护进程(npm run dev:all或 Electron 桌面端)在运行;
  • 记住调度按主机本地时间触发,浏览器与守护进程需同一时区;
  • 用* * * * *的测试任务做一次冒烟验证,确认链路通畅后再上正式计划。

写在最后

Cabinet 把"AI 自动化"做成了日历上看得见、摸得着的日常:Jobs 负责精确计划,Heartbeat 负责自主节律,守护进程负责可靠触发,日历负责全程可观测。当你睡前设好节奏,醒来看到的不再是空白的收件箱,而是一份份已经完成的产出。

📚 延伸阅读:

  • 调度日历完整设计文档:docs/SCHEDULE_CALENDAR_PRD.md
  • 日历运行关联机制:docs/CALENDAR_RUN_LINKAGE.md
  • 智能体页面规格(含 Heartbeat 行):docs/AGENT_PAGE_PRD.md
  • 任务体系总览:docs/TASKS.md

【免费下载链接】cabinetAI-first knowledge base and startup OS项目地址: https://gitcode.com/gh_mirrors/cabinet3/cabinet

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询