
1. 为什么要把四个 Agent 的记忆机制放在一起跑如果你正在给团队选型 AI Agent或者想给自己的项目加一层“长期记忆”大概率会同时刷到 OpenClaw、QwenPaw、Hermes、HiClaw 这四个名字。它们都能让模型跨会话记住东西但记忆的存法、检索方式、写入时机完全不同OpenClaw 把记忆做成可插拔后端Hermes 把记忆当成 Agent 的核心能力QwenPaw 强调每个 Agent 独立记忆加多 Agent 协作HiClaw 则用 Manager 统筹多个 Claw 的记忆隔离。问题在于光看架构图很难判断哪个适合自己。真正落地时你会发现配置项散落在 settings.json、config.toml、环境变量里记忆目录、字符上限、检索权重、压缩阈值这些参数一旦写错Agent 要么记不住要么把上下文撑爆。更麻烦的是四个项目各自要配一套模型 Key调试成本直接翻倍。这篇就按工程视角来先给四个 Agent 各一份可复制的记忆配置骨架再统一走 TaoToken 的 Key/API 通道接入最后用同一组验证请求对比它们的记忆行为。你照着改路径和 Key 就能搭出一个可对比的实验环境不用在四套鉴权体系里反复折腾。2. TaoToken 前置一个 Key 打通四套 Agent 的模型通道四个 Agent 的记忆机制再不同底层都要调 LLM 来做提炼、摘要、检索重排。如果每个项目单独申请 Key、单独配 base_url实验环境会变得很难维护。TaoToken 在这里的作用是提供统一的 API 通道你拿到一个 Key把四个项目的模型入口都指向同一个地址记忆实验的变量就只剩“记忆机制”本身而不是“哪家 Key 又限流了”。先做两件事。第一在控制台创建一个 API Key建议按项目建多个 Key 方便区分调用量# 控制台创建 Key 的入口浏览器打开 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite第二确认你要用的模型名。四个 Agent 对模型的要求不一样OpenClaw 和 QwenPaw 会用到 embedding 做向量检索Hermes 主要靠 FTS5 加 LLM 摘要HiClaw 偏关键词检索。所以选模型时优先挑支持对话且稳定的embedding 单独配。# API 基础地址四个项目统一填这个 https://taotoken.net/api注意API 地址不要加 UTM 参数只有网页入口才带。Key 通过环境变量注入不要硬编码进 settings.json 提交到仓库。接入文档在这里配置项对不上时优先查它https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite3. 四套记忆配置骨架逐项对照下面四份配置只保留记忆相关字段模型通道统一指向 TaoToken。路径按你自己的实际目录改我用的都是相对路径方便迁移。3.1 OpenClaw插件化记忆后端 settings.jsonOpenClaw 的记忆核心是 SQLite 加 Markdown向量检索走 LanceDB 可选扩展。它的记忆是“LLM 通过工具主动调用”的模式所以配置里要显式打开 memory 工具和混合检索权重。{ model: { provider: openai-compatible, base_url: https://taotoken.net/api, api_key_env: TAOTOKEN_API_KEY, chat_model: gpt-4o-mini, embedding_model: text-embedding-3-small }, memory: { backend: sqlitemarkdown, workspace: ./workspace, long_term_file: MEMORY.md, daily_dir: memory, vector_store: { enabled: true, type: lancedb, path: ./workspace/.lancedb }, retrieval: { mode: hybrid, vector_weight: 0.7, keyword_weight: 0.3, top_k: 8, mmr_dedup: true }, decay: { enabled: true, half_life_days: 30, evergreen_protect: true }, flush_on_compress: true } }几个关键点vector_weight和keyword_weight加起来是 1默认 7:3 是 OpenClaw 的推荐值语义召回强但保留 BM25 精确匹配。flush_on_compress打开后上下文压缩前会触发一次记忆刷新让 LLM 把持久事实提炼进 MEMORY.md。evergreen_protect让常青记忆不参与时间衰减适合放用户偏好这类长期有效的信息。3.2 Hermes四层记忆栈 config.tomlHermes 故意不用向量库靠 FTS5 加 LLM 摘要做轻量语义检索所以配置里没有 embedding 项取而代之的是字符硬限制和定时提醒。它的记忆写入是 Agent 自主策展不是全量录制。[model] base_url https://taotoken.net/api api_key_env TAOTOKEN_API_KEY chat_model gpt-4o-mini [memory] store sqlite db_path ./data/hermes.db memory_file MEMORY.md user_file USER.md [memory.limits] memory_max_chars 2200 user_max_chars 1375 [memory.nudge] enabled true interval_seconds 120 [memory.compressor] enabled true phases [trim_tool_output, protect_head, tail_budget, llm_summary, flush_memories] [memory.kepa] enabled true trigger failure_or_correction [memory.search] engine fts5 auto_inject_threshold 0.82memory_max_chars和user_max_chars是 Hermes 最独特的约束写入时超长直接截断逼着 Agent 只记高价值信息。nudge.interval_seconds每 120 秒提醒一次Agent 自己判断有没有值得保存的内容。kepa是失败反向传播只在出错或纠错时触发更新技能定义和提示模板这是其他三家没有的能力。3.3 QwenPaw每 Agent 独立记忆的 settings.jsonQwenPaw 走本地优先路线每个 Agent 有独立 memory 目录多 Agent 之间通过消息传递共享上下文。它的记忆由 Planner 驱动配置重点是 Agent 注册和 Runtime 的向量支持。{ runtime: { base_url: https://taotoken.net/api, api_key_env: TAOTOKEN_API_KEY, chat_model: gpt-4o-mini, embedding_model: text-embedding-3-small, vector_enabled: true }, agents: [ { name: planner, memory_dir: ./agents/planner/memory, role: planner }, { name: executor, memory_dir: ./agents/executor/memory, role: executor } ], memory: { per_agent_isolated: true, share_via_message: true, compress_on_loop: true, mission_mode: { enabled: true, subtask_memory_sink: true } } }per_agent_isolated保证每个 Agent 的记忆目录互不污染share_via_message让协作时上下文通过消息传递而不是共享存储。mission_mode打开后复杂任务会被拆解成子任务子 Agent 执行结果整合后沉淀回记忆。3.4 HiClawManager 统筹的记忆隔离 config.tomlHiClaw 是多 Agent 协作系统Manager-Workers 架构每个 Claw 独立存储记忆由 Manager 统筹检索和写入。它的记忆偏关键词检索配置重点是 Claw 注册和 Manager 的调度参数。[model] base_url https://taotoken.net/api api_key_env TAOTOKEN_API_KEY chat_model gpt-4o-mini [manager] name manager-claw memory_dir ./claws/manager/memory retrieval_mode keyword dispatch_interval_ms 500 [[workers]] name worker-a memory_dir ./claws/worker-a/memory [[workers]] name worker-b memory_dir ./claws/worker-b/memory [memory] isolated_per_claw true manager_curated true matrix_channel #agent-memoryisolated_per_claw是硬隔离每个 Claw 的记忆文件物理分开。manager_curated让 Manager 决定哪些记忆需要跨 Claw 共享matrix_channel是实时通信通道记忆通过消息在 Claw 之间流转。4. 验证请求同一组输入看四家记忆行为配置写完别急着跑复杂任务先用一组最小验证请求确认记忆链路通了。核心思路是第一轮告诉 Agent 一个事实第二轮在新会话里问它记不记得观察是否命中记忆。先设好环境变量四个项目共用export TAOTOKEN_API_KEY你的Key然后对每个 Agent 发两轮请求。以 OpenClaw 为例第一轮写入curl https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -H Content-Type: application/json \ -d { model: gpt-4o-mini, messages: [ {role: user, content: 记住我的项目代号是 falcon部署环境是本地优先。} ] }第二轮换新会话问它项目代号curl https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -H Content-Type: application/json \ -d { model: gpt-4o-mini, messages: [ {role: user, content: 我的项目代号是什么} ] }预期结果分两种。OpenClaw 和 QwenPaw 如果向量检索生效第二轮应该能召回“falcon”Hermes 要看 FTS5 是否命中关键词如果第一轮写入时被字符截断可能只记住部分HiClaw 依赖 Manager 是否把这条记忆标记为可共享。验证时重点看三个信号记忆文件有没有实际写入去 workspace 或 data 目录看 MEMORY.md 和 daily 日志、检索日志里 top_k 命中了哪几条、注入上下文后模型回答是否引用了记忆内容。如果第二轮答不出来先别怀疑模型去查记忆文件是不是空的。想直接对比模型在记忆注入前后的回答差异可以用模型对话页面快速试https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodelsutm_campaignrewrite5. 本篇常见错排查记忆文件写了但检索不到。最常见的原因是 embedding 模型和写入时用的不一致。OpenClaw 的 embedding 缓存 key 是 providermodelhash如果你中途换了 embedding 模型旧向量对不上新查询向量检索自然为空。解决办法是清掉 LanceDB 目录重新索引。Hermes 第二轮答不出来。先看 MEMORY.md 字符数是不是顶到 2200 了。Hermes 写入是截断式的如果第一轮内容太长关键信息可能被截掉。把要记的事实压缩成一句话再试或者调大memory_max_chars但别超过模型上下文预算。QwenPaw 多 Agent 记忆串了。检查每个 Agent 的memory_dir是不是指向了同一个目录。per_agent_isolated打开只是逻辑隔离物理路径还得你自己分开。另外share_via_message打开后记忆是通过消息传递的如果消息通道没配好协作时上下文会丢。HiClaw 的 Manager 不共享记忆。默认manager_curated是 Manager 决定共享哪些如果它判断这条记忆只属于某个 Worker就不会跨 Claw 可见。想强制共享在写入时显式标记或者调 Manager 的策展策略。四个项目都报 401 或 403。大概率是 Key 没注入成功。确认TAOTOKEN_API_KEY在当前 shell 里echo得出来且配置文件里用的是api_key_env而不是直接写 Key。如果用了.env文件注意有些项目不会自动加载需要手动 source。上下文压缩后记忆丢失。OpenClaw 的flush_on_compress和 Hermes 的flush_memories阶段如果没触发压缩时记忆还没落盘就被裁掉了。检查压缩阈值是不是设得太低导致还没到刷新点就压缩了。长期跑编码类 Agent、需要记忆跨天累积的场景可以考虑 Coding Plan调用额度更稳https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite6. 把四套记忆跑成可对比实验的下一步搭好环境后建议用同一组任务分别喂给四个 Agent记录三个指标记忆写入条数、第二轮召回命中率、上下文 token 消耗。OpenClaw 和 QwenPaw 因为有向量检索召回通常更稳但 embedding 有成本Hermes 零额外依赖部署最轻但语义召回弱HiClaw 架构最重适合多 Agent 分布式场景。Key 管理上建议按项目建独立 Key方便在控制台看每个 Agent 的调用量https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewriteClaude Code 这类编码 Agent 如果也要接同一套记忆实验Anthropic 兼容通道在这里https://taotoken.net/claude-code-anthropic?utm_sourcetaotoken_aicg_blog_endutm_contentclaude-code-anthropicutm_campaignrewrite我自己的做法是先把 Hermes 跑通因为它零向量依赖、配置最少能最快确认 Key 和记忆写入链路没问题然后再把同一套 Key 复制到 OpenClaw 和 QwenPaw对比向量检索带来的召回差异。HiClaw 留到最后等单 Agent 记忆调稳了再上多 Claw 协作否则排查问题时变量太多。