
1. OpenClaw 长期记忆缺失GBrain 开源记忆层能补上什么OpenClaw 这类 Agent 跑久了你大概率会遇到同一个尴尬昨天刚跟它聊过的项目背景、上周定下的技术选型、某个客户的偏好今天开新会话它全忘了。OpenClaw 自带的记忆系统记的是偏好、习惯这类表层信息你长期积累下来的知识——笔记、会议纪要、决策记录——根本没被覆盖进去。这个差距决定了 Agent 到底是「一个听话的工具」还是「越用越懂你的第二大脑」。GBrain 就是冲着这个缺口来的开源记忆层。它的核心设计叫「compiled truth timeline」翻译过来是「当前判断 时间线」每个人、每家公司、每个项目都有独立的一页 Markdown 文件上半部分写当前最准确的结论下半部分只追加不修改地记录时间线。普通笔记是纯追加式的时间一长就变成一堆碎片你根本找不到「现在最新的结论在哪」这套结构把结论和证据强制分开Agent 才有办法持续更新、持续调取。它适合谁如果你已经在用 OpenClaw 或 Hermes Agent 跑工作流手里又攒了一堆 Markdown 笔记、会议记录、日历数据那 GBrain 基本就是为你准备的。它把对话和资料沉淀成可检索的 Markdown 知识库Agent 每次提问先去这个库里查一遍再回答。本文要交付的是GBrain 的部署配置、OpenClaw 的记忆读写接入代码以及通过 TaoToken 统一 Key 调用模型完成记忆摘要的可复制步骤与验证动作。整套流程走下来你会得到一个能记住你长期知识的 Agent。需要提前说清楚两个门槛。第一GBrain 对模型能力要求偏高官方测试跑通的是 Claude Opus 4.6 和 GPT-5.4 Thinking 这类强模型小模型在摘要和实体抽取环节容易出错。第二数据得你自己灌进去会议要录、笔记要存、日历要导冷启动确实不轻松。但只要你愿意把知识沉淀成 Markdown后面的检索和调用就是自动化的。2. TaoToken 前置准备统一 Key 与模型接入配置GBrain 的记忆摘要、实体抽取、dream cycle 整理全都要调模型。如果你每个环节都单独配一家厂商的 Key管理成本会很高而且模型切换时改配置很烦。TaoToken 的价值就在这里一个统一 Key通过 OpenAI 兼容接口调用多家模型GBrain 和 OpenClaw 都指向同一个 Base URL 就行。先拿 Key。打开 https://taotoken.net/api-keys 登录后创建一个 API Key复制保存好后面配置里会反复用到。注意这个 Key 只在创建时完整显示一次丢了就得重建。拿到 Key 之后你需要确认三件事我把它整理成一张对照表配置时逐项核对配置项值说明Base URLhttps://taotoken.net/apiOpenAI 兼容接口地址不加任何 UTM 参数API Keysk-开头的一串从 API Keys 页面获取Model ID如claude-opus-4-6/gpt-5.4-thinking按 GBrain 摘要任务选强模型这里有个坑要提前避开Base URL 末尾不要带/v1也不要带斜杠。很多 OpenAI SDK 会自动拼/v1/chat/completions你手动加了/v1反而会变成/v1/v1/...直接 404。TaoToken 的接口地址就是https://taotoken.net/apiSDK 会自己补全路径。如果你还没决定用哪个模型可以先到 https://taotoken.net/models 看看当前可用的模型列表和上下文长度。GBrain 的 dream cycle 要处理长文档建议选上下文窗口大的模型否则一页 Markdown 塞进去就被截断了。环境变量建议这样设避免把 Key 硬编码进代码export TAOTOKEN_API_KEYsk-你的key export TAOTOKEN_BASE_URLhttps://taotoken.net/api export GBRAIN_MODELclaude-opus-4-6设完之后用echo $TAOTOKEN_API_KEY确认一下有没有生效。如果你用的是 Windows PowerShell把export换成$env:语法。这一步看着简单但后面 GBrain 和 OpenClaw 都读这几个变量配错了排查起来很费时间。3. GBrain 部署与 OpenClaw 记忆读写接入配置这一节是全文的技术核心我会把 GBrain 的安装、数据库初始化、OpenClaw 的记忆读写接入以及模型调用配置全部串起来。你按顺序操作即可。3.1 安装 GBrain 与初始化本地库GBrain 依赖 Bun 运行时先装 Buncurl -fsSL https://bun.sh/install | bash source ~/.bashrc装完验证一下bun --version能输出版本号就对了。接着拉取 GBrain 并初始化bun add github:garrytan/gbrain gbrain initgbrain init会在本地建一个数据库大约两秒就绪。默认是本地 SQLite适合笔记量在 1000 个文件以内的场景。如果你笔记超过 1000 个或者有多设备访问需求建议迁移到 Supabase 云端数据库迁移命令在 GBrain 的 README 里有说明。初始化完成后导入你的 Markdown 笔记目录gbrain import ~/notes导入过程会解析每个 Markdown 文件按「compiled truth timeline」结构建立索引。导入完成后可以先用 CLI 验证检索效果gbrain query 上次讨论的架构选型如果这条命令能返回相关笔记片段说明 GBrain 本体已经跑通了。接下来才是关键让 OpenClaw 能读写这个记忆库。3.2 OpenClaw 记忆读写接入配置OpenClaw 通过一个配置文件声明记忆后端。在 OpenClaw 的配置目录下创建或修改memory.toml路径通常是~/.openclaw/memory.toml[memory] backend gbrain gbrain_path /Users/你的用户名/.gbrain/db.sqlite [memory.read] enabled true top_k 5 min_score 0.35 [memory.write] enabled true auto_capture true capture_roles [user, assistant] [model] base_url https://taotoken.net/api api_key_env TAOTOKEN_API_KEY model_id claude-opus-4-6这份配置里三件套齐全Base URL 指向 TaoToken 的https://taotoken.net/apiKey 从环境变量TAOTOKEN_API_KEY读取Model ID 指定摘要用的强模型。top_k 5表示每次检索返回最相关的 5 条记忆min_score是相似度阈值低于这个分数的记忆不会被塞进上下文避免噪声干扰。如果你更习惯用 JSON 配置等价写法是这样{ memory: { backend: gbrain, gbrain_path: /Users/你的用户名/.gbrain/db.sqlite, read: { enabled: true, top_k: 5, min_score: 0.35 }, write: { enabled: true, auto_capture: true } }, model: { base_url: https://taotoken.net/api, api_key_env: TAOTOKEN_API_KEY, model_id: claude-opus-4-6 } }两种格式选一种就行别同时存在否则 OpenClaw 加载时会报配置冲突。3.3 记忆摘要的模型调用代码GBrain 的 dream cycle 需要调模型把当天对话摘要成结构化记忆。下面这段 Python 代码演示如何通过 TaoToken 完成一次记忆摘要你可以把它挂到定时任务里import os from openai import OpenAI client OpenAI( base_urlos.environ[TAOTOKEN_BASE_URL], api_keyos.environ[TAOTOKEN_API_KEY], ) def summarize_to_memory(raw_dialogue: str) - str: prompt f把下面的对话整理成一条记忆按以下格式输出 ## 当前判断 一句话结论 ## 时间线 - 日期发生了什么 对话内容 {raw_dialogue} resp client.chat.completions.create( modelos.environ[GBRAIN_MODEL], messages[{role: user, content: prompt}], temperature0.2, ) return resp.choices[0].message.content if __name__ __main__: sample 今天和张工确认了数据库从 MySQL 迁到 PostgreSQL下周三前完成迁移脚本。 print(summarize_to_memory(sample))这段代码的关键点base_url用 TaoToken 的接口地址model从环境变量读temperature压到 0.2 让摘要更稳定。跑通之后把返回的 Markdown 写回 GBrain 对应的档案页即可。4. 验证请求确认记忆读写与模型调用都通了配置写完不代表跑通得一步步验证。我按「先模型、再记忆、后联动」的顺序来每步都有明确的成功标志。第一步验证 TaoToken 模型调用。用 curl 直接打一次接口排除 SDK 层面的干扰curl https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -H Content-Type: application/json \ -d { model: claude-opus-4-6, messages: [{role: user, content: 回复两个字通了}] }成功的话你会看到一段 JSONchoices[0].message.content里是「通了」。如果返回 401说明 Key 有问题返回 404多半是 Base URL 写错了。第二步验证 GBrain 检索。往笔记目录里放一个测试文件test-memory.md内容写「项目代号蓝鲸。技术栈Rust WebAssembly。」然后重新导入并查询gbrain import ~/notes gbrain query 蓝鲸项目用什么技术栈成功标志是返回结果里包含Rust WebAssembly。如果查不到检查文件是不是.md后缀以及gbrain import的路径对不对。第三步验证 OpenClaw 联动。启动 OpenClaw开一个新会话问它「蓝鲸项目用什么技术栈」。如果 OpenClaw 能答出Rust WebAssembly说明记忆读取链路通了。再跟它聊几句新内容等 dream cycle 跑完或手动触发用gbrain query查新内容有没有被写进去验证写入链路。第四步验证摘要质量。手动跑一次第 3.3 节的摘要脚本看输出的 Markdown 是不是「当前判断 时间线」结构。如果模型把结论和时间线混在一起说明 prompt 需要调整或者模型能力不够换更强的 Model ID 再试。四步都过了整套「OpenClaw GBrain TaoToken」的记忆层就算真正跑起来了。这时候你再跟 Agent 聊长期项目它会先去 GBrain 里查一遍再回答而不是从零开始。5. 常见报错排查401、local proxy failed、reading choices、OAuth配置过程中最容易卡在几个固定报错上我把真实遇到过的整理出来对照着排查能省不少时间。401 Unauthorized。这个最常见九成是 Key 的问题。先确认echo $TAOTOKEN_API_KEY有输出再确认 Key 没有多余空格或换行。如果你把 Key 写进了配置文件而不是环境变量检查有没有被引号包错。还有一种情况Key 创建后没复制完整只复制了前半段。到 https://taotoken.net/api-keys 重新生成一个完整复制。local proxy failed。这个报错通常出现在 OpenClaw 启动时意思是它连不上配置的 Base URL。检查memory.toml里的base_url是不是https://taotoken.net/api末尾有没有多余的斜杠或/v1。另外确认你的网络能正常访问这个地址用curl -I https://taotoken.net/api看能不能拿到响应头。reading choices of undefined。这是 OpenAI SDK 的经典报错意思是返回的 JSON 里没有choices字段。原因通常是接口返回了错误信息而不是正常响应但代码直接去读resp.choices[0]。排查方法在调用后先打印完整响应print(resp)看实际返回了什么。多数情况是模型 ID 写错了或者 Base URL 拼成了/v1/v1/...。OAuth 相关报错。如果你在配置里看到 OAuth 字样说明某个环节还在走旧的鉴权流程。TaoToken 用的是 Bearer Token不需要 OAuth。检查配置文件里有没有残留的oauth_token或auth_type oauth字段删掉改成api_key_env TAOTOKEN_API_KEY。模型返回空内容。有时候请求成功了但content是空字符串。这通常是模型把内容放进了reasoning_content字段思考型模型的特性。处理办法是优先读content为空时再读reasoning_content。或者换一个非思考型模型做摘要任务。GBrain 导入后查不到。先确认文件是.md后缀再确认gbrain import的路径没有写错。如果笔记里有大量非 UTF-8 编码的文件导入会跳过用file -I 文件名检查编码转成 UTF-8 再导入。排查的核心思路就一条先确认模型调用通不通curl 直打再确认 GBrain 本体通不通CLI 查询最后确认两者联动通不通OpenClaw 问答。分层排查别一上来就怀疑整个链路。6. 长期编码与 Agent 场景把记忆层用起来记忆层跑通只是起点真正让它产生价值的是日常使用习惯。我自己的做法是每天结束前让 OpenClaw 把当天的对话和笔记过一遍通过 TaoToken 调模型摘要成结构化记忆写回 GBrain。第二天开新会话Agent 自动带着昨天的上下文不用我重复交代背景。如果你要长期跑编码类 Agent比如让 OpenClaw 持续维护一个项目记忆层的作用会更明显。项目决策、踩过的坑、接口约定全部沉淀成 MarkdownAgent 每次改代码前先查一遍避免重复犯错。这种场景建议用 Coding Plan 这类长期方案配合 TaoToken 的统一 Key模型调用成本可控也不用频繁换 Key。接入文档在 https://taotoken.net/doc 里面有各语言 SDK 的完整示例和参数说明。模型对话调试可以到 https://taotoken.net/chat 直接在网页上试 prompt 效果确认摘要格式对了再写进代码。如果你用 Claude Code 做主力编码工具它的接入配置在 https://taotoken.net/claude-code 有专门说明Base URL、Key、Model ID 三件套填法和我上面写的一致。最后说个实用技巧GBrain 的档案页是纯 Markdown你可以直接用 Git 管理。每次 dream cycle 写入后自动 commit这样记忆的演变过程本身也成了可追溯的历史。哪天 Agent 给出了奇怪的结论你能翻 commit 记录看它是从哪条记忆推出来的。这比黑盒式的向量数据库透明得多也是 GBrain 用 Markdown 做存储的聪明之处。