fudan-generative-vision/Remory
Remory: Learning Residual Memory for Context Compaction
Remory とは?
Remory は、大規模言語モデル(LLM)に学習された「残差メモリ」を追加するプラグインで、重要な情報を失わずに長い会話履歴を圧縮できるようにします。エージェント(例:Codex というコーディングアシスタント)がコンテキストを切り詰める必要がある場合、Remory はまず通常の要約を作成し、次に残りの隠れ状態を小さな“ソフトトークン”セットにエンコードします。それらのトークンは要約と一緒に保存され、次の生成ステップで自動的に再挿入されるため、凍結されたベースモデルは完全なコンテキストをまだ持っているかのように続行できます。
关键思想
- 上下文压缩 – 大型代理很快达到其令牌限制(Qwen 3.8-27B 为 256K)。Remory 保留简洁摘要以及捕获摘要遗漏内容的学习残差。
- 冻结基础模型 – 底层 LLM(Qwen 或 GLM)从不进行微调;仅训练轻量级记忆网络,使该方法易于适应新模型。
- 在线训练 – 命令行工具(
/remory train)可以在与实时 Qwen 会话交互时持续改进记忆网络。 - 零代码集成 – Remory 附带 SGLang 钩子和一个小型客户端库;您只需启动服务器,并将现有代理(或提供的 r-codex UI)指向它。
快速开始(Qwen 3.8-27B)
# 1️⃣ 克隆并安装
git clone https://github.com/1ring2rta/Remory.git && cd Remory
python deploy/install.py # 创建包含 SGLang、CUDA 工具的 .remory/venv
source .remory/venv/bin/activate
# 2️⃣ 启动模型 + 记忆服务器(需要 2 × 80 GB GPU)
CUDA_VISIBLE_DEVICES=0,1 python -m remory.launch_server \
--model-path Qwen/Qwen3.8-27B \
--remory-checkpoint mocoV3/Qwen3.8-27B-REMORY-1.9B \
--tp 2 \
--host 127.0.0.1 --port 8421
# 3️⃣ 打开与服务器通信的 Codex UI
source .remory/venv/bin/activate
r-codex -C /path/to/your/project # 使用 /compact 触发压缩
该 UI 允许您运行正常聊天,然后调用 /compact。系统将:
- 生成已删除消息的摘要。
- 将残差隐藏状态编码为软令牌。
- 存储检查点(保存在
.remory/memory.sqlite中)。 - 从该检查点继续对话。
如何以编程方式使用
from remory.adapters import Harness
from remory.client import Client
with Client("http://127.0.0.1:8421", session_id="demo") as client:
agent = Harness(client, codec) # codec = your chat template
checkpoint = agent.compact(
prefix_messages=system_and_tools, # prompts that stay
removed_messages=history, # messages to discard
summary_prompt=summary_prompt,
summary_schema=summary_schema,
)
# generate a new answer using the saved residual memory
answer = agent.generate(
checkpoint=checkpoint,
prefix_messages=system_and_tools,
messages=new_user_messages,
)
Harness.compact 方法执行三步过程(摘要 → 残差 → 检查点),并返回可传递给 generate 的检查点。
训练自己的记忆网络
Remory 为 Qwen 和 GLM 检查点提供两阶段训练脚本:
- 阶段 I – 重建 – 学习从短前缀重建隐藏状态。
- 阶段 II – 摘要条件残差 – 训练残差记忆,使其在基于摘要的条件下有用。
两个阶段都保持基础 LLM 冻结;仅更新记忆网络(约 1-2B 参数)。
training/文件夹包含:
- 4 个 GPU 运行的启动脚本
- 示例 JSONL 数据格式(历史、摘要、续写)
- 恢复 / 检查点处理
基准与结果
作者在两个长时程代理套件上评估了 Remory:
- BrowseComp(网络搜索任务)和 Terminal-Bench 2.1(shell 交互)。
- 添加残差记忆提高了成功率并减少了工具输出重复。
- 在 SummHay 基准上,Remory 在使用仅 5.2% 的原始令牌预算时实现了接近全上下文的性能。
性能数据可视化于 assets/benchmarks.png,并在随附论文(arXiv 2610.11287)中有详细说明。
获取模型
| 基础模型 | Remory 检查点 | 运行方式 |
|---|---|---|
| Qwen-3.8-27B | mocoV3/Qwen3.8-27B-REMORY-1.9B |
SGLang 或 🤗 Transformers |
| GLM-5.3-Flash | mocoV3/GLM-5.3-Flash-REMORY-1.24B |
SGLang |
两个检查点均托管在 Hugging Face 上,可使用 --remory-checkpoint 标志加载。
许可证与致谢
- MIT 许可证(见
LICENSE)。 - 基于 DFlash 和 SpecForge 的记忆思想,并使用 SGLang 进行高吞吐量推理。
- 研究论文引用如下:
@misc{xia2026remory,
title = {Remory: Learning Residual Memory for Context Compaction},
author = {Xia, Hanchen and Chen, Baoyou and Ge, Yutang and Deng, Naihao and
Yang, Senqiao and Dong, Zilong and Yuan, Weihao and Zhu, Siyu},
year = {2026},
eprint = {2610.11287},
archivePrefix = {arXiv},
primaryClass = {cs.CL}
}
TL;DR
Remory 允许您通过添加一个位于正常摘要之后的微小学习记忆,让冻结的 LLM(如 Qwen 3.8-27B)在长时间运行的代理上继续工作。使用提供的脚本安装,通过 SGLang 启动,然后使用 r-codex UI 或 Python Harness 类来压缩和继续对话。训练是可选的,但支持自定义领域。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト