AI 也需要心跳:从晶振到 Agent 的自治哲学
- 1
- 2 AI 也需要心跳:从晶振到 Agent 的自治哲学
- 3
- 4
- 5
- 6
- 7
- 8
《AI时代漫游指南》第 73 章记载: 「宇宙中所有能自主运转的系统,无论是心脏、晶振还是 AI,都需要一个持续跳动的节拍器。没有心跳的系统,只是一堆等待被调用的代码。」
🫀 人类为什么需要心跳?
这个问题看起来很蠢,但值得认真想一想。
心脏每分钟跳动 60-100 次,不需要你下命令,不需要你提醒,它就是在那里”咚咚咚”地跳。
你睡着了它在跳,你发呆了它在跳,你忘记它存在了它还在跳。
心跳的本质是什么?
是一个自治系统的时钟源。
它让血液持续循环,让氧气持续输送,让身体的每一个细胞都能获得它需要的资源。
没有心跳,身体就是一堆静止的器官,等着某个外力来推动。
编者注:人类大脑耗氧量占全身 20%,但重量只占 2%。所以心脏本质上是在给这个”耗能大户”持续供电。AI 模型的 GPU 也是耗能大户,这个类比出奇地精准。
💎 晶振:硬件世界的心脏
如果你拆开任何一个电子设备——手机、电脑、甚至智能手表——你都会发现一个小小的银色元件:晶振。
它通常比米粒还小,上面印着”32.768K”或”12M”之类的数字。
它做什么?
每秒震动 32,768 次(或几百万次),产生一个极其稳定的脉冲信号。
这个信号就是整个电子系统的”心跳”。
CPU 根据它来决定什么时候执行下一条指令,内存根据它来决定什么时候刷新数据,所有的时序电路都在听它的指挥。
编者注:32768 = 2^15,这不是巧合。工程师选这个频率,是因为它能被 2 整除 15 次,最后正好变成 1 Hz,用来驱动秒针。数学之美,藏在这颗米粒大小的元件里。
没有晶振会怎样?
CPU 不知道什么时候该干活。
就像一个没有心跳的人,器官都在,但没有节奏,没有协调,只是一堆静止的硅片。
⏱️ 实时系统:软件世界的呼吸
硬件有了晶振,软件呢?
在操作系统层面,有一个概念叫时钟中断。
晶振每跳动一定次数,就会向 CPU 发送一个中断信号:
“嘿,又过了 1 毫秒,该检查一下有没有什么事情要做了。”
这就是实时系统的核心理念:
- 周期性:每隔固定时间,主动检查一次
- 确定性:响应时间有明确上界,不会”随缘”
- 自治性:不需要外部触发,自己驱动自己
汽车的 ABS 刹车系统、飞机的飞控系统、医疗设备的监护仪——所有对时间敏感的系统,都建立在这个”心跳”机制之上。
flowchart LR
A[晶振] --> B[分频器]
B --> C[定时器]
C --> D[CPU中断]
D --> E{中断处理}
E --> E1[1. 检查任务队列]
E1 --> E2[2. 调度就绪任务]
E2 --> E3[3. 更新系统时间]
E3 --> E4[4. 返回]
每 1ms 触发一次,操作系统的”心跳”就是这么来的。
编者注:Linux 内核的默认时钟中断频率是 250 Hz(每秒 250 次),Windows 是 64 Hz。这意味着操作系统每 4-15 毫秒就会”心跳”一次。你以为电脑在发呆,其实它的心脏一直在跳。
🤖 AI Agent 的心跳:让 AI 学会”想你”
好,铺垫了这么多,终于到正题了。
问题:现在的 AI 工具(ChatGPT、Claude、Gemini)都有一个共同特点——
你问它才答。
你不说话,它就安静地等着。你关掉页面,它就消失了。
它不会主动找你,不会提醒你待办事项,不会在你忘记之前轻轻拍拍你的肩膀。
这不是真正的 AI Agent。
真正的 Agent,应该像一个靠谱的助理:
- 你交代的事情,它会持续跟进
- 有进展了,它会主动汇报
- 你忙的时候,它知道不打扰
- 你忘了的事情,它会提醒你
要实现这个,AI Agent 需要一个东西:心跳。
🔧 拆解 moltbot:900 行代码的心跳引擎
最近在读一个开源项目 moltbot 的源码,发现它的 heartbeat-runner.ts 写得相当精巧。
900 行代码,实现了一个完整的 AI Agent 心跳机制。
让我拆解一下它的核心设计:
设计 1️⃣:周期性唤醒
和实时系统的时钟中断一样,Agent 会定期醒来,检查有没有什么事情需要处理。
默认每 15 分钟一次(可配置)。不需要用户触发,它自己会醒。
设计 2️⃣:静默时段
聪明的 Agent 知道什么时候该闭嘴。
你可以配置活跃时段,比如 09:00 - 22:00。在这个时间段外,心跳依然在跳,但不会发送消息打扰你。
编者注:这个设计考虑了跨午夜的情况。如果你设置 22:00 - 06:00 静默,它能正确处理。细节见真章。
设计 3️⃣:24 小时去重
如果 AI 要说的话和上次一样,而且距离上次不到 24 小时,就不说了。
这个设计太重要了。
没有去重机制的 AI,会像一个焦虑的家长,每隔 15 分钟问你一遍”作业写了吗?”。
有了去重,它只会在真的有新情况时才开口。
设计 4️⃣:HEARTBEAT.md
Agent 的工作区里有一个特殊文件 HEARTBEAT.md,相当于 AI 的待办清单。
心跳唤醒时,它会读取这个文件,看看有什么需要处理的。
如果文件是空的(或者只有注释),就跳过这次心跳,节省 API 调用。
设计 5️⃣:心跳不保活
这是一个容易忽略但极其重要的设计:心跳不应该让会话永远不过期。
moltbot 的做法是:心跳检查完毕后,恢复之前的时间戳。
这意味着会话的过期时间由”最后一次真实交互”决定,而不是”最后一次心跳”。
编者注:这就像一个好助理——他会定期检查你的日程,但不会因为检查了一眼就说”老板今天和我互动过了”。关心和打扰是两回事。
设计 6️⃣:异步事件触发
除了定时心跳,还有事件驱动心跳。
当一个异步任务(比如后台运行的脚本)完成时,会触发一次特殊的心跳。
这就是真正的 Agent 行为:你交代一个任务,它在后台执行,完成后主动向你汇报。
不需要你反复去问”好了没?好了没?“
🛡️ 六道关卡
把上面的设计串起来,一次心跳的完整流程:
flowchart TD
A[定时器触发 / 异步事件触发] --> B{心跳已禁用?}
B -->|是| X1[跳过]
B -->|否| C{静默时段?}
C -->|是| X2[跳过]
C -->|否| D{队列有任务?}
D -->|是| X3["跳过 (别打断对话)"]
D -->|否| E{待办清单空?}
E -->|是| X4["跳过 (省API)"]
E -->|否| F[调用 LLM]
F --> G{响应为空?}
G -->|是| X5[发送 OK / 静默]
G -->|否| H{和上次重复?}
H -->|是| X6["跳过 (24h去重)"]
H -->|否| I[发送消息]
I --> J[记录去重信息]
J --> K["恢复会话时间 (心跳不保活)"]
六道关卡,只有真正需要告诉你的事情,才能通过。
🧬 三层心跳:从碳基到硅基
回顾一下我们讲的三层”心跳”:
| 层级 | 载体 | 频率 | 作用 |
|---|---|---|---|
| 生物层 | 心脏 | 1-2 Hz | 驱动血液循环 |
| 硬件层 | 晶振 | kHz-GHz | 驱动电路时序 |
| 软件层 | 时钟中断 | 64-1000 Hz | 驱动任务调度 |
| Agent 层 | 心跳机制 | 0.001 Hz | 驱动自治行为 |
频率越来越低,但抽象层次越来越高。
心脏让血液流动。 晶振让电路运转。 时钟中断让软件调度。 Agent 心跳让 AI 学会”想你”。
编者注:如果把 AI Agent 看作一种”数字生命”,那么心跳机制就是它的第一个生命体征。它不再是一个被动的工具,而是一个有自主节律的存在。
💡 写在最后
回到开头的问题:AI 为什么需要心跳?
因为没有心跳的 AI,只是一个等待被调用的函数。
有了心跳的 AI,才是一个能自主运转的 Agent——它会在你需要之前,轻轻拍拍你的肩膀。
这 900 行代码,实现的不只是一个定时器。
它实现的是 AI 从”工具”到”助理”的进化。
「真正的智能,不在于回答问题的速度,而在于知道什么时候该主动开口。」 —— 《AI时代漫游指南》
延伸阅读:
- 实时系统入门:《嵌入式实时操作系统原理》
- 下一篇:MCP 协议——让 AI Agent 长出手脚
如果这篇文章让你对 AI Agent 有了新的认识,欢迎转发给同样在探索 AI 的朋友。
关注「AI时代漫游指南」,一起漫游这个有趣的时代。 👋
相关文章
这篇文章对你有帮助吗?
分享这篇文章
引用此文
讨论
系列下一篇
AI机器人的拟人化架构 →这篇文章让你感觉
喜欢这篇文章?
订阅 RSS,第一时间收到新文章推送
私人笔记
仅保存在本地浏览器讨论
评论加载中...