跳到主要内容

记忆

记忆服务是长期记忆层:语义检索、写入和压缩归纳。search / save 的请求和响应使用 std_msgs/Stringcompact 接收空请求,返回 std_msgs/String。embedding、向量库和检索数量属于实现细节,不进能力约定。

能力约定 TOML 在 capabilities/service/memory/;直接使用的接口定义语言(Interface Definition Language,IDL)文件位于 capabilities/lib/memory/,字符串载荷复用 std_msgs/String

新软件包省略 Driver 条目,由框架自动注册共享的 robonix/lifecycle/driver;显式选择共享 Driver 的行为相同。未实现生命周期回调时,框架记录警告并执行空操作。

后向兼容:记忆服务命名空间 Driver

robonix/service/memory/driverlifecycle/Driverservice/memory/driver.v1.toml 只用于仍由软件包自行维护 Driver TOML 的旧实现。目前仍可使用,但计划迁移到共享 Driver;两种 Driver 不能同时注册。详见生命周期兼容流程

接口

能力约定 ID模式默认实现传输载荷(IDL)能力约定 TOML
robonix/service/memory/searchrpc模型上下文协议(Model Context Protocol,MCP)memory/Searchstd_msgs/Stringstd_msgs/Stringservice/memory/search.v1.toml
robonix/service/memory/saverpcMCPmemory/Savestd_msgs/Stringstd_msgs/Stringservice/memory/save.v1.toml
robonix/service/memory/compactrpcMCPmemory/Compact(空请求 → std_msgs/Stringservice/memory/compact.v1.toml

参考实现:Robonix 源码中的 services/memsearchmemsearch[onnx] + milvus-lite)。三个记忆操作都用 @memory.mcp(...) 暴露,不挂载业务 gRPC servicer。MCP 服务内部的工具名默认取 leaf searchsavecompact,但 Atlas 发现与 RTDL 路由仍使用完整 robonix/service/memory/searchrobonix/service/memory/saverobonix/service/memory/compact。Driver 由 Robonix API 以 gRPC 提供。

生命周期与运行行为

提供方注册后等待 Driver(CMD_INIT)。参考实现在 on_init 中解析实例配置、创建存储目录、配置 ONNX Runtime、构造 MemSearch 后端,并为 Markdown 语料建立初始索引。后端构造或首次索引失败时,CMD_INIT 返回错误,提供方进入 ERROR,不会继续进入 ACTIVE。相同配置的重复初始化是幂等操作;已初始化后再传入不同配置会返回错误。

初始化成功后,启动器发送 CMD_ACTIVATE 进入 ACTIVE。参考实现没有自定义激活或去激活处理,这两个命令使用框架的默认状态转换;关闭时由框架停止服务端。业务工具不会在后台补做初始化:未完成 CMD_INIT 时,后端访问会失败。

运行期间,search 在后端异常时返回“检索不可用”结果;save 先把内容追加到当日的 YYYY-MM-DD_notes.md,再尝试重新建索引。重建失败时文件内容仍已保存,当前工具响应仍返回成功,失败详情写入日志。

配置

实例 config: 通过 Driver(CMD_INIT) 传入并优先于环境变量;环境变量仅作为兼容回退。文件系统相对路径以运行时工作目录解析。需要跨构建或缓存清理保留数据时,应使用绝对路径或部署目录中的持久目录。

config:环境变量回退默认值用途
memory_dirAGENT_MEMORY_DIR./agent_memoryMarkdown 记忆文件目录
milvus_uriAGENT_MILVUS_URI./agent_milvus.dbMilvus Lite 数据库路径,或远程 Milvus URI / host:port
onnx_threadsMEMSEARCH_ONNX_THREADS1正整数;在 aarch64 上设置 ONNX Runtime 线程数

MEMSEARCH_LOG_LEVEL 控制日志等级,默认值为 INFO;它是进程环境变量,不属于实例 config:

默认使用 ONNX embedding,search 固定取 top_k=2compact 优先读取 VLM_BASE_URL / VLM_API_KEY / VLM_MODEL,再回退到对应的 OPENAI_* 变量;两组模型名都未设置时使用 gpt-5.5。缺少两组 API 密钥时,compact 返回不可用说明,不调用外部端点。