知识学习 / 工作流案例

如何为你的 OpenClaw/Hermes 搭建一个在睡眠中自主学习的 AI 第二大脑(完整指南)

初级到中级 首次搭建后持续迭代 @Voxyz_ai
结果

把 Hermes / OpenClaw 运行层与 gbrain 知识层分离 + 夜间回顾后统一沉淀共享第二大脑 | AI second brain workflow

适合谁

运行多个 agent runtime 的高级用户 / 想做跨 runtime 长期记忆层的人

每个给自己的 Agent 设置过夜间复盘的人,都冒出过同样的想法:让它夜里自己总结,明天醒来更聪明。

我也是。Hermes 和 OpenClaw 是两款流行的 Agent 运行时,负责真正唤醒 Agent、执行工具并把结果传回来。Hermes 可以用 cron 定时触发。OpenClaw 有 Dreaming 机制,能把短期信号合并为长期记忆候选项。但跑了一段时间后我发现,如果每个运行时只把东西存进自己的地盘,到头来就是两个 Agent 各记各的日记。

一个真正能用的系统,得把三件事分开:

所以我最终在 Hermes 和 OpenClaw 之上加了一层 gbrain。

Hermes 和 OpenClaw 是平级运行时。它们跑循环、调工具、按计划触发、把结果返回给我。gbrain 不同:它是一个开源的结构化知识层。它可以自己跑数据摄入、Dreaming 周期,甚至在上面跑完整的 Agent。但在这种配置里,我不把它当运行时用。我只用它干一件事:决定今天发生的事明天该怎么呈现。

这篇文章和开启某个 Dreaming 功能无关。

讲的是如何用 gbrain 在你的运行时之上构建一个共享的 AI 第二大脑,不管你是用 Hermes 还是 OpenClaw。

  1. 先把三层拆开

我现在把整个系统拆成三层:

这三层不能混在一起。

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 醒来跑起来,但光靠它们自己拼不成一个共享大脑。它们是干活的双手。大脑得坐在它们上面一层。

  1. 为什么需要 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 会从同一个大脑页面上读取。

多个运行时共享一个大脑。这开始有点第二大脑的感觉了。

  1. 第二大脑是关于一个当前状态

现在我看到一条信息时,不会先想“该不该存它”。我先想“该放进哪一层”。

我把信息分为五种归宿:

例子:

最重要的是第三层。一个 gbrain 页面表明这个对象当前是什么。它记录一个人、一家公司、一个项目、一个概念、一份写作资产的最新状态。比如:

这类信息不应该锁在任何一个运行时里。谁接下来需要它,取决于任务,而不是它恰好在哪。

无论哪个 Agent 下次醒来,都应该能读到相同的当前状态。这就是为什么需要那一层在运行时之外。

  1. gbrain 最棒的部分是页面结构

我第一次看 gbrain 时,最吸引我的是每个页面一分为二。上半部分是 Compiled Truth,下半部分是 Timeline,中间一条单行 --- 隔开。

推荐的 gbrain schema 说得很清楚:每个大脑页面有两层。横线以上是 Compiled Truth,始终是当前状态,新信息来了就重写。横线以下是 Timeline,只追加,是证据日志。

问“当前状态是什么”,读上面。问“发生了什么”,读下面。

这很适合 Agent。Agent 记忆最大的问题是:光有结论没有置信度,而原始日志又迫使 Agent 每次都要从头推理。这两部分正好解决了这个问题。Compiled Truth 是当前的最佳判断,供下一个 Agent 快速接手。Timeline 则是用于审计、冲突检测和重写的证据链。

所以我不会让 Agent 把长期知识写成散文。我会让它写成这样的页面:

顶部是当前结论。底部是证据链。

新证据只需追加到 Timeline。如果它改变了判断,就重写上半部分。这样 Agent 就不必每次都从日志里重新做一遍研究员的工作。

  1. 如何将运行时接入同一个大脑

我现在倾向的设计:

接线可以保持简单:

第二天早上,任何运行时都不用手动加载一大包文件。每个运行时加一条启动规则就够了。启动层只保留最精简的身份、原则和边界。当提到一个人、公司、项目或概念时,先从 gbrain 读取其当前状态。当运行时需要自己的历史记录时,调用自己的记忆或搜索工具。无头 cron 任务则显式携带自己的上下文。

我个人会连续运行两个夜间任务,在提升前手动审查一次。这只是我的接线方式,不是架构的硬性要求。

在这个设置中,Hermes 和 OpenClaw 是平级的,各自适合不同的工作。一个更适合个人 cron 和交付,另一个更适合工作区/频道/记忆核心/Dreaming。但长期知识不应被锁定在任何一方。把它放在运行时之上,一旦你的运行时都指向同一个 gbrain(无论是一个还是多个),长期记忆就不会在会话重启、机器更换和运行时切换中漂移。

  1. 值得保存:一条信息该放哪里

我现在用的表格:

最容易让人困惑的是这两条。"下次回复短一点"更接近行为规则,所以可以放进运行时记忆。"某个开发者为什么对 AI 回复敏感、之前发生过什么、当前关系状态"则更接近大脑页面。

前者是下次该怎么行动。后者是这个对象当前是什么状态。很多人把两者都塞进 MEMORY.md,结果 MEMORY.md 很快就变成一锅粥。

再给一条简单规则:提醒事项归调度器管,不归大脑管。"下周三检查账单更新"是定时任务或未闭环事项;那个客户的 gbrain 页面只保存当前状态、证据和行动边界。OpenClaw 也做了类似的拆分:精确的时间点归 Scheduled Tasks,需要完整上下文的定期检查归 Heartbeat,从对话中推断出的短期跟进归 commitments。

  1. 值得保存:记忆候选卡片

当夜间审查发现某个可能值得保留的内容时,我不会让 Agent 直接写入长期记忆。它会先填写这张卡片:

字段可以更详细,但第一次只需要这几行。

这张卡片迫使 Agent 回答一个问题:这到底会如何改变未来的行为或判断?如果答不上来,就不要提升。

  1. 值得保存:gbrain 写入规则

这些规则直接来自 gbrain 的推荐 schema。它们是最值得复制的那部分。每次写入前都过一遍:

最后一条最重要。不要写"客户 A 很着急。"要写:

带有范围、过期时间和行动边界的记忆,才是 Agent 真正能用的。有一点需要注意:这只是在边界上写下来供 Agent 读取,不是执行层。硬性拦截仍然来自运行时审批设置、沙箱、工具策略或定时任务配置。

  1. 夜间学习应该产出的三样东西

我现在对 Nightly Learning 的要求很明确:产出三样东西。

不要"总结今天发生了什么",试试:

睡眠学习真正产出的是:把今天的经验编译成明天可用的当前状态。

  1. 如何判断第二大脑是否真的建成了

最后,我不会数它存了多少东西。我会看五个问题:

如果这些问题答案不确定,你缺的很可能是一个运行时无关的知识层。多加几个 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

相关案例