openclaw平替之nanobot源码解析(八):Gateway进阶——定时任务与心跳机制
在前面的章节中我们看到的 Agent 都是“被动”的你发一条消息它回一条消息。但在真正的生产环境中我们希望 AI 能更主动一些比如“每隔 2 小时提醒我喝水。”“每天早上 8 点为我总结昨天的 GitHub 动态。”“定期检查我的待办事项看看有没有过期的任务。”这些功能全靠nanobot gateway命令背后的**定时任务Cron与心跳Heartbeat**机制。今天我们就来拆解它们。1. Gateway全能编排者当你运行nanobot gateway时它不仅仅是启动了一个网关而是启动了一个多任务并行系统。在nanobot/cli/commands.py中你可以看到它同时拉起了四个核心服务AgentLoop负责对话逻辑。ChannelManager负责连接 Telegram/飞书等渠道。CronService负责执行预设的定时任务。HeartbeatService负责驱动 AI 的“自主思考”。这四个服务通过asyncio.gather并发运行共同构成了一个 24/7 在线的智能体系统。2. CronService精准的“闹钟”CronServicenanobot/cron/service.py负责处理那些有明确时间要求的任务。存储机制所有的定时任务都存储在~/.nanobot/cron/jobs.json中。你可以通过工具让 AI 帮你添加任务它会生成如下格式的配置every每隔一段时间执行如每 5 分钟。at在特定时间点执行。cron使用标准的 Cron 表达式如0 8 * * *。执行逻辑CronService内部维护了一个计时器。每当任务到期它就会调用on_job回调将预设的message发送给AgentLoop处理并将结果通过指定的渠道如 Telegram推送给你。3. HeartbeatServiceAI 的“自主意识”如果说 Cron 是“闹钟”那么HeartbeatServicenanobot/heartbeat/service.py就是 AI 的“脉搏”。它是 nanobot 最具特色的设计之一。两阶段决策机制为了节省 Token 并提高准确性心跳服务分为两个阶段第一阶段决策Decision每隔一段时间默认 30 分钟服务会读取HEARTBEAT.md文件并询问 LLM“请看这份文档现在有需要我主动处理的任务吗”如果 LLM 回复skip则继续休眠。如果 LLM 回复run并给出了具体的任务描述则进入第二阶段。第二阶段执行Execution一旦决定运行心跳服务会启动一个完整的AgentLoop来执行 LLM 刚才提出的任务。执行完成后结果会自动推送到你最常用的聊天渠道。为什么这么设计这种“先判断、再执行”的机制避免了 AI 在没有任务时也频繁“说废话”同时也让 AI 能够根据HEARTBEAT.md中的上下文比如你记录的长期目标来决定什么时候该主动找你。4. 开发者视角如何 Debug 自动化任务在运行nanobot gateway时你会看到如下启动日志✓ Channels enabled: telegram✓ Cron: 2 scheduled jobs✓ Heartbeat: every 1800s如果你想测试心跳逻辑可以手动修改HEARTBEAT.md添加一些紧迫的任务然后观察日志中是否出现了Heartbeat: tasks found, executing...。总结通过CronService和HeartbeatServicenanobot 完成了从“工具”到“助手”的蜕变。它不再仅仅等待指令而是开始根据时间、计划和上下文主动融入你的工作流。至此nanobot 源码解析系列真正画上了句号。我们从最底层的配置一路走到了最上层的自动化编排。希望这八篇文章能成为你探索 AI Agent 世界的一盏明灯。再次感谢你的陪伴祝你在 AI 的世界里玩得开心✨
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2442244.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!