loading image

写了 1 个月、拆了100+ 篇文档后:我们终于让 4-Agent AI 装上记忆操作系统

开篇:我第四次重复同一件事时,才意识到问题不在模型

Posted by Enovace on March 18, 2026

开篇:我第四次重复同一件事时,才意识到问题不在模型

写了 1 个月、拆了100+ 篇文档后:我们终于让 4-Agent AI 装上记忆操作系统 配图 1

那天很晚了,我第四次解释同一条规则:

"发给我"不是"告诉我生成好了",而是要直接发附件。

对面的 Agent 不是听不懂,它当下都能理解,甚至能复述得很好。问题在于第二天、下一轮、一次 compact 之后,它又像重置了一样。

那一刻我意识到:

我们缺的不是更强模型,而是记忆层。

单轮对话里,失忆像小毛病;长期协作里,失忆是系统性灾难。

第1章:多 Agent 系统最大的敌人,不是笨,而是断片

写了 1 个月、拆了100+ 篇文档后:我们终于让 4-Agent AI 装上记忆操作系统 配图 2

我们有 4 个 Agent(黄家1号、智库、技术顾问、创意伙伴)。当协作拉长到周级、月级,断片会被放大成连锁问题:

实际案例:

2026-02-15:告知智库"文件发送必须用白名单路径"
2026-02-17:智库又从 ~/development/ 发文件 → 报错
2026-02-19:再次提醒 → 理解并复述规则
2026-02-21:compact 后 → 又从非白名单路径发文件

断片连锁反应:

  • 同一偏好重复解释(浪费 Token)
  • 决策不继承,标准漂移(每次都要重新确认)
  • 经验沉淀不上链路(踩过的坑反复踩)
  • compact 后"人格重置"(session 压缩后规则丢失)
  • 同类错误反复复发(无法形成集体记忆)

技术根因:

写了 1 个月、拆了100+ 篇文档后:我们终于让 4-Agent AI 装上记忆操作系统 配图 3

真正刺痛我们的不是"回答错一次",而是协作连续性断掉。这已经不是聊天质量问题,而是系统工程问题。

第2章:最早我们以为,只要把记忆存下来就够了

写了 1 个月、拆了100+ 篇文档后:我们终于让 4-Agent AI 装上记忆操作系统 配图 4

最早我们把记忆理解成存储问题:

早期记忆存储方式:

~/Documents/Obsidian Vault/
├── MEMORY.md # 手动维护的记忆摘要
├── TODO.md # 任务清单
├── Agent日志/ # 对话记录导出
└── 项目文档/ # 各种 Markdown 文档

问题:这些东西都"存在",但不"参与工作"。

实际场景:

用户:智库,查一下我们之前讨论的"白名单路径"规则
智库:[开始读取 MEMORY.md]
→ 文件太大,超过 context 窗口
→ 即使读进去,也找不到具体段落
→ 只能回答:"我建议你重新告诉我一遍"

后来我们才真正吃透:记忆不是仓库,是链路。至少四步缺一不可:

完整记忆链路:

┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ 1. 写入 │ → │ 2. 索引 │ → │ 3. 召回 │ → │ 4. 接入 │
│ (可靠) │ │ (可检索) │ │ (相关) │ │ (工作流) │
└──────────┘ └──────────┘ └──────────┘ └──────────┘
↓ ↓ ↓ ↓
事务验证 BM25+向量 语义排序 Hook注入
回查确认 分类过滤 时效衰减 规则强制

这四步里,任何一步缺失,都会把"有记忆"退化成"有资料"。

对比:

  • 有资料:你知道信息在哪,但每次都要手动翻(像去图书馆查书)
  • 有记忆:信息在正确时机自动出现(像人脑自然想起)

第3章:第一层突破--把"记忆"变成可检索能力

写了 1 个月、拆了100+ 篇文档后:我们终于让 4-Agent AI 装上记忆操作系统 配图 5

我们选择 MemOS,不是因为它完美,而是它给了可扩展起点。第一代基础设施很快成型:

技术选型:为什么是 MemOS?

写了 1 个月、拆了100+ 篇文档后:我们终于让 4-Agent AI 装上记忆操作系统 配图 6

