当前位置: 首页 > news >正文

openclaw平替之nanobot源码解析(八):Gateway进阶——定时任务与心跳机制

在前面的章节中,我们看到的 Agent 都是“被动”的:你发一条消息,它回一条消息。但在真正的生产环境中,我们希望 AI 能更主动一些,比如:

  • “每隔 2 小时提醒我喝水。”
  • “每天早上 8 点为我总结昨天的 GitHub 动态。”
  • “定期检查我的待办事项,看看有没有过期的任务。”

这些功能,全靠 nanobot gateway 命令背后的定时任务(Cron)心跳(Heartbeat)机制。今天我们就来拆解它们。


1. Gateway:全能编排者

当你运行 nanobot gateway 时,它不仅仅是启动了一个网关,而是启动了一个多任务并行系统。在 nanobot/cli/commands.py 中,你可以看到它同时拉起了四个核心服务:

  1. AgentLoop:负责对话逻辑。
  2. ChannelManager:负责连接 Telegram/飞书等渠道。
  3. CronService:负责执行预设的定时任务。
  4. 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. HeartbeatService:AI 的“自主意识”

如果说 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...


总结

通过 CronServiceHeartbeatService,nanobot 完成了从“工具”到“助手”的蜕变。它不再仅仅等待指令,而是开始根据时间、计划和上下文,主动融入你的工作流。

至此,nanobot 源码解析系列 真正画上了句号。我们从最底层的配置,一路走到了最上层的自动化编排。希望这八篇文章能成为你探索 AI Agent 世界的一盏明灯。

再次感谢你的陪伴,祝你在 AI 的世界里玩得开心!🐈✨

http://www.jsqmd.com/news/524635/

相关文章:

  • Ubuntu 22.04 下 Fcitx5 输入法配置全攻略:从安装到美化(附常见问题解决)
  • 第13章 Agent Teams —— 组建你的 AI 团队
  • AI头像生成器场景解析:从角色设计到AI绘图的全链路方案
  • Apple服务扣费客服咨询AI流量赋能,重塑智能体验新标杆 - 王老吉弄
  • 20253919 2025-2026-2 《网络攻防实践》第2次作业
  • #3
  • 苹果账户ID被盗客服咨询AI流量赋能,重塑智能体验新标杆 - 王老吉弄
  • bin文件详解
  • 移动端部署新选择:VL2Lite蒸馏技术如何让3B小模型跑出VLM大模型的性能?
  • 第14章 MCP —— 让 AI 连接世界
  • 2026年 空气源热泵厂家推荐排行榜:分布式能源热泵系统、高效空气源热泵、别墅/住宅/酒店/学校/医院/办公楼冷暖系统设计 - 品牌企业推荐师(官方)
  • elasticsearch的安装ansj插件时候词典路径读取失败,NotEntitledException
  • 星图AI平台实战:PETRV2-BEV模型训练保姆级教程,5分钟快速上手
  • 20241204 2025-2026-2 《Python程序设计》实验1报告
  • 第15章 AI 产品原型设计 —— 让 AI 成为你的产品经理
  • 2026年塑胶电子门牌优质产品推荐榜:学校兑换柜、学生积分兑换柜、安全积分兑换柜、德育兑换柜、德育积分兑换柜、智慧电子门牌选择指南 - 优质品牌商家
  • 2026年磁力研磨机厂家推荐排行榜:平移式/旋转式/强磁高速/变频调速/全自动/双桶多桶/液压升降磁力研磨机实力甄选 - 品牌企业推荐师(官方)
  • 智慧工地工作人员安全帽防护服防护手套防护靴检测数据集VOC+YOLO格式1427张7类别
  • 李超树 学习笔记
  • 开源大模型工程化实践:BERT中文文本分割镜像CI/CD自动化发布流程
  • Qwen1.5-1.8B-GPTQ-Int4效果实测:金融术语理解与财报关键指标提取准确性
  • 2026靠谱充电桩系统平台优质服务商推荐榜:充电桩平台开发、充电桩平台管理系统、充电桩平台系统、充电桩收费管理系统选择指南 - 优质品牌商家
  • 探索光伏与储能电池单相离网系统:直流母线与逆变器的协同魔法
  • 折腾了一周的发票处理,写了两百行代码,最后发现有个工具十分钟就搞定了,我裂开了
  • 基于LLM的智能客服Demo开发实战:从零搭建到生产级优化
  • 在ESP8266 NodeMcu上实现LVGL图形界面的完整指南
  • 3/23
  • 保姆级教程:在Linux上用IGH EtherCAT主站搞定DC同步报文(附sync_datagram实战代码)
  • 当特斯拉遇到洒水车:盘点自动驾驶AI那些让人哭笑不得的误判案例
  • 51单片机热敏电阻测温