开发与工程 ✓ Microsoft · 官方 agent-memorysemantic-retrievalmemory-indexingchromadbdocument-processingreinforcement-learningmulti-agent-memorybenchmarking

Memora 智能体记忆框架

为智能体自动整理、更新并检索兼顾细节与抽象的长期记忆。

FollowAgents 评估 · FARS-2.1
不推荐
44/ 100 五分制 2.2 / 5
1 2 3 4 5 6
1信任安全8 / 29 · 1.4/5

README 说明了用户标识、共享与隔离概念、向量数据库以及 Azure/OpenAI 配置,且论文、作者、许可证和 Microsoft 来源归属清楚,因此来源归属获满分。但材料没有展示最小权限的具体实施、写入或合并前的用户确认、完整的数据流与第三方传输边界、敏感信息的加密/脱敏/保留策略,自动去重、合并和更新也未提供回滚机制。依赖没有版本锁定或漏洞控制证据;SECURITY.md 仅提供漏洞报告渠道。

2可靠稳定3 / 14 · 1.1/5

安装、查询和实验流程总体连贯,但 Python 3.12 徽章与 Python >=3.10 前提、两个不同导入路径等细节降低自洽性。requirements.txt 列出依赖,README 也提示 GRPO 需要 GPU,但未锁定版本、说明兼容矩阵或提供可用性保障。材料没有展示运行时失败消息、重试、降级或错误恢复行为。

3适用触发12 / 18 · 3.3/5

材料充分覆盖代理开发者、对话和文档记忆、共享记忆、多个检索策略及两类基准场景,因此受众与场景清晰。对 GRPO 的实验性质和 GPU 要求有明确提示,但存储后端、隐私隔离及自动处理能力的边界仍多为概括性声明。API 调用触发点清楚,而自动抽取、分段、合并和更新何时发生及如何控制并不精确。Python、Azure/OpenAI、环境变量、Hydra 和部分平台条件有说明,但缺少完整的平台与版本兼容范围。

4规范维护10 / 18 · 2.8/5

README 的章节、项目树、配置表和任务入口组织良好。安装步骤和多个示例可用于普通入门,但关键 cfg 构造被委托给未提供内容的 quickstart.py,且没有 FAQ。导入路径存在 memora.memora_client 与 memora 两种写法,稳定公共接口不够明确。已标注 GRPO 为实验性且需要 GPU,但没有系统性的已知限制。MIT 文本完整明确。未提供版本策略或变更日志;Microsoft 归属和安全报告渠道支持维护责任判断,但没有列出具体维护者、支持承诺或发布节奏。

5有效结果7 / 13 · 2.7/5

查询结果结构、代理集成模式以及将记忆注入回答流程均有示例,输出对开发者具有可用性。分离记忆值、主抽象和线索锚点提供了相对于普通向量检索的明确增量构想,但所给材料没有基准结果或比较数据来充分证明收益。云端模型调用、向量存储和可选 GPU 训练会产生资源成本,而材料仅提到轨迹评分中的成本,没有量化延迟、费用或运维权衡。

6证据核验4 / 8 · 2.5/5

核心设计可追溯到具名论文,README 还指向具体模块、配置目录和基准入口,因此部分主张具有可检查路径。许可证与安全流程由独立文件佐证,但性能、精度、隐私隔离和后端兼容等功能性主张主要只出现在 README,缺少测试、结果或其他所给文件的交叉印证。材料明确区分了实验性 GRPO,但若干比较性和效果性表述仍未与实证结果清晰分离。

证据充分度: 评估于 2026年8月14日 审查版本 dec3f8f2444e
源码中未见的安全控制:执行前用户确认、依赖安全审查、回滚或恢复路径
使用前请注意
  • 记忆内容可能被发送至 OpenAI/Azure 服务并存入 ChromaDB 或 Redis;在处理个人或机密数据前,应自行核实实际数据流、访问隔离、保留、删除和加密实现。
  • requirements.txt 完全未锁定版本;部署前应建立锁文件、软件物料清单和漏洞扫描流程,并验证 Python、GPU及各后端的兼容性。
  • 自动去重、合并和更新可能改写记忆,但材料未说明确认、审计或回滚机制;生产使用前应增加备份、变更记录和恢复控制。
  • README 中的性能、精度和灵活性描述没有由所给测试或基准结果印证,本评估也未执行代码。
