AI Agent 的失忆症:我是怎么给它装上"第二个大脑"的

39 阅读12分钟

你有没有遇到过这种抓狂的场景?

昨天你跟 AI Agent 聊了两个小时,把你的项目背景、团队现状、技术栈都说了个遍,它帮你分析得头头是道。

今天你打开新对话,第一句话问它:"上次我们聊的那个方案,你觉得……"

它回你:"您好,我是 AI 助手,请问有什么可以帮到您?"

……

我第一次遇到这个场景的时候,差点把笔记本砸了。

作为一个做了15年移动端、带过几十人团队的 Team Lead,我对"信息同步"这件事的执念不亚于任何人——代码要有 commit history,需求要有 PRD,决策要有记录。

但我的 AI Agent,每次都是一张白纸。

这不是工具的问题,这是架构的问题。今天我就来讲讲,我是怎么系统性地解决这个问题的。


🧠 为什么 AI Agent 需要长期记忆?

先说清楚本质问题。

大语言模型本身是无状态的。每次对话,都是从零开始。它不是在"遗忘",它从来就没有"记住"的机制。这就像你每次重启一个进程,内存自然清空。

那些看起来"记住了"的 AI 产品,背后都有一套持久化机制。

这里有两个核心痛点:

**痛点一:重复解释背景,效率极低。 **

我在做 AI 转型方向的调研,每次新会话都要把"我是移动端背景、目标是深圳 AI 技术负责人、正在系统学习 LLM 工程"这段话重新贴一遍。一天要贴几十次。这不是用 AI 提效,这是在给 AI 做秘书。

**痛点二:把历史塞进 Context,Token 消耗爆炸。 **

有些人的解法是:把所有历史对话都放进 System Prompt。这确实能让 AI "记住",但 Token 费用会让你怀疑人生。GPT-4 的 Context 窗口不是无限的,更不是免费的。

**真正的解法不是堆 Context,而是构建持久化的记忆架构。 **

让 Agent 在需要的时候,从外部存储里召回相关信息,而不是每次把一本书都塞进脑子里。

这个思路,就是今天我要讲的四种方法的底层逻辑。


📂 方法一:结构化 Markdown 文件夹

核心原理

说白了就是:给 AI 配一套"外挂笔记本"。

把你的项目背景、个人偏好、重要决策,全部手动(或半自动)整理成 Markdown 文件。每次 Agent 开始工作前,先把这些文件读一遍——这就是它的"开机记忆"。

听起来很原始?但它解决了 90% 的场景。

适用场景

  • 刚开始用 AI Agent,想快速上手

  • 对数据隐私有要求,不想用第三方服务

  • 需要完全透明、可人工修改的记忆系统

文件结构示例

我自己在 OpenClaw 里用的就是这套结构:


workspace/

├── MEMORY.md          # 长期记忆(核心洞察、重要决策的精华版)

├── USER.md            # 我的个人信息(背景、偏好、目标)

├── SOUL.md            # Agent 的人设与行为准则

├── AGENTS.md          # Agent 工作规范(它该怎么工作)

└── memory/

    ├── 2026-03-03.md  # 每日日志(原始记录,啥都往里写)

    ├── 2026-03-02.md

    └── heartbeat-state.json  # 状态追踪(上次检查邮件是几点等)

这里有个关键区别:

  • memory/YYYY-MM-DD.md原始日志,随手记,不用整理

  • MEMORY.md精华蒸馏,定期从日志里提炼重要信息进来

就像你写日记和写总结是两回事——日记可以乱,总结要精。

我踩过的坑

刚开始我什么都往 MEMORY.md 里塞,结果文件越来越大,每次读取都消耗大量 Token,得不偿失。后来我定了一个原则:MEMORY.md 只放"改变了我判断的事",日常流水账留在每日文件里。

💡 一句话总结:透明、可控、零依赖,是所有记忆方案的基础层,任何人都应该先建这一层。


🔍 方法二:内置记忆搜索(Memory Search)

