TMCRA-agent-memory-algorithm / README.zh-CN.md
2009YU's picture
Add files using upload-large-folder tool
3a64edb verified
|
Raw
History Blame Contribute Delete
7.85 kB

TMCRA 长记忆运行时

TMCRA logo

English version

TMCRA 是给 Agent 系统提供长期记忆能力的运行时层。它帮助大语言模型在长对话历史中检索、连接和推理相关记忆,而不需要在每一轮都暴露完整上下文。

本仓库包含一个冻结的 TMCRA 基线包,包括模型权重、运行时代码快照、训练元数据和 LongMemEval S500 测评结果。

许可证:MIT。

TMCRA 的作用

TMCRA 在 Agent 应用和回答模型之间增加一层专门的记忆运行时。

在写入阶段,TMCRA 会把对话转成记忆节点、事件单元、profile 信号和图路径。这让系统不仅能保存孤立事实,也能保存不同轮次、不同会话之间的事实关系。

在召回阶段,TMCRA 会对图节点和路径进行打分,选择紧凑的证据,并只把最相关的记忆上下文注入给回答模型。回答模型仍然负责自然语言推理和最终表达,TMCRA 负责长记忆组织、召回和证据呈现。

当前运行时重点覆盖:

  • 用户事实记忆
  • 助手回答细节记忆
  • profile 与偏好记忆
  • 时间记忆
  • 跨会话图隧穿
  • 学习式节点/路径打分
  • 面向下游 LLM 的紧凑证据选择

算法结构图

flowchart LR
    A["对话轮次"] --> B["写入层"]
    B --> C["记忆节点"]
    B --> D["事件单元"]
    B --> E["Profile 信号"]
    B --> F["时间信号"]

    C --> G["图记忆库"]
    D --> G
    E --> G
    F --> G

    G --> H["学习式节点 Scorer"]
    G --> I["学习式路径 Scorer"]
    H --> J["证据选择"]
    I --> J

    J --> K["紧凑记忆上下文"]
    K --> L["回答模型"]
    L --> M["Agent 回复"]

    N["用户问题"] --> H
    N --> I
    N --> J
    N --> L

写入层从对话中生成记忆单元。图记忆库保存事实、事件、profile 信号、时间信号和跨会话连接。学习式节点/路径 scorer 会根据当前问题选择相关证据,回答模型使用这些紧凑证据生成最终回复。

为什么需要 TMCRA

长期运行的 Agent 不能只依赖简单向量召回。它需要保存用户事实、偏好、时间线变化、跨会话事件,以及多步证据链。

TMCRA 将记忆组织成图节点和学习得到的召回路径,再把压缩后的证据提供给回答模型。目标是让外部 Agent 可以通过运行时/API 层使用长期记忆,同时保持记忆算法和模型权重可以独立部署。

如何使用

推理或运行时使用时,加载下面目录中的图 scorer 权重:

models/action_frame_tunnel_graph548_tunnel_fusion_train_20260524_042557/

主要运行时文件是:

node_scorer.pt
path_scorer.pt
export_manifest.json

典型运行配置如下:

export TMCRA_NODE_MODEL_PATH="models/action_frame_tunnel_graph548_tunnel_fusion_train_20260524_042557/node_scorer.pt"
export TMCRA_PATH_MODEL_PATH="models/action_frame_tunnel_graph548_tunnel_fusion_train_20260524_042557/path_scorer.pt"
export TMCRA_RETRIEVAL_MODE="hybrid_node_scored"
export TMCRA_REQUIRE_LEARNED_SCORER="1"

测评入口代码快照:

code/run_lme_s10_native_tmcra.py

核心适配器代码快照:

code/memory_adapters.py

部署时,将两个 scorer 文件加载到 TMCRA adapter 中,并让 Agent 的记忆中间件调用 TMCRA 召回 API。回答模型可以是任意 OpenAI 兼容接口或本地 LLM;TMCRA 提供选中的记忆证据,回答模型生成最终回复。

依赖环境

当前代码快照基于 Python。建议运行环境包括:

  • Python 3.10 或更高版本
  • PyTorch,推荐使用 CUDA 做模型推理
  • NumPy 及常见 Python 数据处理库
  • 用于回答层和写入层的 OpenAI 兼容接口或本地 LLM endpoint
  • 从 GitHub 拉取完整模型包时建议支持 Git LFS