评估证据 [1][2][3][4][5]
查看完整评分方法 →

这个 Agent 能做什么,适合哪些场景?

Memora 是一个 Python 智能体记忆框架,围绕“原始记忆值、主抽象、线索锚点”三部分构建分层记忆表示。完整信息保存在不参与索引的 memory value 中,而 primary abstraction 和 cue anchors 负责组织、更新及检索入口。核心库提供 MemoraClient、聊天与文档记忆构建器、文档处理器、ChromaDB/Redis 数据库客户端,以及语义、提示驱动、混合和实验性 GRPO 检索组件。应用通过 Python API 写入对话或文档并查询相关记忆,再把结果放入自身的模型提示词中生成回答;Memora 本身不规定完整的智能体运行时或用户界面。项目可从源码部署,并提供 LoCoMo、LongMemEval 实验程序以及基于 Hydra 的配置。

端到端流程从 MemoraClient.add(context, type="doc") 开始:框架处理对话或文档,将内容按主题片段切分,并提取事实、事件和程序性知识,形成包含 memory value、primary abstraction 与 cue anchors 的结构化条目。随后,它通过 ChromaDB 和语义嵌入存储记忆,并执行去重、合并和更新;可选 cue index 将高层线索映射到相关记忆。查询时,MemoraClient.query(context, top_k=5) 执行语义检索,MemoraClient.advance_query(...) 则可选择 prompt、hybrid 或实验性的 grpo 策略。提示驱动策略使用 LLM 逐步调整搜索,混合策略结合语义搜索与 BM25/关键词匹配,GRPO 策略可加载训练后的本地检索模型。返回结果包含可供应用读取的记忆条目,例如 entry.index 和 entry.value;宿主智能体负责把这些记忆加入提示并生成最终回答。仓库还包含 PDF、DOCX、Excel、Markdown 等文档处理器、交互式记忆库浏览组件,以及 LoCoMo 和 LongMemEval 基准运行器。

  1. 正在开发对话助手的 Python 团队,可在每轮回答前检索用户历史,并在回答后把新对话写回长期记忆。
  2. 需要处理长时间跨度对话的研究人员,可使用 LoCoMo 和 LongMemEval 运行器比较语义、提示驱动或线索索引检索配置。
  3. 构建多智能体系统的工程团队,可让同一环境中的多个智能体访问统一记忆空间,同时按智能体或角色控制隔离与共享。
  4. 需要保存事实、情节和操作流程的应用开发者,可利用结构化记忆条目保留原始细节,并通过抽象和线索进行访问。
  5. 拥有 GPU 并研究学习型检索策略的团队,可收集轨迹、评分并通过 GRPO 与 LoRA 训练 Qwen 3B/7B 检索策略。

这个 Agent 有哪些优点和局限?

优点
  • 将完整 memory value 与可索引的 primary abstraction、cue anchors 分离,能够保留细节而不直接对原始内容建立索引。
  • 覆盖写入、切分、去重、合并、更新、检索和结果格式化等完整记忆生命周期,并通过 MemoraClient 提供较小的接入界面。
  • 同时提供语义、提示驱动、语义加 BM25/关键词的混合检索,以及实验性 GRPO 策略,可针对精度、召回率和调用方式选择方案。
  • 支持共享记忆空间、角色或智能体范围控制,以及本地或远程存储配置,适合多智能体环境。
  • 仓库包含 LoCoMo 和 LongMemEval 实验运行器,便于在已建立的长时记忆基准上测试配置。
