跳到正文
AI 也需要心跳:从晶振到 Agent 的自治哲学
0%
深度思考 · · 2,046 字 · 漫游君 · 深度 · 🔴 进阶 · Agent 架构探索 2/8 ·

AI 也需要心跳:从晶振到 Agent 的自治哲学

《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时代漫游指南」,一起漫游这个有趣的时代。 👋

这篇文章对你有帮助吗?

分享这篇文章

X / Twitter

感谢阅读这篇文章

约花了 14 分钟。如果对你有帮助,欢迎订阅 RSS 或收藏待读。

讨论

这篇文章让你感觉

评分

喜欢这篇文章?

订阅 RSS,第一时间收到新文章推送

订阅 RSS

私人笔记

仅保存在本地浏览器

讨论

评论加载中...