如何让你的机器人拥有持久化记忆

2026 年 3 月 · 阅读约 5 分钟

这是一个关于机器人学习的令人沮丧的事实:你的机器人在每个 episode 之间会遗忘一切。

在仿真环境中,你运行了 1,000 个抓取任务的 episode。第 #743 个 episode 发现 12.5N 的夹持力效果完美。第 #744 个 episode 从零开始。它不知道 30 秒前发生了什么。

这不是 bug — 这是大多数 RL 和启发式框架的工作方式。每个 episode 是独立的。智能体通过梯度更新模型权重来学习,而不是通过对过去经验的显式记忆。

但如果机器人能简单地记住呢?

问题:没有记忆的机器人

以 MuJoCo FetchPush 任务为例。一个机械臂需要将方块推到目标位置。使用启发式策略,基线成功率约为 42%

机器人在每个 episode 中尝试不同的方法。有时推力过大。有时角度不对。有时运气好。但它从不积累这些经验。每个 episode 都是全新开始。

这是浪费的。一个旁观的人类会说:"你在第 #12 个 episode 就找到了正确的力度和角度 — 为什么又在尝试随机方法?"

解决方案:经验记忆

我们构建了 robotmem — 一个专为机器人设计的持久化记忆系统。不是为聊天机器人设计的(那是 Mem0 和 Zep 做的事)。而是为与真实世界交互的物理智能体设计的。

思路很简单:

  1. 每个 episode 结束后,存储发生了什么 — 使用的参数、采取的轨迹、是否成功或失败,以及空间上下文。
  2. 下一个 episode 开始前,通过语义搜索检索最相关的历史经验。
  3. 利用检索到的经验引导策略偏向之前有效的策略。

代码如下:

from robotmem import learn, recall

# 成功抓取后 — 存储参数 + 结构化上下文
learn(
    insight="FetchPush: success, distance 0.012m, 28 steps, force=12.5N, angle=0.34",
    context='{"task": {"success": true}, "spatial": {"target": [1.3, 0.7, 0.42]}, "params": {"force_peak": 12.5, "approach_angle": 0.34}}'
)

# 下一个 episode:之前什么有效?
memories = recall(
    "push cube to target position",
    context_filter={"task.success": True}
)

# 使用检索到的参数引导策略
for m in memories["memories"]:
    print(m["content"], m["_rrf_score"])

结果:成功率提升 +25%

我们在 MuJoCo FetchPush-v4 上进行了三阶段实验测试:

RobotMem FetchPush 基准测试结果:阶段 A 42%,阶段 B 53%,阶段 C 67%

FetchPush-v4 基准测试。共 90 个 episode,5 分钟内可复现。

仅通过记住过去的经验,就实现了 +25 个百分点的提升(42% → 67%)。无需重新训练模型。无需架构更改。只靠记忆。

底层工作原理

robotmem 将经验存储在本地 SQLite 数据库中,提供三种搜索机制:

在搜索之上,robotmem 还提供:

为什么不直接用 Mem0 或 Zep?

这是个合理的问题。区别如下:

特性robotmemMem0 / Zep / Letta
目标用例机器人聊天机器人
多模态感知5 种类型仅文本
轨迹存储支持不支持
数值参数支持不支持
空间搜索支持不支持
离线能力支持(本地 ONNX)需要云端

Mem0 擅长记住用户喜欢咖啡。robotmem 擅长记住在位置 [1.3, 0.7, 0.42] 处红色杯子的最佳夹持力为 12.5N。

5 分钟体验

你可以自己复现基准测试:

pip install robotmem gymnasium-robotics
cd examples/fetch_push
PYTHONPATH=../../src python demo.py

或者尝试零依赖快速入门(无需 MuJoCo):

pip install robotmem

python -c "
from robotmem import learn, recall
learn(insight='grip_force=12.5N works best for red cups')
result = recall(query='grip force')
print(result)
"

赋予你的机器人记忆

开源。纯 CPU。一行安装。

pip install robotmem