第一代基础设施架构:

写了 1 个月、拆了100+ 篇文档后:我们终于让 4-Agent AI 装上记忆操作系统 配图 7

使用示例:

写了 1 个月、拆了100+ 篇文档后:我们终于让 4-Agent AI 装上记忆操作系统 配图 8

这一步让"翻文档回忆"变成"可检索调用"。

但很快我们发现:找得到,不等于用得好。后面的关键痛点会落在两件事上:

  1. 写入可靠性(第4章)
  2. 运行链路接入(第5章)

第4章:第二层突破--原生写入不可靠,我们接管写入主权

写了 1 个月、拆了100+ 篇文档后:我们终于让 4-Agent AI 装上记忆操作系统 配图 9

我们遇到过最危险的故障之一:8001 写入"假成功

问题现场:

# 2026-02-20 14:23:15,写入返回 200

*curl -X POST http://127.0.0.1:8001/write *

  • -H "Content-Type: application/json" *

  • -d '{"text":"测试写入"}'*

# 返回:{"status":"ok"}

# 但数据库里查不到

psql -U postgres -d memos -c "SELECT * FROM memories ORDER BY created_at DESC LIMIT 1;"

# 结果:0 rows

问题本质: 原生写入流程是"黑盒调用":

  • 我们 → 发送文本 → MemOS API → ??? → 数据库
  • 中间环节失败时,API 仍可能返回 200(例如 embedding 超时但事务未回滚)

我们的改造思路: 把"黑盒"拆成"白盒",让每步可验证:

  1. 提取层:自己控制哪些内容写入(而非依赖自动提取)
  2. Embedding 层:本地生成 embedding,确保拿到向量
  3. 写入层:直接操作 PostgreSQL,开启事务
  4. 验证层:写完后立即回查,确认落盘

技术链路对比:

写了 1 个月、拆了100+ 篇文档后:我们终于让 4-Agent AI 装上记忆操作系统 配图 10

为什么我们也会踩坑? 早期我们自己也有操作问题:

  • 直接复制配置文件时,参数映射错误(embedding_dim 写成 vector_dim)
  • 事务管理不严谨(commit 前没检查异常)
  • 这些都导致"看起来成功、实际失败"

最终收益:

  • 写入失败 = 立即报错(不会静默污染)
  • 每条记忆可追溯(知道谁写的、何时写的)
  • 可以批量修复历史数据(直接操作数据库)

这一步不是普通 bugfix,而是系统主权回收。

第5章:第三层突破--有记忆,不等于 Agent 会按需用记忆

写了 1 个月、拆了100+ 篇文档后:我们终于让 4-Agent AI 装上记忆操作系统 配图 11

我们一度以为"存好了,Agent 自然会用"。现实恰好相反:

实际场景:

2026-02-22:记忆库已有 1000+ 条记录

用户:智库,查一下"白名单路径"规则

智库:[直接回答,没有查记忆]

 → "建议你把文件放到 workspace 目录"

用户:这条规则我们之前讨论过,你怎么没查记忆?

智库:[才意识到应该先查]

 → curl "http://127.0.0.1:8899/search?q=白名单路径"

 → [找到 3 条相关记录]

问题本质:

记忆库里有数据

但 Agent 不会主动触发检索

不知道何时该搜(触发时机缺失)

用户继续重复同样信息(退回到人工记忆)

所以问题不只在后端,而在工作流接入。

我们的三步改造:

5.1 Skill 触发:让 Agent 按需调用记忆

**改造前:**强制 Agent 每次都查记忆(浪费 Token)
**改造后:**通过 Skill 系统,让 Agent 在需要时才调用

技术实现:

## memory-search Skill

触发条件:

  • 用户问"之前讨论过的..."
  • 任务涉及历史决策
  • 需要查找过往经验

调用方式:
curl -s "http://127.0.0.1:8899/search?q=关键词&top_k=5"

效果:

  • 不是每次都查(节省 Token)
  • 需要时才查(按需触发)
  • 更符合人类记忆模式(想不起来才去查)

5.2 启动注入:把高相关记忆提前送进上下文

改造前:

Agent 启动 → 空 context → 第一轮消息才开始查记忆

改造后:

Agent 启动 → 自动注入最近 5 条高相关记忆 → 已有上下文

技术实现:

# ~/.openclaw/shared-knowledge/scripts/memos_inject.py

def inject_relevant_memories(agent_name):

  • 1. 查询该 Agent 最近的记忆*

  • recent = search_memories(f"agent:{agent_name}", top_k=5)*

  • 2. 注入到 system prompt*

  • context = build_context(recent)*

  • 3. Agent 启动时自动加载*

  • return context*

注入方式的演进(v1.0.3 更新):

早期版本(v1.0.0)把召回的记忆塞进 systemPrompt,这会覆盖或干扰 Agent 原有的系统提示词(SOUL.md、AGENTS.md 等核心规则)。v1.0.3 改用 prependContext 模式——记忆作为前置上下文注入,不触碰系统提示词本身。

v1.0.0:记忆 → systemPrompt(与核心规则混在一起,可能互相干扰)
v1.0.3:记忆 → prependContext(独立注入,核心规则不受影响)

这个改动看起来小,但对我们的 4-Agent 系统影响很大——每个 Agent 的 SOUL.md 和 AGENTS.md 是行为准则的根基,绝不能被记忆注入冲掉。

5.3 高优先级规则强制注入

**问题:**即使有记忆,某些高优先级规则仍可能被淹没

解决方案:

系统提示词优先级:

系统提示词优先级:

┌─────────────────────────────────┐

│ 1. SOUL.md / AGENTS.md (核心规则) │ ← 最高优先级,强制注入

├─────────────────────────────────┤

│ 2. MEMORY.md 当前状态 │ ← 高优先级

├─────────────────────────────────┤

│ 3. 相关记忆(MemOS 检索) │ ← 动态加载,按需触发

├─────────────────────────────────┤

│ 4. 当前对话历史 │ ← 正常上下文

└─────────────────────────────────┘

效果:

  • "发给我 = 发附件"这类核心规则永远不会被淹没
  • 降低"看不见规则"的概率
  • 按需调用记忆,节省 Token

从这时开始,记忆不再是外挂附件,而是按需进入 Agent 生命周期。

不进入运行链路的记忆,最终都会沦为存档。

第6章(核心):真正的升级--从定时提取到实时写入,从存档到在线索引

写了 1 个月、拆了100+ 篇文档后:我们终于让 4-Agent AI 装上记忆操作系统 配图 12

这是我们后期最重要的突破,也是整篇最关键的一章

6.1 早期方案为什么不够

早期方案:cron + agent_end 事后沉淀

时间线:
10:00 - 用户告知"白名单路径"规则
10:05 - Agent 理解并执行
...
18:00 - cron 任务触发,提取今日记忆
18:01 - 记忆写入 MemOS
18:05 - 第二个 Agent 开始任务 → [可以查到记忆]

天然短板:

  • 记忆写入滞后(8小时后才入库)
  • compact 前后容易漏(compact 把中间细节压缩掉)
  • 刚发生的关键信息,不能及时被下一任务调用

它更像"散会后补纪要",不是"会议进行中同步结构化记录"。

6.2 实时写入为什么是范式变化

改造后的时间线:

10:00:00 - 用户告知"白名单路径"规则
10:00:03 - Agent 理解并执行
10:00:05 - [实时 Hook 触发] 提取 → embedding → 写入
10:00:08 - 记忆已在 MemOS 可检索
10:00:15 - 第二个 Agent 查询 → [立即找到]

实时写入不是小优化,而是系统时效性的范式变化:

  • 刚发生的事实几秒内进入可检索层
  • 协作上下文在多 Agent 间更连续
  • 系统不再完全依赖"事后整理"

6.3 实时不等于同步阻塞

我们没有走"每轮都卡主链路去写库"的粗暴做法:

❌ 错误做法(同步阻塞):
用户消息 → Agent 处理 → 写入库(等待 500ms)→ 返回结果

主链路被拖慢

✅ 正确做法(异步 + buffer):
用户消息 → Agent 处理 → 立即返回

[异步写入]

buffer 聚合(10秒窗口)

批量入库 + 质量治理

这套平衡解决了两个矛盾:

  • 要实时,又不能拖慢响应
  • 要多捕获,又不能把噪音写爆