benchmark 脚本使用 LongMemEval 格式输入数据,并输出 JSONL 格式的预测和 judge 结果。实际运行时部署可以直接使用同一套模型文件,不需要运行 benchmark harness。

可开启模块

TMCRA 当前也保留了用于召回和规划实验的可选接入口。部署或评估时,如果目标场景需要,可以按需开启这些模块。

  • Embedder 接入口:可选的语义 embedding 通道,可以和图记忆 scorer 并行工作。它用于在图证据选择前或选择过程中提供额外的稠密语义召回,但不替代学习式图节点/路径 scorer。
  • LLM planner 接入口:可选的规划 hook,可以调用外部 LLM 来整理证据、扩展 query intent,或在最终回答前生成 answer plan。它适合实验和更高成本的部署场景;默认基线仍保持核心图 scorer 链路可以独立测量。

这些接口是可集成的扩展点,不是冻结 S500 基线的必需依赖。下游部署可以根据成本和效果选择轻量的 scorer-only 路径,或开启 embedder/planner 辅助的增强路径。

包含内容

  • code/:该基线使用的运行时和测评代码快照。
  • models/action_frame_tunnel_graph548_tunnel_fusion_train_20260524_042557/:完整训练后的图模型输出目录。
  • results/:预测结果、judge 输出、汇总指标和压缩后的运行结果。
  • docs/:基线记录和结果说明。

补充文档:

  • docs/BASELINE_S500_20260525.md:benchmark 记录和子任务指标。
  • docs/TRAINING.md:模型训练方向和随包发布的训练产物说明。
  • docs/OPTIONAL_MODULES_AND_PARALLEL.zh-CN.md:embedder/planner 可选接入口和并行评估推进方案。
  • docs/OPTIONAL_MODULES_AND_PARALLEL.md:上述文档的英文版本。

模型包

随包发布的模型目录保留了图 scorer 栈的完整训练输出:

  • node_scorer.ptpath_scorer.pt:运行时图打分权重。
  • node_scorer_best.ptpath_scorer_best.pt:验证表现最好的 checkpoint 别名。
  • node_scorer_last.ptpath_scorer_last.pt:训练结束时的 checkpoint 别名。
  • checkpoints/:按 epoch 和 step 保存的中间 checkpoint。
  • export_manifest.jsontrain_summary.jsontrain.log:模型元数据和训练轨迹。

当前优势

  • 单会话直接用户事实召回较强。
  • 助手细节召回较强。
  • 对变化事实的 knowledge-update 任务有较稳定表现。
  • 已具备可工作的时间记忆和偏好召回层,后续仍有专项优化空间。

当前改进方向

  • multi-session 聚合和 unit coverage。
  • 更深的时间图推理。
  • 偏好 profile 抽象和跨会话隧穿。
  • query graph 与 memory graph 的复杂问题匹配。

适用场景

本仓库是 TMCRA 长记忆运行时工作的对外展示包,适合用于:

  • benchmark 审阅
  • 模型和结果检查
  • 复现冻结基线
  • 展示 TMCRA 如何作为外部 Agent 的记忆运行时进行封装

Benchmark 结果

本包包含一次完整 LongMemEval S500 测试。

  • Benchmark:LongMemEval S set,500 条样本
  • Evaluation:official-compatible LongMemEval judge prompt
  • Judge 模型:gpt-4o,解析为 gpt-4o-2024-08-06
  • 本轮使用的写入层:DeepSeek v4 Flash
  • 本轮使用的回答层:GPT5.4-compatible API
  • 总准确率:310 / 500 = 62.00%

各任务类型结果

任务类型 准确率 数量
single-session-user 81.43% 70
single-session-assistant 78.57% 56
knowledge-update 70.51% 78
temporal-reasoning 63.16% 133
single-session-preference 56.67% 30
multi-session 39.85% 133

benchmark 输出文件位于:

results/predictions.jsonl
results/judge_gpt4o_alias_vectorengine.jsonl
results/judge_gpt4o_alias_vectorengine.jsonl.summary.json
results/lme_s500_frozen_baseline38_full10_20260525_results.tar.gz