核心原理

Markdown 方案的局限是:文件小还好,文件一大,你要么全部读进去(费 Token),要么不读(失去记忆)。

记忆搜索解决的就是这个问题。

它的原理是向量化检索:把每条记忆转成数字向量(一串代表"含义"的数字),当用户提问时,把问题也向量化,然后在记忆库里找最"相似"的几条——只把相关记忆注入 Context,不相关的根本不出现。

用一个不严谨但好理解的比喻:就像书的目录+索引,你要查"第3章",不用把整本书翻一遍。

适用场景

  • 记忆量大(超过100条)但每次只需要少量相关记忆

  • 需要跨时间线、跨项目的知识检索

  • 希望大幅减少 Token 消耗

配置代码示例

以下是在支持 Memory Search 的 Agent 框架里开启此功能的伪代码:


# 配置向量化记忆存储

memory_config = {

    "backend": "memory_search",

    "embedding_model": "text-embedding-ada-002"# OpenAI 嵌入模型

    "top_k": 5,          # 每次最多召回5条相关记忆

    "similarity_threshold": 0.75# 相似度阈值

    "storage": {

        "type": "local",

        "path": "./memory_store/"

    }

}

  


# 写入记忆

agent.memory.add(

    content="用户偏好简洁的技术回答,不喜欢过多废话",

    category="preference"

)

  


# 检索相关记忆(自动在回答前执行)

relevant_memories = agent.memory.search(

    query="用户想了解架构设计方案",

    top_k=5

)

注意事项

这个方法有一个硬性依赖:必须有支持 Embedding 的 API,目前主要是 OpenAI 的 text-embedding-ada-002 或 Google Gemini。

如果你用的是国内的 LLM(纯对话型,没有 Embedding 接口),这个方法就用不了。

这也是我目前没有完全依赖这个方案的原因——国内访问 OpenAI 的稳定性问题,让这个链路不够可靠。

💡 一句话总结:记忆量超过100条时的必备方案,但需要 OpenAI/Gemini Embedding API 支撑。


🤖 方法三:Mem0 插件(自动化长期记忆)

核心原理

前两种方法,不管怎么搜索,都需要你主动去写记忆

Mem0 的思路是:让 AI 自己决定什么值得记。

它在对话过程中,实时分析你们的交流内容,自动识别"这句话可能以后有用"——比如"用户提到他们公司用 Kotlin 做 Android 开发",自动存进记忆库。下次相关话题出现时,自动召回。全程你感知不到它在工作。

这种"无感记忆"的体验,是最接近人类助手的感觉。

适用场景

  • 追求零维护成本的全自动记忆

  • 需要记住用户的隐式偏好和习惯

  • 多 Agent 协作场景,需要共享记忆池

安装与初始化代码


# 安装 Mem0

pip install mem0ai


from mem0 import Memory

  
# 初始化(使用 OpenAI 作为 LLM 和 Embedding 引擎)

config = {

    "llm": {

        "provider": "openai",

        "config": {

            "model": "gpt-4o",

            "api_key": "your-openai-api-key"

        }

    },

    "embedder": {

        "provider": "openai",

        "config": {

            "model": "text-embedding-3-small",

            "api_key": "your-openai-api-key"

        }

    },

    # 本地部署用 Qdrant,保护隐私

    "vector_store": {

        "provider": "qdrant",

        "config": {

            "host": "localhost",

            "port": 6333

        }

    }

}


m = Memory.from_config(config)

 

# 添加记忆(也可以传入整段对话,让 Mem0 自动提取)

m.add(

    "我是移动端 Team Lead,正在转型 AI 方向,目标是AI 技术负责人",

    user_id="xxxx"

)


# 搜索相关记忆

results = m.search(

    query="用户的技术背景是什么",

    user_id="xxxx"

)

# 输出示例

# [{"memory": "移动端 Team Lead,音视频+文件背景,转型 AI", "score": 0.92}]

我的判断

Mem0 是技术上最优雅的方案,但它增加了系统复杂度。需要单独部署 Qdrant 向量库,或者购买 Mem0 的云服务。

对于刚开始建记忆系统的人,我的建议是:不要一上来就上 Mem0。先把 Markdown 文件夹建好,等你的记忆量涨到 200 条以上,再考虑迁移。

过度工程是工程师的原罪之一。我以前做音视频 SDK 的时候也踩过这个坑——功能没跑通就开始搞性能优化,最终两头都没做好。

💡 一句话总结:全自动是它最大的优势,适合记忆量大、追求零维护的场景,但不适合作为入门第一步。


🗄️ 方法四:SQLite 数据库

核心原理

前三种方法,本质上存的都是文本型记忆——适合自然语言的内容。

但有些数据,天生就是结构化的:体重、运动记录、学习进度、项目完成率……

这类数据用文本存,查询起来很痛苦。"帮我看看过去30天我的体重趋势"——如果数据在 Markdown 里,AI 得一行一行地扫,还容易出错。

用 SQLite,一条 SQL 搞定。

适用场景

  • 健康数据、习惯追踪(体重、运动、睡眠)

  • 项目进度管理(精确查询状态)

  • 需要聚合统计的数据(完成率、趋势分析)

  • 任何有明确字段结构的信息

建表语句与查询示例


-- 记忆主表

CREATE TABLE memories (

    id INTEGER PRIMARY KEY AUTOINCREMENT,

    category TEXT NOT NULL,     -- 分类:project / preference / event

    content TEXT NOT NULL,      -- 记忆内容

    importance INTEGER DEFAULT 5, -- 重要程度 1-10

    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,

    last_accessed TIMESTAMP

);

  


-- 项目进度追踪表

CREATE TABLE projects (

    id INTEGER PRIMARY KEY AUTOINCREMENT,

    name TEXT NOT NULL,         -- 项目名称

    status TEXT DEFAULT 'active', -- active / paused / done

    progress INTEGER DEFAULT 0, -- 完成进度 0-100

    next_action TEXT,           -- 下一步行动

    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP

);

  


-- AI 转型学习进度表(我的实际使用场景)

CREATE TABLE learning_modules (

    id INTEGER PRIMARY KEY AUTOINCREMENT,

    module_name TEXT NOT NULL-- 模块名称(如"LLM基础")

    total_items INTEGER,        -- 总任务数

    completed_items INTEGER DEFAULT 0,

    completion_rate REAL GENERATED ALWAYS AS 

        (CAST(completed_items AS REAL) / total_items * 100) STORED,

    last_updated TIMESTAMP DEFAULT CURRENT_TIMESTAMP

);

  


-- 每日健康记录表

CREATE TABLE health_logs (

    date TEXT PRIMARY KEY,      -- YYYY-MM-DD

    weight REAL,                -- 体重 kg

    exercise TEXT,              -- 运动记录

    notes TEXT                  -- 备注

);


-- 查询示例1:获取最近30天体重趋势

SELECT date, weight 

FROM health_logs 

WHERE date >= date('now', '-30 days')

ORDER BY date;

  


-- 查询示例2:获取所有进行中的项目

SELECT name, progress, next_action

FROM projects 

WHERE status = 'active'

ORDER BY progress DESC;

  


-- 查询示例3:AI 转型学习完成率汇总

SELECT module_name, completed_items, total_items, completion_rate

FROM learning_modules

ORDER BY completion_rate DESC;

关键优势

SQLite 有一个被很多人忽视的优点:它不需要任何服务端,就是一个本地文件。你可以直接把 .db 文件放在项目目录里,用 Python 的标准库就能读写,零配置,永久持久化。

对我这种音视频背景的人来说,SQLite 就像嵌入式开发里的 RocksDB——轻量、可靠、本地,是工程师最好的朋友。

💡 一句话总结:结构化数据的最佳归宿,查询准、速度快、无依赖,但对自由文本无能为力。


📊 方法对比与选型建议

