一、为什么你必须做“记忆系统”

大多数人在用AI时都会遇到一个问题:

AI很聪明,但它“记不住你”。

具体表现为:

  • 上一轮对话信息丢失
  • 无法形成用户画像
  • 不能持续执行长期任务
  • 每次都要重复输入上下文

这不是模型能力问题,而是系统架构问题

OpenClaw(或类似Agent框架)解决的核心就是:

让AI具备“类似人类的记忆结构”


二、记忆系统的本质结构

一个完整的AI记忆系统,必须拆成两层:

1️⃣ 短期记忆(Short-term Memory)

类似“工作记忆”:

  • 当前对话上下文
  • 最近几轮交互
  • 当前任务状态

特点:

  • 生命周期短
  • 高实时性
  • 高相关性

2️⃣ 长期记忆(Long-term Memory)

类似“长期记忆”:

  • 用户偏好
  • 历史行为
  • 知识沉淀
  • 任务经验

特点:

  • 可持久化
  • 可检索
  • 可进化

3️⃣ 一个关键结论

❗ 没有长期记忆的AI,只是“聊天工具”
❗ 没有短期记忆的AI,连对话都做不好


三、OpenClaw记忆架构设计

一个实战级系统,通常是这样:

用户输入

短期记忆(上下文窗口)

长期记忆检索(向量数据库)

上下文融合(Context Engineering)

大模型推理

输出结果

写入记忆(短期 / 长期)


四、短期记忆实战配置

1. 核心目标

让AI“看起来记住了刚刚发生的事”


2. 数据结构设计

建议结构:

{
"messages": [
{"role": "user", "content": "用户输入"},
{"role": "assistant", "content": "AI回复"}
]
}


3. 窗口控制策略(重点)

短期记忆不是越多越好。

推荐三种策略:

(1)固定窗口

保留最近 N 条消息:

messages.slice(-10)

优点:简单
缺点:容易丢重要信息


(2)Token裁剪(推荐)

根据token数量动态裁剪:

while (totalTokens > limit) {
removeOldestMessage()
}


(3)摘要压缩(进阶)

把旧对话压缩成摘要:

用户在开发蓝牙设备系统,关注多设备连接问题

👉 这是高阶玩法


4. 短期记忆最佳实践

  • 保留最近3~10轮对话
  • 对历史进行摘要
  • 保留“任务目标”

五、长期记忆实战配置

1. 长期记忆的核心:可检索

不是简单存数据,而是:

能在需要时“找回来”


2. 技术选型

常见方案:

  • 向量数据库(推荐)
    • FAISS
    • Milvus
    • Pinecone

3. 数据存储结构

{
"id": "uuid",
"content": "用户喜欢用Vue开发",
"embedding": [...],
"metadata": {
"type": "preference",
"timestamp": 1710000000
}
}


4. 写入策略(非常关键)

不是所有内容都值得存。

建议只存:

  • 用户偏好
  • 关键事实
  • 长期任务
  • 高价值对话

❌ 不要存:

  • 无意义闲聊
  • 重复信息
  • 噪声数据

5. 检索策略

典型流程:

  1. 用户输入 → embedding
  2. 向量检索(Top K)
  3. 返回最相关记忆

6. 记忆注入(关键步骤)

把检索到的内容插入上下文:

用户历史信息:
- 用户是开发者
- 正在做蓝牙设备项目

当前问题:
……


六、短期 + 长期融合策略

这是最核心的工程点。


1. 上下文拼接顺序(推荐)

系统提示词

长期记忆

短期记忆

当前问题


2. 为什么这样?

  • 长期记忆 → 提供背景
  • 短期记忆 → 保持连贯
  • 当前问题 → 核心任务

3. Token分配建议

假设 8K 上下文:

  • 系统提示:10%
  • 长期记忆:30%
  • 短期记忆:40%
  • 用户输入:20%

七、OpenClaw实战代码示例(简化版)

async function runAgent(userInput) {
// 1. 获取短期记忆
const shortMemory = getRecentMessages()

// 2. 检索长期记忆
const longMemory = await vectorSearch(userInput)

// 3. 构建上下文
const context = [
...systemPrompt,
...longMemory,
...shortMemory,
{ role: "user", content: userInput }
]

// 4. 调用模型
const response = await llm(context)

// 5. 写入短期记忆
saveToShortMemory(userInput, response)

// 6. 判断是否写入长期记忆
if (isImportant(userInput)) {
saveToLongMemory(userInput)
}

return response
}


八、进阶优化(高手区)

1. 记忆评分机制

给每条记忆打分:

score = importance * recency * frequency


2. 遗忘机制

防止数据库爆炸:

  • 定期清理低价值数据
  • 保留高权重记忆

3. 结构化记忆

比纯文本更强:

{
"user_skill": "frontend",
"framework": "vue",
"interest": "iot"
}


4. 多层记忆

  • 短期记忆
  • 长期记忆
  • 任务记忆
  • 工具记忆
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