6.4 数据入库三层架构:向量 → 图 → 演化

我们后面最深的理解之一:记忆不只是"存文本+向量",而是要建立多层索引能力。

三层架构设计:

写了 1 个月、拆了100+ 篇文档后:我们终于让 4-Agent AI 装上记忆操作系统 配图 13

为什么需要三层?

写了 1 个月、拆了100+ 篇文档后:我们终于让 4-Agent AI 装上记忆操作系统 配图 14

真实案例:8001 写入"假成功"

问题现场:

# 2026-02-20 14:23:15,写入返回 200

*curl -X POST http://127.0.0.1:8001/write *

  • -H "Content-Type: application/json" *

  • -d '{"text":"测试写入"}'*

# 返回:{"status":"ok"}

# 但数据库里查不到

psql -U postgres -d memos -c "SELECT * FROM memories ORDER BY created_at DESC LIMIT 1;"

# 结果:0 rows

**根因:**原生写入流程是"黑盒调用",中间环节失败时 API 仍可能返回 200

**解决方案:**三层验证机制

写入 → 第一层验证(向量索引是否生成)
→ 第二层验证(关系边是否建立)
→ 第三层验证(回查 ID 确认落盘)

这套架构不只是"存得快",而是"存得对、找得准、用得好"。

6.5 索引策略:从"能搜"到"搜得准"

真实案例 1:BM25 空结果

2026-02-25:搜索"白名单路径" → 0 条结果
排查:历史记忆缺 search_tokens 字段
解决:回填 search_tokens → 恢复检索

真实案例 2:分类检索超时

2026-02-28:按 category_id 过滤 → 查询 8 秒
排查:大数据量(1万+条)下 category_id 无索引 → 全表扫描
解决:CREATE INDEX idx_category → 查询 12ms

真实案例 3:向量维度不匹配

2026-03-01:切模型(text2vec-base-chinese → bge-small-zh)
错误:旧 embedding(768维)未清,新模型(512维)写入
报错:vector dimension mismatch
解决:清空旧 embedding → 重建索引

这几次事故让我们形成硬认知:

写了 1 个月、拆了100+ 篇文档后:我们终于让 4-Agent AI 装上记忆操作系统 配图 15

没有多路检索策略,记忆只有存量,没有召回能力。

分词器的关键升级(v1.0.3):

MemOS 本地插件在 v1.0.0 时使用 FTS5 的 porter unicode61 分词器——这是英文词干分词,对中文几乎无效。搜"白名单路径"可能返回 0 结果,因为 porter 根本不认识中文字符。

v1.0.3 把分词器换成了 trigram(三字符滑窗),这对中文是质的飞跃:

写了 1 个月、拆了100+ 篇文档后:我们终于让 4-Agent AI 装上记忆操作系统 配图 16

"白名单路径" 在 trigram 下被索引为:
→ "白名单", "名单路", "单路径"
搜索 "白名单" → 命中 "白名单" → 找到记忆 ✅

升级时自动迁移(migrateFtsToTrigram),不需要手动操作。同时还加了 pattern search 兜底:2 字符短词(如"路径")trigram 也搜不到时,用 LIKE 模糊匹配作为最后防线。

这个改动直接解决了我们之前"BM25 空结果"的痛点——不是 BM25 不行,是分词器不认中文。

6.6 从"能搜"到"搜得准"

召回不是越多越好,而是当前任务相关性越高越好。

我们把检索层做成组合能力:

写了 1 个月、拆了100+ 篇文档后:我们终于让 4-Agent AI 装上记忆操作系统 配图 17

在 2026-03-01 的对比快照里,我们看到:

"白名单路径" 在 trigram 下被索引为:

→ "白名单", "名单路", "单路径"

搜索 "白名单" → 命中 "白名单" → 找到记忆 ✅

6.6 运行时观测:3/10 的"在线系统"现场

3/10 我们做健康检查时,系统状态显示:

检查脚本

bash ~/.openclaw/shared-knowledge/scripts/health-check.sh

输出:

✅ pgvector: 正常
✅ 总记忆数: 15955
✅ 最近写入: 0.1 小时前
✅ 8899 API: 正常
✅ 搜索功能: 正常
⚠️ 8001 服务: 在线(但主写入已不依赖)

