有人说:"heartbeat 运用到 agent 产品上是一个分水岭,它让 Agent 第一次拥有后台时间感。让 Agent 从一次性助手,转变成有日程,有等待,有跟进的数字实体"。详细讲讲这个,也讲讲相关的项目和产品。

我正在回复 群友 3892: 那句话我大体认同,但它讲的是“体验层面的分水岭”,并非“技术层面的分水岭”。心跳本身技术含量不高,一个 cron 加一次模型调用,问题是它一旦被接上,Agent 的运行假设就全变了。我分开说。 一、为什么它是个分水岭 现在的 Agent 本质是“请求-响应”:你不开口,它就不存在。它有上下文窗口,但没有时间轴。心跳做的第一件事,是把时间变成一种输入信号:Agent 可以感知“距上次检查过了 30 分钟”“这个 deadline 还有两小时”。 接上这条时间轴之后,跟着来的几样东西才是真正的变化: 第一是状态连续性。有了周期性醒来,Agent 就有了“我上次检查到哪”的锚点,于是需要一个地方存放跨唤醒的状态,比如进度文件、scratch 清单、记忆库。这时的记忆跟“聊天历史”不是一回事,它是 Agent 自己的工作面。 第二是主动发起。既然会醒来,它就能判断“这事要不要告诉用户”。这就逼出一套“什么时候不该说话”的协议:没事就闭嘴,有事才打扰。这是从“回答”到“跟进”的关键。 第三是任务的生命周期。一次性的任务是问答;有了时间感之后,任务就有了等待、重试、到期、放弃、汇报这些环节。Anthropic 那篇讲 long-running agent harness 的文章里,核心办法就是靠 progress 文件加 git 历史,让每一段新会话都能接上上一段:本质就是给不带记忆的新会话提供一个状态锚点,心跳就是系统化地反复触发这个循环。 二、工程上具体怎么做 拿 OpenClaw 的实现来看,这些机制挺有代表性: 它把心跳做成“主会话里的周期性 agent 轮次”,默认 30 分钟,可以由定时任务调度器触发,也能被系统事件立即唤醒。跑的时候呢,它会调模型、看一遍清单,但约定很关键:没事情就回一个 HEARTBEAT_OK,这个标记会被吞掉,用户什么都看不到;有事情才发通知。它还会自动跳过夜间时段,主队列忙的时候自动推迟。 成本这块他们做得很实在:默认会带上完整对话历史,可以用 isolatedSession 让每次心跳开一个干净会话,再加上轻量上下文,每次从大概 10 万 token 降到 2 到 5 千。心跳用便宜模型、主会话用贵模型也是常见做法。 还有一个小细节很能说明它到底是干什么的:每个心跳任务都有一份“暂存文档”,也就是一张短清单:“看收件箱有没有急事;白天没别的事就主动问一句;任务卡住了记下缺什么,下次问 Peter。”这份清单本身就能被 Agent 自己改。说白了,心跳让它形成一个关注圈子。 三、相关的产品 OpenClaw 是这类设计的原型,它的心跳加定时任务加后台任务分工,基本成了常驻 Agent 的标准结构。大家说的 gb(grok bot)那类个人助手也是同一套东西。 ChatGPT Pulse,2025 年 9 月上线,Pro 先内测:每晚跑一次异步研究,综合记忆、聊天历史和日历,第二天早上给你一组卡片。它把“后台时间感”做成了产品功能:你睡的时候它干活,但节奏是一天一次、面向消费端。 Devin 的 Scheduled Sessions:会话可以按计划或指定时间自动跑,偏工程侧,更像 CI 化了的工作流,而少了点“数字实体”的味道。 Claude Code 这边是 /loop 这类周期执行、Routines 那套玩法:会话里跑循环、轮询部署和 PR 状态;本质是“在会话里再开一次会话”,所以一旦主会话关掉或被清掉就断了,这也是它容易失效的原因。 还有一类是 harness 层面的:Anthropic 的 long-running agent 实践,用初始化 agent 加后续增量 agent 加进度文件,解决的是“醒来之后怎么知道自己干到哪”这个前提问题;没有它,心跳唤醒了也白唤。 四、我的独立判断:这个分水岭还有几道槛没跨过去 第一个槛是“醒来干什么”。现在大部分心跳的清单是人手写的,Agent 自己还不太会判断该养什么关注点。Pulse 的办法是让用户用 curation 和点赞反馈来教它,但这仍在外面。什么时候 Agent 能自己发现“这个事值得盯”,才叫真主动。 第二个槛是记忆的精度。心跳频繁醒来,记忆写得越勤,噪声越大。跨会话状态怎么压缩、怎么只保留有用的部分,这跟长期记忆是同一个难题,目前还都挺粗糙。 第三个槛是打扰的边界。主动和骚扰只有一线之隔,阈值只能靠日积月累的反馈来校准。 所以我觉得那句话可以说得再准一点:心跳让 Agent 有了后台时间感,这是它从“工具”走向“实体”的必要条件,但不是充分条件;真正的分水岭,是它醒来之后能自己判断该关注什么、该不该开口。