Memory 管理#
RPent 的 memory 按机器人维护,用于复用已验证的任务经验和操作策略,避免每次运行 都从头试错。
运行模式#
两种运行模式对 memory 的使用方式不同:
Evaluation 读取已有 memory,但不会更新 memory。
Exploration 用于生成和更新本地 memory,目前仅 LIBERO 支持。
Exploration 和本地 memory Evaluation 的详细流程见 LIBERO 探索文档。
目录结构#
发布到 Hugging Face 的 memory 与本地准备用于评测的 memory 使用相同的目录结构:
<memory-root>/
|-- MEMORY.md
|-- global/
|-- suite/
`-- task_only/
|-- <cell>.json
|-- <cell>_recipe.jsonl
`-- <task_key>.md
默认本地目录为 memory/<robot>/;Hugging Face 数据集中相同内容位于
<robot>/ 子目录下。自定义 --memory-dir 可指向任意采用上述结构的目录。
各目录均按需存在,机器人只需提供实际使用的目录:
global/保存从成功经验中提炼的跨任务通用经验。suite/保存探索过程中按 suite 组织的任务级经验,可汇总多次尝试, 并在同一任务的不同 seed 间复用。task_only/保存成功运行产生的 audit、recipe 等同一任务参考文件。MEMORY.md用于索引global/和suite/。
评测时,规划器只能读取当前机器人的 memory;缺少某一类 memory 不会阻止任务运行。
使用 memory#
默认情况下,RPent 从 Hugging Face 数据集 RLinf/RPent-memory 把当前机器人的
memory 同步到 memory/<robot>/。数据集是公开的,无需 token 即可下载。设
HF_HUB_OFFLINE=1 可跳过同步,只用本地副本。memory 是可选的:如果某机器人在
数据集上没有 memory,或同步失败,运行也会用本地已有的内容继续。
也可以按相同的目录结构自行准备本地 memory,通过对应环境的 --memory-dir 选项或
本地 memory 配置使用。Hugging Face memory 和本地 memory 使用相同的目录规范,区别只
在于来源。
工具读写 memory 时,会使用当前会话的 MemoryManager 检查权限:评测只能读取
当前机器人的已发布内容,探索时可以向自己的 _internal/inbox/<cell>/ 写入草稿。
公共文件工具已接入这些检查;新增需要访问 memory 的工具时,可通过
ctx.memory.authorize_read(path) 或 authorize_write(path) 获取允许访问的路径。
运行中的 recipe 由 Toolkit.write_recipe(recipe_tag) 统一导出,记录成功的
机器人动作与感知调用,也保留同一会话中的 reset。文件操作和 finish 不会写入
recipe。是否将生成的 audit 和 recipe 纳入 memory,仍由运行流程根据结果决定。
贡献 memory#
Hugging Face 上的 memory 由 RPent 维护者审核和发布,仓库本身不提供自助上传入口。
如果希望新增或更新 memory,可以在 RPent 仓库提交 issue,附上对应的 memory 文件和
来源信息,由维护者审核后加入 RLinf/RPent-memory。