但同一天我们也收到一个"很真实的线上信号":

  • 定时巡逻有时带推文链接,有时无链接(输出不稳定)
  • 同批次出现重复 Cron 通知(调度去重失效)

这类问题说明:系统已从"能不能跑"进入"在线可运维"阶段。你要开始处理的,不再是有没有功能,而是链路一致性、输出稳定性、调度去重。

这也是在线 Memory OS 的典型现实:核心能力可用之后,运行质量本身成为下一主战场。

第7章:之后,我们才真正理解 MemOS

写了 1 个月、拆了100+ 篇文档后:我们终于让 4-Agent AI 装上记忆操作系统 配图 18

3/1 前后,我们有一轮"功能层面的完成感";3/1 之后,真正发生的是认知升级

7.1 从"功能完成"到"系统可用"

之前的认知:

✅ MemOS 部署完成
✅ 写入链路打通
✅ 检索 API 可用
→ 任务完成!

之后的现实:

运行现场的问题:

  • 健康检查能看到链路状态,但不能替代链路治理
  • 记忆条数持续增长(1.5万+),但命中率才是关键指标
  • 检索变快(120ms),不代表稳定,索引与分类策略要持续演化

真实案例:记忆库有 1.5 万条,但命中率只有 65%

排查过程:

检查最近 100 次搜索

grep "搜索查询" ~/memos.log | tail -100

发现问题:

  • 35% 搜索返回 0 结果(并非没有相关记忆)
  • 原因:查询词与记忆文本不匹配(语义鸿沟)

解决方向:

不是增加记忆总量,而是优化:

  1. 查询改写(用户输入 → 标准化查询词)
  2. 记忆扩展(写入时补充同义词、别名)
  3. 多路召回(BM25 + 向量 + 关系扩展)

7.2 价值不在总量,在命中率

对比:

指标追求总量 追求命中率

记忆数 10万+ 条 1.5万 条

搜索延迟 2秒 120ms

命中率 40% 65%+

用户体验 "搜不到" "立即找到"

**结论:**1.5 万条高相关记忆 > 10 万条低质量噪音

7.3 写入可靠性比功能清单重要

我们踩过的坑:

功能清单:
✅ 支持实时写入
✅ 支持 BM25 检索
✅ 支持向量检索
✅ 支持分类过滤
✅ 支持关系扩展

实际运行:
❌ 写入假成功(第4章)
❌ 索引缺失导致检索失效(第6章)
❌ 向量维度不匹配导致全部检索失败(第6章)

硬认知:

功能列表 = "能做什么"
可靠性 = "真的能用"

后者比前者重要 10 倍。

7.4 索引是能力,不是实现细节

早期认知:

索引 = 数据库优化细节,以后再说

后期认知:

索引 = 记忆系统的核心能力

  • 无 search_tokens → 关键词检索失效
  • 无 category_id → 分类查询超时
  • 无 embedding_index → 语义检索不可用

索引不是"优化",是"能不能用"的前提。

7.5 多 Agent 协作必须有边界治理

问题:记忆污染

场景:

  • 智库写入:"这个技术方案不可行"
  • 技术顾问搜索 → 找到这条记忆
  • 但技术顾问不知道这是智库的"主观判断"
  • 结果:错误记忆传播

解决方案:分权 + 标注

记忆边界:
┌───────────────┐
│ Shared 分区(公共记忆) │
│ - 所有 Agent 可读 │
│ - 只有黄家1号可写(协调者) │
├───────────────┤
│ Agent 私有分区 │
│ - 智库:策略、决策 │
│ - 技术顾问:技术实现 │
│ - 创意伙伴:内容创作 │
└───────────────┘

每条记忆必须带:

  • agent: 写入者
  • created_at: 写入时间
  • category: 分类标签
  • confidence: 可信度(可选)

自动污染清理(v1.0.3 新增):

边界治理不只是"写入时分权",还要处理已经污染的数据。v1.0.3 加了 autoCleanupPolluted 机制——插件启动时自动扫描并清理两类问题数据:

  1. 被污染的 user chunks:系统元数据(Discord sender metadata、inbound context JSON)被错误地当作用户消息存入记忆
  2. 混合 user+assistant chunks:一条记忆里同时包含用户消息和 Agent 回复,角色边界模糊