| 方法 | 上手难度 | 自动化程度 | 语义搜索 | 外部依赖 | 适合场景 |

|------|----------|------------|----------|----------|----------|

| Markdown 文件夹 | ⭐ 极简 | 手动/半自动 | ❌ | 无 | 所有人的起点 |

| Memory Search | ⭐⭐ 中等 | 自动检索 | ✅ | OpenAI/Gemini | 记忆量>100条 |

| Mem0 | ⭐⭐⭐ 较高 | 全自动 | ✅ | Mem0服务+向量库 | 追求零维护 |

| SQLite | ⭐⭐ 中等 | 按需查询 | ❌ | 无 | 结构化数据追踪 |

选型决策树:


你有结构化数据需要追踪?

  ├── 是 → SQLite(不用纠结)

  └── 否 → 记忆量有多大?

            ├── <100条 → Markdown 文件夹(够用了)

            ├── 100-500条 → Memory Search(需要 OpenAI Key)

            └── >500条 → Mem0(上自动化)

一个原则:不要为了用技术而用技术。 能用 Markdown 解决的,别上 Mem0;能用 SQLite 的,别设计复杂的向量库。复杂度是会咬人的。


🛠️ 我的实践方案:Layer 1 + SQLite 的组合

讲了这么多理论,说说我自己实际在用什么。

我目前跑的是两层架构

Layer 1(基础层):Markdown 文件夹


/root/clawd/

├── MEMORY.md          ← 核心长期记忆(蒸馏版,保持精简)

├── USER.md            ← 我的个人背景和目标

├── SOUL.md            ← Agent 的行为准则和人设

└── memory/

    ├── 2026-03-03.md  ← 今天发生了什么(原始记录)

    └── heartbeat-state.json  ← 上次检查邮件/日历的时间戳

这一层的核心价值是:Agent 每次会话开始时,自动读取这些文件。它就知道我是谁、我在做什么、上次的决策是什么——不需要我每次重新解释背景。

Layer 2(结构化层):SQLite

我正在把以下数据迁移到 SQLite:

  • AI 学习进度:7个学习模块,每个模块的完成状态

  • 岗位研究记录:看过哪些 JD,哪些公司在招 AI 移动端负责人

  • 实践项目追踪:每个 side project 的进展和下一步

为什么要迁移?因为我发现一个问题:在 Markdown 里追踪这些数据,每次问 Agent "我现在哪个模块落后了",它要读一大段文字,有时候还会算错。

换成 SQLite 之后,直接一条 SQL 查询,准确无误,还能生成图表。这是用技术背景反哺 AI 工具使用的一个典型案例。

Layer 3(未来规划):Mem0

当我的记忆量超过200条、或者我开始频繁发现"这段记忆我之前已经提过但 Agent 没记住"的时候,就是引入 Mem0 的时机。

现在还没到那个阶段。过早优化是万恶之源——这句话在 AI Agent 架构设计上同样适用。


结语:AI Agent 的记忆,是工程师给它的第二个大脑

写到这里,我想说一件让我有点感慨的事。

我做移动端这15年,做过音视频的实时传输优化,做过音视频编解码的性能调优设计,做过文件大批量传输需求。每一个技术方案,本质上都是在解决 "信息如何在时间和空间中持久传递" 的问题。

AI Agent 的记忆管理,其实是同一个问题的新形态。

一个没有记忆的 Agent,就像一个每天早晨醒来都失忆的员工——你永远要从头开始,永远没有积累,永远无法成长。

而当你给它装上合适的记忆架构,它才真正开始从"工具"变成"伙伴"。它知道你的背景,记得你的偏好,能接住上次没说完的话题——这种连续性,是 AI 真正融入工作流的前提。

AI Agent 的记忆,是工程师给它的第二个大脑。 这个大脑不是凭空长出来的,是我们亲手设计、一点一点喂养起来的。

这也是我做 AI 转型这段时间最深的体会:AI 工具的上限,很大程度上取决于使用它的工程师,愿意在架构设计上投入多少心思。