局限
  • 标准配置依赖 OpenAI API 或 Azure OpenAI 的模型与嵌入服务,需要凭据、网络访问并产生外部服务调用成本。
  • 提示驱动检索会进行多步 LLM 调用;其延迟、调用次数和费用可能高于单次语义检索。
  • GRPO 路径被明确标记为实验性,训练需要 GPU,并引入轨迹采集、评分、LoRA 模型训练和检查点管理成本。
  • 宿主应用仍需自行实现回答生成、提示拼装和智能体循环;Memora 不是开箱即用的聊天产品或完整智能体运行时。
  • 文档展示的默认持久化与检索涉及 ChromaDB 和嵌入配置;迁移现有记忆系统需要把原数据转换为 Memora 的三部分表示并调整集成代码。

如何安装或部署这个 Agent?

前提是 Python >= 3.10。执行:

git clone https://github.com/microsoft/Memora
cd Memora

pip install -e .

常规检索还需配置 OpenAI API 或 Azure OpenAI。使用 OpenAI 时设置 export OPENAI_API_KEY="sk-...",并在 YAML 中设置 openai.api_type: "openai"openai.api_key: "${oc.env:OPENAI_API_KEY}"openai.embedding_model: "text-embedding-3-small"。使用 Azure 时设置 AZURE_OPENAI_ENDPOINTAZURE_MANAGED_IDENTITY_CLIENT_ID,并配置聊天及嵌入端点、API 版本、部署名称和模型。只有训练实验性 GRPO 策略时才明确要求 GPU。

如何使用这个 Agent?

先按照 quickstart.py 构造配置对象 cfg,然后运行:

from memora.memora_client import MemoraClient
memory_client = MemoraClient(cfg=cfg, user_id="my_user")
memory_client.add("Alice is moving to Seattle for a new job.", type="doc")
results = memory_client.query("Where is Alice moving?", top_k=5)

for entry in results:

print(f"{entry.index}: {entry.value}")

需要提示驱动检索时调用 memory_client.advance_query("Where is Alice moving?", query_type="prompt", top_k=5)。接入智能体时,在生成回答前调用 query,把返回记忆加入宿主应用的提示;生成回答后,将 UserAssistant 对话拼接并通过 add(..., type="doc") 保存。运行 LoCoMo 示例:cd app/locomo,然后执行 python run_memora.py llm.model="gpt-4.1-mini" memory.memory_store="memora-cue" memory.enable_cue_index=True retrieval.strategy="prompt"

这个 Agent 与同类方案有什么区别?

与直接索引全部内容的 RAG 管线或扁平记忆库相比,Memora 不索引完整 memory value,而是索引一对一的 primary abstraction 和多对多的 cue anchors。与图式知识库相比,它用较轻量的抽象脚手架组织记忆,不要求底层数据服从固定图结构。其目标是在保留原始细节的同时,让检索入口更受控;实际效果仍需结合仓库提供的 LoCoMo 或 LongMemEval 实验进行验证。

常见问题

必须使用 OpenAI 服务吗?
文档中的常规配置明确支持 OpenAI API 和 Azure OpenAI。实验性 GRPO 检索可使用经过训练的本地 Qwen 3B/7B 策略替代提示驱动检索调用,但资料没有证明完整的摄取、嵌入和回答流程能够完全脱离已配置的模型服务。
Memora 会直接生成最终回答吗?
它会检索并格式化记忆以供提示使用,但示例中的回答生成仍由宿主智能体实现。应用需要把检索结果注入 LLM 提示,并负责最终响应逻辑。
能否让多个智能体共享记忆,同时保持隔离?
可以。项目说明支持同一环境中的共享记忆层,并允许按智能体或角色限定访问范围,以实现选择性共享和隐私隔离。
需要 GPU 吗?
安装、语义检索和提示驱动检索没有注明必须使用 GPU。只有训练实验性的 GRPO 检索策略被明确标注为需要 GPU。
如何评估它是否适合长对话应用?
仓库提供 LoCoMo 和 LongMemEval 运行器,可通过 Hydra 命令行覆盖模型、记忆库、线索索引和检索策略等配置。资料没有给出可直接采用的统一性能或成本结论,因此应使用接近自身数据和调用设置的实验进行判断。

对比同类 Agent

用同一套 FARS 评审,横向比较这个 Agent 所属的短名单。

相关 Agents