插件启动 → 扫描 chunks 表
→ 发现 role=user 但内容包含 metadata JSON → 删除
→ 发现内容混合了 user+assistant → 修复角色标记
→ 日志记录:Auto-cleanup: removed N polluted, fixed M mixed

这解决了我们之前遇到的一个隐蔽问题:Discord 的 sender metadata 被当作"用户说的话"存进记忆,导致搜索时返回一堆无意义的 JSON 片段。

7.6 Memory OS 的关键是接入生命周期

完整生命周期:

┌─────────────────┐
│ 1. 写入层(实时 + 兜底) │
│ - Hook 实时写入 │
│ - agent_end 事后沉淀 │
│ - cron 定时补偿 │
└─────────────────┘

┌──────────────────┐
│ 2. 检索层(多路召回 + 排序) │
│ - BM25 + Vector + Filter │
│ - RRF 融合 + 多维加权 │
└──────────────────┘

┌─────────────────────┐
│ 3. 注入层(启动注入 + 规则强制) │
│ - Agent 启动时自动加载高相关记忆 │
│ - 核心规则强制注入(SOUL.md / AGENTS.md) │──────────────────────┘

┌──────────────────┐
│ 4. 清洗层(去重 + 评分 + 清理) │
│ - 内容哈希去重 │
│ - 质量评分过滤 │
│ - 定期清理低价值记忆 │
└──────────────────┘

我们最终沉淀了 5 条"重新理解":

  1. 价值不在总量,在命中率
  2. 写入可靠性比功能清单重要
  3. 索引是能力,不是实现细节
  4. 多 Agent 协作必须有边界治理
  5. Memory OS 的关键是接入生命周期(写入/检索/注入/清洗)

这一章的意义是:把"项目复盘"抬升为"系统方法论"。

第8章(强化版):最终形态--魔改清单、改造顺序与收益对照

写了 1 个月、拆了100+ 篇文档后:我们终于让 4-Agent AI 装上记忆操作系统 配图 19

你提得很对:第8章不能只讲"理想形态",必须把我们实际魔改的工作写透。这里给出完整清单。

8.1 改造顺序(为什么这样排)

我们不是并行乱改,而是按"先保生存,再提质量,再补治理"推进:

  1. 先接管写入可靠性(解决假成功)
  2. 再统一检索入口(让系统可查可用)
  3. 再做混合召回+排序(把召回质量拉起来)
  4. 再做多 Agent 边界(防记忆污染)
  5. 再做三层捕获(实时性与兜底)
  6. 再做质量治理(清理噪音)
  7. 再做分类与关系(组织能力升级)
  8. 最后做健康监控(在线运维能力)

8.2 魔改清单 + 收益对照

写了 1 个月、拆了100+ 篇文档后:我们终于让 4-Agent AI 装上记忆操作系统 配图 20

8.3 第8章的核心结论

我们做的不是给 MemOS 加几个 feature,而是把它改造成可持续运行的 memory infrastructure。

这才是"4-Agent 团队不再失忆"的真实来源。

第9章:我们还没解决的事--真正在线 Memory OS 的七个未完成命题

写了 1 个月、拆了100+ 篇文档后:我们终于让 4-Agent AI 装上记忆操作系统 配图 21

这一章必须诚实,而且必须系统。

9.1 实时写入的性能与噪音控制

越靠近对话链路,噪音越容易进入记忆层。异步、buffer、阈值、采样仍在持续迭代。

9.2 分类体系持续演化

分类不是一次设计完成,任务结构变化会反向推动分类体系漂移。

9.3 recall 准确率与成本平衡

查询改写、重排、分类过滤、语义融合都会产生算力与延迟成本。如何"找得准且跑得起"还在优化。

9.4 主动召回 / 主动提醒尚不成熟

被动检索已可用,但"在正确时刻主动提示"仍有误触发和上下文污染风险。

9.5 更细粒度索引尚未完成

当前多为记忆条目级索引,未来需要段落级、事件级、实体级、关系级索引协同。

