每个给自己的 Agent 设置过夜间复盘的人,都冒出过同样的想法:让它夜里自己总结,明天醒来更聪明。
我也是。Hermes 和 OpenClaw 是两款流行的 Agent 运行时,负责真正唤醒 Agent、执行工具并把结果传回来。Hermes 可以用 cron 定时触发。OpenClaw 有 Dreaming 机制,能把短期信号合并为长期记忆候选项。但跑了一段时间后我发现,如果每个运行时只把东西存进自己的地盘,到头来就是两个 Agent 各记各的日记。
一个真正能用的系统,得把三件事分开:
所以我最终在 Hermes 和 OpenClaw 之上加了一层 gbrain。
Hermes 和 OpenClaw 是平级运行时。它们跑循环、调工具、按计划触发、把结果返回给我。gbrain 不同:它是一个开源的结构化知识层。它可以自己跑数据摄入、Dreaming 周期,甚至在上面跑完整的 Agent。但在这种配置里,我不把它当运行时用。我只用它干一件事:决定今天发生的事明天该怎么呈现。
这篇文章和开启某个 Dreaming 功能无关。
讲的是如何用 gbrain 在你的运行时之上构建一个共享的 AI 第二大脑,不管你是用 Hermes 还是 OpenClaw。
- 先把三层拆开
我现在把整个系统拆成三层:
这三层不能混在一起。
Hermes / OpenClaw:干活的
Hermes 适合按固定计划唤醒的个人 Agent 循环:晨间摘要、夜间审计、定期检查,结果推回 Telegram、Slack 或 CLI。
一个普通的 Hermes 会话有自己的持久记忆:会话启动时注入的 MEMORY.md / USER.md,加上按需搜索历史对话的 session_search 工具。
Cron 不一样。Hermes 的 cron 任务由网关守护进程触发,每次运行都会启动一个全新的 Agent 会话,不会继承你当前的聊天上下文。当前实现中 cron 任务也会跳过记忆提供方(默认 skip_memory=True)。所以凌晨 1 点的任务必须自带上下文:一个自包含的 Prompt、context_from、workdir 或 context 文件,或者直接从 gbrain 读取。
我自己的使用中,OpenClaw 更适合工作区 / 频道路由 / 多 Agent / Dreaming 层。它的记忆也是基于文件的:MEMORY.md 是精炼的 curated 层,日常笔记是工作层。
OpenClaw 还有 Dreaming,一个后台记忆整合机制,可选,默认关闭。内部有三个阶段(Light / REM / Deep),只有 Deep 阶段会把持久的候选项写入 MEMORY.md。有用,但仍然是单一运行时内部的整合。
所以 Hermes 醒来跑起来,OpenClaw 醒来跑起来,但光靠它们自己拼不成一个共享大脑。它们是干活的双手。大脑得坐在它们上面一层。
- 为什么需要 gbrain 作为第三层
一开始我以为夜间复盘就够了。
实际上不够。
Agent 确实总结了。但下次会话不一定能在需要时找到那个总结。
有一天,一个知名开发者在我们的 AI 风回复下反应很糟。那晚,Agent 已经记录了:
如果这句话只留在某个运行时的 cron 输出或日常记忆里,下次不同运行时接手任务,或者你换到另一台机器,这条教训就丢了。就算你手动同步两个 MEMORY.md 文件,长期记忆也会慢慢跑偏。
所以我在上面加了 gbrain。
先说明一点:OpenClaw 和 Hermes 本身已经有记忆了。OpenClaw 有日常笔记、MEMORY.md、memory_search / memory_get、Dreaming,以及 Active Memory(在符合条件的交互式会话里,主回复前会跑一个阻塞式的召回子 Agent,拉取相关记忆)。Hermes 有 MEMORY.md / USER.md 和 session_search。
所以如果你只跑其中一个,它自己的记忆足够起步。你暂时不需要 gbrain。
gbrain 解决的是下一步:当你同时跑 Hermes 和 OpenClaw,或者以后会切换运行时,一个长生命周期的对象的状态不应该存在两份副本里慢慢漂移。它是一个开源的结构化知识层,位于任何单个运行时之外:
Hermes 能读它。
OpenClaw 能读它。
夜间任务能写它。
审计任务能修改它。
下一个醒来的 Agent 会从同一个大脑页面上读取。
多个运行时共享一个大脑。这开始有点第二大脑的感觉了。
- 第二大脑是关于一个当前状态
现在我看到一条信息时,不会先想“该不该存它”。我先想“该放进哪一层”。
我把信息分为五种归宿:
例子:
最重要的是第三层。一个 gbrain 页面表明这个对象当前是什么。它记录一个人、一家公司、一个项目、一个概念、一份写作资产的最新状态。比如:
这类信息不应该锁在任何一个运行时里。谁接下来需要它,取决于任务,而不是它恰好在哪。
无论哪个 Agent 下次醒来,都应该能读到相同的当前状态。这就是为什么需要那一层在运行时之外。
- gbrain 最棒的部分是页面结构
我第一次看 gbrain 时,最吸引我的是每个页面一分为二。上半部分是 Compiled Truth,下半部分是 Timeline,中间一条单行 --- 隔开。
推荐的 gbrain schema 说得很清楚:每个大脑页面有两层。横线以上是 Compiled Truth,始终是当前状态,新信息来了就重写。横线以下是 Timeline,只追加,是证据日志。
问“当前状态是什么”,读上面。问“发生了什么”,读下面。
这很适合 Agent。Agent 记忆最大的问题是:光有结论没有置信度,而原始日志又迫使 Agent 每次都要从头推理。这两部分正好解决了这个问题。Compiled Truth 是当前的最佳判断,供下一个 Agent 快速接手。Timeline 则是用于审计、冲突检测和重写的证据链。
所以我不会让 Agent 把长期知识写成散文。我会让它写成这样的页面:
顶部是当前结论。底部是证据链。
新证据只需追加到 Timeline。如果它改变了判断,就重写上半部分。这样 Agent 就不必每次都从日志里重新做一遍研究员的工作。
- 如何将运行时接入同一个大脑
我现在倾向的设计:
接线可以保持简单:
第二天早上,任何运行时都不用手动加载一大包文件。每个运行时加一条启动规则就够了。启动层只保留最精简的身份、原则和边界。当提到一个人、公司、项目或概念时,先从 gbrain 读取其当前状态。当运行时需要自己的历史记录时,调用自己的记忆或搜索工具。无头 cron 任务则显式携带自己的上下文。
我个人会连续运行两个夜间任务,在提升前手动审查一次。这只是我的接线方式,不是架构的硬性要求。
在这个设置中,Hermes 和 OpenClaw 是平级的,各自适合不同的工作。一个更适合个人 cron 和交付,另一个更适合工作区/频道/记忆核心/Dreaming。但长期知识不应被锁定在任何一方。把它放在运行时之上,一旦你的运行时都指向同一个 gbrain(无论是一个还是多个),长期记忆就不会在会话重启、机器更换和运行时切换中漂移。
- 值得保存:一条信息该放哪里
我现在用的表格:
最容易让人困惑的是这两条。"下次回复短一点"更接近行为规则,所以可以放进运行时记忆。"某个开发者为什么对 AI 回复敏感、之前发生过什么、当前关系状态"则更接近大脑页面。
前者是下次该怎么行动。后者是这个对象当前是什么状态。很多人把两者都塞进 MEMORY.md,结果 MEMORY.md 很快就变成一锅粥。
再给一条简单规则:提醒事项归调度器管,不归大脑管。"下周三检查账单更新"是定时任务或未闭环事项;那个客户的 gbrain 页面只保存当前状态、证据和行动边界。OpenClaw 也做了类似的拆分:精确的时间点归 Scheduled Tasks,需要完整上下文的定期检查归 Heartbeat,从对话中推断出的短期跟进归 commitments。
- 值得保存:记忆候选卡片
当夜间审查发现某个可能值得保留的内容时,我不会让 Agent 直接写入长期记忆。它会先填写这张卡片:
字段可以更详细,但第一次只需要这几行。
这张卡片迫使 Agent 回答一个问题:这到底会如何改变未来的行为或判断?如果答不上来,就不要提升。
- 值得保存:gbrain 写入规则
这些规则直接来自 gbrain 的推荐 schema。它们是最值得复制的那部分。每次写入前都过一遍:
最后一条最重要。不要写"客户 A 很着急。"要写:
带有范围、过期时间和行动边界的记忆,才是 Agent 真正能用的。有一点需要注意:这只是在边界上写下来供 Agent 读取,不是执行层。硬性拦截仍然来自运行时审批设置、沙箱、工具策略或定时任务配置。
- 夜间学习应该产出的三样东西
我现在对 Nightly Learning 的要求很明确:产出三样东西。
不要"总结今天发生了什么",试试:
睡眠学习真正产出的是:把今天的经验编译成明天可用的当前状态。
- 如何判断第二大脑是否真的建成了
最后,我不会数它存了多少东西。我会看五个问题:
如果这些问题答案不确定,你缺的很可能是一个运行时无关的知识层。多加几个 cron 或记忆插件是补不上这个差距的。
用一句话总结。如果你只运行一个运行时,它自己的记忆就够了。但当你同时运行 Hermes 和 OpenClaw 时,一个真正的问题就出现了:谁来维护不属于任何一个运行时的当前状态?
对我来说,这一层就是 gbrain。它还在迭代中。我还没搞定两个运行时候选合并的时机,所以目前是两个夜间任务先后运行,我在提升前手动审查一次。但我确定的方向是:长期知识层必须独立于运行时。
从这里开始
今晚做三件事:
不要一开始就迁移所有历史。先让一个循环跑起来:
一旦这条链路跑通,你就真正拥有了一个 AI 第二大脑。不绑定任何运行时。换 Hermes、换 OpenClaw、换别的,大脑都在。
别让你的 Agent 每天早上醒来都像第一天一样。也别让每个新会话醒来就忘了上一个会话学到的东西。
更多 Agent 构建笔记,我会边做边写。关注 @Voxyz_ai。每周更新,完整笔记见 voxyz.ai/insights。
希望对你有用。Vox ❤
参考资料
Hermes Memory:持久记忆 / session_search
Hermes Cron:新会话 / context_from / gateway 调度器
OpenClaw Memory:记忆概览
OpenClaw Dreaming:记忆核心整合
gbrain Schema:Compiled Truth + Timeline