9.6 多模态记忆还没真正开始(必须单列)

目前主力仍是文本。图片、截图、音频、视频、界面状态并未统一接入记忆层。

但真实工作流是多模态的,真正的 Memory OS 不可能长期只处理文本。

9.7 最后一公里:真正在线闭环仍未完成

我们已接近"在线",但还缺:

  • 更稳的实时链路
  • 更精细的主动机制
  • 更成熟的治理策略
  • 多模态统一入口
  • 更强的运行时协同

这不是"弱点清单",而是下一阶段路线图。

第10章:外面的世界在做什么--MemOS 官方升级与 Google 方案的启示

写了 1 个月、拆了100+ 篇文档后:我们终于让 4-Agent AI 装上记忆操作系统 配图 22

我们埋头改了两个月,抬头一看,外面也没闲着。

10.1 MemOS 官方从 v2.0.6 走到了 v2.0.8

我们本地一直跑的是 v2.0.6。2026 年 2 月底到 3 月初,官方连发了 v2.0.7 和 v2.0.8,改了不少东西:

  • Neo4j 全文搜索支持(之前只有向量通道)
  • search_by_fulltext 连续三轮性能优化
  • 偏好记忆排序从 score 改为 relativity(更语义化)
  • 图片记忆 bug 修复、连接池优化

但最值得关注的不是这些小改进,而是他们在 v2.0.8 里塞了一个大东西:MemOS 本地插件(memos-local-openclaw)。从 v1.0.0 到截至本文写作时的 v1.0.3(2026-03-16 发布),这个插件经历了快速迭代,已经从"能用"进化到"好用"。

10.2 官方本地插件:从 v1.0.0 到 v1.0.3 的进化

这个插件跟我们的魔改思路有交集,但走出了我们没做到的路线。

记忆引擎层面,它做了三级智能去重:内容哈希快速跳过 → Top-5 向量相似检索(阈值 0.75) → LLM 判定是 DUPLICATE(丢弃)、UPDATE(合并)还是 NEW(新建)。我们的去重是评分规则,比这个粗糙。v1.0.3 把去重阈值从 0.60 调到 0.80,更宽松——减少了"相似但不同"的记忆被误杀的情况。

**真正拉开差距的是 Task → Skill 进化链路。**这是我们完全缺失的能力:

  1. 对话中自动检测任务边界(每轮 LLM 主题判定 + 2 小时空闲超时)
  2. 任务完成后 LLM 生成结构化总结(Goal / Key Steps / Result / Key Details)
  3. 自动评估任务是否值得提炼为技能
  4. 如果值得,多步 LLM 管线生成 SKILL.md + 脚本 + 引用
  5. 后续遇到类似任务,已有技能自动升级

这意味着什么?意味着系统不仅记住了"发生过什么",还能从经验中提炼"怎么做",并且越用越好。

我们的 MEMORY.md + TODO.md + patterns.md 体系,本质上是人工版的 Task → Skill 流程。我们靠规范和纪律保证 Agent 做完事去沉淀经验,而他们让机器自动完成这个闭环。

多 Agent 协作方面,他们做了 memory_write_public 工具--Agent 可以主动把信息写入公共记忆区,其他 Agent 自动可见。我们的 shared 分区是静态的文件同步,不是运行时的动态共享。

可视化方面,他们做了 7 页 Memory Viewer(Memories / Tasks / Skills / Analytics / Logs / Import / Settings),我们是盲人摸象,靠 curl 和 grep。v1.0.3 还加了模型健康检测、一键更新安装、记忆合并来源追溯等运维能力。

v1.0.3 相比 v1.0.0 的关键进化:

中文搜索从废到能用。原来用 FTS5 porter 分词,本质是英文分词器,中文几乎搜不到东西。v1.0.3 换成 trigram(三字符滑窗),天然兼容中文,短词还加了 LIKE 模糊匹配兜底。 记忆注入方式更干净。v1.0.0 把记忆塞进 systemPrompt,会干扰 Agent 核心规则。v1.0.3 改用 prependContext 独立注入,互不影响。搜索结果也不再截断到 300 字,返回完整原文。 工程细节全面补齐。去重阈值从 0.60 放宽到 0.80(减少误杀),Agent ID 改从 hookCtx 框架级传递(不再依赖不可靠的 event),Embedding 从 5 家扩到 11 家(加了智谱、硅基流动、百炼等国产厂商),启动时自动清理污染数据,还加了版本自动检查。

**Embedding Provider 的扩展值得单独说。**v1.0.3 新增了 zhipu(智谱)、siliconflow(硅基流动)、bailian(百炼/阿里云)、cohere、mistral、voyage。

对中文用户来说,能直接用国内厂商的 embedding 模型,不用绕海外 API,延迟和成本都更友好。

10.3 Google Always-On Memory Agent:概念好,实现是玩具

几乎同一时间,Google 开源了 Always-On Memory Agent。berryxia 写了一篇文章把它吹上天,但看代码就两个文件:agent.py + dashboard.py

它的核心卖点是"整合"--每 30 分钟让 LLM 重新审视最近的记忆,发现跨记忆的关联和洞察。

概念确实好。人脑在睡眠时也在做类似的事:回放、连接、压缩。

但实现太粗糙了:

  • 查询时把所有记忆 + 洞察塞进 context,规模一大直接爆
  • 没有遗忘机制、没有权重衰减
  • 没有持久化策略
  • 不支持多 Agent

我们的 MemOS 在工程完成度上领先它至少两个量级。16,776 条记忆、49,618 条关系边、BM25 + 向量混合检索、4 Agent 分权--这些不是 demo 能比的。

但"定期跨记忆洞察生成"这个 idea,我们确实没做。

10.4 三方对比:各有各的长板

写了 1 个月、拆了100+ 篇文档后:我们终于让 4-Agent AI 装上记忆操作系统 配图 23

10.5 这一章的真正启示

三个系统各有长板,但合在一起指向同一个方向:

记忆系统的下一步不是"存得更多",而是"学得更快"。

  • Google 的方案告诉我们:记忆之间的主动连接比被动存储更有价值
  • MemOS 官方告诉我们:从对话到任务到技能的自动进化链路是真正的壁垒
  • v1.0.3 的迭代告诉我们:中文搜索、注入方式、数据治理这些"基础设施级"的改进,比新功能更影响日常体验
  • 我们自己的实践告诉我们:规模验证和写入可靠性是一切的基础

下一步的路线图因此变得清晰:

  1. 升级 MemOS 本地插件到 v1.0.3,拿到 trigram 中文搜索和 prependContext 注入
  2. 引入 Task → Skill 进化能力(官方插件或自建)
  3. 加入"定期跨记忆洞察生成"(借鉴 Google 方案)
  4. 保留并强化关系图谱和写入验证--这是我们的独有优势
  5. 评估国产 Embedding Provider(智谱/硅基流动/百炼),降低延迟和成本

不是选一个方案替代另一个,而是把三条路线的精华合进我们的系统。

第11章:结尾--AI 什么时候才算真正开始工作?

写了 1 个月、拆了100+ 篇文档后:我们终于让 4-Agent AI 装上记忆操作系统 配图 24

最开始,我们一遍遍重复同样规则;后来,系统开始记住:

  • 你如何做决策
  • 团队为何这样分工
  • 哪些偏好已经确认
  • 哪些坑已经踩过
  • 哪些经验应沉淀为共同记忆

AI 真正开始工作,不是第一次回答对问题。

而是它第一次把昨天、上周、上个月积累下来的经验,继续带进今天的协作。

这就是我们做这套记忆基础设施的意义。

附:全文反复出现的"观点钉子"

写了 1 个月、拆了100+ 篇文档后:我们终于让 4-Agent AI 装上记忆操作系统 配图 25

  1. 我们缺的不是更强模型,而是更可靠记忆层。
  2. 有记忆库,不等于 Agent 会用记忆。
  3. 写入、索引、召回,三者缺一不可。
  4. 不进入运行链路的记忆,最终会沦为存档。
  5. 实时写入不是优化,而是时效性范式变化。
  6. 索引不是细节,它决定能否真正找回记忆。
  7. 多 Agent 协作需要的不是 memory feature,而是 memory infrastructure。
  8. 记忆系统的下一步不是"存得更多",而是"学得更快"。