【论文阅读】Agent 记忆机制(37):OCR-Memory——用视觉压缩与定位转录保存长轨迹证据
文章目录
前言
随着 Agent 开始执行网页操作、API 调用、代码调试等长时任务,历史轨迹会迅速膨胀。
一条完整的 Agent 轨迹可能同时包含:
- 用户提出的任务;
- Agent 的中间推理;
- 工具调用参数;
- 环境返回结果;
- 页面状态变化;
- 错误信息与修复过程。
这些信息在后续决策中都可能有用。
例如,Agent 在几十步之前访问过某个网页,并发现某个按钮只有在特定条件下才会出现。如果这段经历被保留下来,Agent 再次遇到相似页面时,就可以直接复用之前的操作经验。
问题在于,完整保留历史和有效利用历史之间存在明显矛盾:
- 直接把全部轨迹放进上下文,Token 消耗会不断增长;
- 使用摘要压缩轨迹,可能丢失错误信息、参数值和操作顺序;
- 使用文本 RAG,只能召回少量片段,并且可能检索到“语义相似但逻辑无关”的内容;
- 使用生成式记忆恢复,又可能把模糊的历史补写成并不存在的证据。
因此,长期 Agent 记忆真正需要解决的,不只是“如何保存更多信息”,而是:
如何在有限的上下文预算下,保留尽可能完整的历史,并在需要时准确取回原始证据?
OCR-Memory 提供了一个很有意思的解决思路:
不再只把历史轨迹看成文本,而是将密集文本渲染成图像,用少量视觉 Token 表示大量历史;检索时,视觉模型只负责找到相关片段的编号,最终内容仍从原始日志中逐字取回。
这使得 OCR-Memory 同时兼顾了三个目标:
- 通过视觉编码提高长期记忆的表示密度;
- 通过 Set-of-Mark 编号实现精确定位;
- 通过确定性文本回取避免生成式转写带来的幻觉。
需要注意的是,OCR-Memory 并不是让主 Agent 直接阅读历史截图并回答问题。
视觉模型在系统中的职责只是“定位”,真正注入主 Agent 上下文的内容,仍然是从原始日志中取回的文本证据。
零、论文基本信息
- 论文名称:OCR-Memory: Optical Context Retrieval for Long-Horizon Agent Memory
- 发表平台:ACL 2026 Main Conference,Long Papers
- 代码仓库:论文暂未公开代码仓库
- 作者信息:Jinze Li、Yang Zhang、Xin Yang、Jiayi Qu、Jinfeng Xu、Shuo Yang、Junhua Ding、Edith Cheuk-Han Ngai
一、背景与问题
1. 长轨迹中包含大量不可替代的细节
对于短对话任务,摘要通常能够保留大部分重要信息。
但在长时 Agent 任务中,很多关键经验恰恰存在于低层细节中,例如:
- 某条命令的完整错误信息;
- 某个 API 的实际返回字段;
- 网页元素的文本和相对位置;
- 之前失败过的操作序列;
- 某个任务中间状态对应的环境反馈。
假设一个网页 Agent 曾经执行以下操作:
- 打开设置页面;
- 点击“高级设置”;
- 修改任务类型;
- 因为没有保存配置而执行失败;
- 返回页面并补充保存操作。
如果只把这段轨迹总结为“Agent 成功修改了任务类型”,那么“必须先保存配置”这一关键程序性经验就可能丢失。
因此,摘要可以降低 Token 消耗,但不能保证保留未来任务真正需要的细节。
2. 完整上下文无法无限扩展
将一个 episode 中的 Agent 轨迹表示为:
τ ( e ) = { x 1 ( e ) , x 2 ( e ) , … , x T e ( e ) } \tau^{(e)}=\left\{x_1^{(e)},x_2^{(e)},\ldots,x_{T_e}^{(e)}\right\} τ(e)={x1(e),x2(e),…,xTe(e)}
其中:
- τ ( e ) \tau^{(e)} τ(e) 表示第 e e e 个 episode 的完整轨迹;
- x t ( e ) x_t^{(e)} xt(e) 表示第 t t t 个交互步骤;
- x t ( e ) x_t^{(e)} xt(e) 可以是用户输入、Agent 推理、工具调用或者环境反馈;
- T e T_e Te 表示该 episode 的轨迹长度。
随着任务数量增加,外部记忆中积累的轨迹会越来越多。
如果每次执行新任务都重新读取全部历史,那么主 Agent 的上下文长度、推理延迟和调用成本都会持续增加。
3. 文本检索并不等于可靠记忆
传统文本 RAG 一般通过向量相似度检索历史片段。
这种方式适合查询事实,却不一定适合检索 Agent 经验。
原因在于,Agent 经验中的相关性并不总是表现为词语或主题相似。
例如:
- 当前问题是“为什么提交按钮不可用”;
- 相关历史可能是“必须先选择许可证类型”;
- 两段文本在语义表面上并不相似,但存在明确的操作因果关系。
文本 RAG 可能召回很多与“提交按钮”相关的片段,却遗漏真正决定按钮状态的历史步骤。
4. 本文重新定义了记忆压缩问题
OCR-Memory 不再只研究如何压缩文本,而是提出了一个新的表示问题:
Agent 的长轨迹是否一定要继续以文本 Token 的形式存储和检索?
论文借鉴 DeepSeek-OCR 中的光学上下文压缩思路,将密集文本渲染成图像,再通过视觉编码器压缩为较少的视觉 Token。
这样,系统可以用图像保留完整轨迹,同时减少历史在模型上下文中的表示开销。
二、相关工作
论文将现有 Agent 长期记忆方法概括为三条主要路线。
1. 基于检索的记忆系统
这类方法将历史交互存储在外部数据库中,在新任务到来时,根据当前问题检索相关片段。
典型流程是:
历史轨迹
↓
文本切分与向量化
↓
向量数据库
↓
相似度检索
↓
相关片段进入 Agent 上下文
这类方法的优点是:
- 不需要每次读取全部历史;
- 实现相对简单;
- 容易与现有 RAG 系统结合。
但它也存在两个明显问题:
- 语义相似不一定等于决策相关;
- 分块检索可能破坏跨步骤的因果关系。
2. 经验抽象与技能记忆
另一类方法会把完整轨迹抽象为:
- 工作流;
- 技能;
- 规则;
- 反思;
- 可复用程序。
例如,AWM 会从历史任务中提取可复用的 Agent Workflow。
这种方法可以显著压缩经验,但抽象过程本身就是有损的。
高层规则能够告诉 Agent“大致应该怎么做”,却未必保留:
- 完整的错误消息;
- 具体参数;
- 中间页面状态;
- 某次操作失败的原始环境反馈。
因此,技能记忆适合复用成功模式,却不能完全取代原始情节记忆。
3. 上下文压缩
上下文压缩方法通过以下方式降低历史开销:
- 摘要;
- Token 剪枝;
- 层次化压缩;
- 潜在表示;
- KV Cache 压缩;
- 学习式上下文管理。
这类方法直接针对上下文预算问题,但通常需要在压缩率和信息完整性之间做权衡。
压缩率越高,细节丢失的风险通常也越大。
4. OCR-Memory 的定位
OCR-Memory 与上述方法的区别在于:
| 方法路线 | 保存形式 | 主要优势 | 主要问题 |
|---|---|---|---|
| 文本 RAG | 文本片段 | 实现简单,检索速度快 | 语义相似不等于决策相关 |
| 摘要记忆 | 压缩文本 | Token 消耗低 | 可能丢失细节 |
| 技能记忆 | 规则或工作流 | 便于跨任务复用 | 无法保留完整原始证据 |
| OCR-Memory | 带视觉锚点的轨迹图像 | 高密度保存历史,可逐字回取证据 | 增加存储、视觉模型和检索延迟 |
OCR-Memory 的核心增量不是“又设计了一种检索器”,而是:
将长期记忆的表示介质从纯文本扩展到图像,并把视觉检索限制为索引定位问题。
三、方法总览
为了理解 OCR-Memory 的完整流程,可以先看论文 Figure 1。

图源:论文 Figure 1。
左侧是多分辨率视觉记忆库,中间是基于 Set-of-Mark 的光学检索器,右侧是 Locate-and-Transcribe 流程。视觉模型只预测相关片段编号,系统再根据编号从原始日志中确定性取回文本,并将文本证据交给主 Agent。
OCR-Memory 的整体流程可以概括为:
Agent 历史轨迹
↓
切分为多个文本片段
↓
添加编号、红色边框和视觉锚点
↓
渲染为多分辨率图像
↓
光学检索器根据当前问题定位相关编号
↓
从原始日志中逐字取回对应文本
↓
把证据注入主 Agent 上下文
系统中存在两个不同角色:
- 光学检索器:负责从历史图像中定位相关片段;
- 主 Agent:负责基于取回的文本证据完成推理和工具调用。
这种职责分离非常重要。
OCR-Memory 不要求视觉模型直接回答问题,也不要求视觉模型精确转写整张低分辨率图像,只需要判断“哪些编号可能包含相关信息”。
四、视觉记忆库
1. 设计动机
如果直接保存轨迹文本,读取大量历史就会消耗大量文本 Token。
OCR-Memory 的基本观察是:
密集文本在渲染成图像后,可以通过视觉编码器压缩成较少的视觉 Token。
因此,论文把历史轨迹转换为图像形式的外部记忆。
2. 记忆项结构
OCR-Memory 的记忆库可以表示为:
M = { m i } i = 1 N M=\left\{m_i\right\}_{i=1}^{N} M={mi}i=1N
其中,每个记忆项为:
m i = ( I i , { s i , k } k = 1 K i , π i ) m_i=\left(I_i,\left\{s_{i,k}\right\}_{k=1}^{K_i},\pi_i\right) mi=(Ii,{si,k}k=1Ki,πi)
其中:
- M M M 表示完整外部记忆库;
- N N N 表示记忆图像数量;
- I i I_i Ii 表示第 i i i 张轨迹图像;
- s i , k s_{i,k} si,k 表示图像中第 k k k 个视觉片段对应的原始文本;
- K i K_i Ki 表示第 i i i 张图像包含的文本片段数量;
- π i \pi_i πi 表示时间戳、episode ID 等元数据。
这里的关键是,系统并没有在生成图像后删除原始文本。
OCR-Memory 实际上同时维护两种表示:
- 图像负责高密度检索;
- 原始日志负责证据恢复。
因此,图像更接近一种视觉索引,而不是原始数据的唯一副本。
3. 轨迹渲染
系统会把历史轨迹切分成多个文本片段,再将这些片段渲染到图像中。
每个片段都会被添加:
- 红色边框;
- 独立数字编号;
- 高对比度的编号背景。
论文实现中使用:
- 红色边框;
- 3 像素边框宽度;
- 36pt 粗体无衬线字体;
- 白色编号文字;
- 红色编号背景。
这样做的目的不是美化页面,而是为视觉模型提供稳定的定位锚点。
4. 视觉压缩
给定一张输入图像 I I I,视觉编码器将其转换为压缩后的视觉表示:
Z = f e n c ( I ) ∈ R n ( r ) × d l a t e n t Z=f_{\mathrm{enc}}(I)\in \mathbb{R}^{n(r)\times d_{\mathrm{latent}}} Z=fenc(I)∈Rn(r)×dlatent
其中:
- f e n c f_{\mathrm{enc}} fenc 表示图像编码器;
- r r r 表示图像分辨率模式;
- n ( r ) n(r) n(r) 表示对应的视觉 Token 数量;
- d l a t e n t d_{\mathrm{latent}} dlatent 表示每个视觉表示的维度。
论文使用 DeepSeek-OCR 提供的多分辨率模式:
n ( r ) ∈ { 64 , 100 , 256 , 400 } n(r)\in\{64,100,256,400\} n(r)∈{64,100,256,400}
分别对应:
- 512 × 512 512\times512 512×512;
- 640 × 640 640\times640 640×640;
- 1024 × 1024 1024\times1024 1024×1024;
- 1280 × 1280 1280\times1280 1280×1280。
分辨率越高,文字越清楚,但消耗的视觉 Token 也越多。
五、Locate-and-Transcribe:先定位,再回取原文
1. 设计动机
如果让视觉模型直接读取低分辨率历史图像并生成文本,容易出现两个问题:
- 长文本生成增加推理延迟;
- 模糊文字可能诱发视觉模型补全或幻觉。
因此,OCR-Memory 不让模型生成证据,而是只让模型输出相关片段编号。
2. 方法流程
给定当前问题 q q q 和记忆库 M M M,光学检索器首先输出相关片段的索引集合:
S ^ ( q ) = g θ ( q , M ) \hat{S}(q)=g_{\theta}(q,M) S^(q)=gθ(q,M)
然后系统根据索引确定性取回原始文本:
E = F e t c h ( S ^ ( q ) , M ) E=\mathrm{Fetch}\left(\hat{S}(q),M\right) E=Fetch(S^(q),M)
其中:
- g θ g_{\theta} gθ 表示光学检索器;
- S ^ ( q ) \hat{S}(q) S^(q) 表示预测得到的相关片段索引;
- F e t c h \mathrm{Fetch} Fetch 表示从原始日志中读取文本;
- E E E 表示最终注入主 Agent 上下文的证据。
假设视觉模型判断第 3 3 3 张图像中的第 7 7 7 个片段与当前问题有关,那么系统不会让模型转写这段内容,而是直接执行:
图像编号:(3, 7)
↓
查询原始日志映射
↓
返回 s_{3,7} 的原始文本
3. Set-of-Mark 视觉锚点
每张图像中的文本块都带有唯一编号。
对于第 i i i 张图像,光学检索器输出一个二值相关性向量:
y ^ i ( q ) = ( y ^ i , 1 , … , y ^ i , K i ) \hat{y}_i(q)=\left(\hat{y}_{i,1},\ldots,\hat{y}_{i,K_i}\right) y^i(q)=(y^i,1,…,y^i,Ki)
其中:
- y ^ i , k = 1 \hat{y}_{i,k}=1 y^i,k=1 表示第 k k k 个片段相关;
- y ^ i , k = 0 \hat{y}_{i,k}=0 y^i,k=0 表示第 k k k 个片段不相关。
所有正例片段组成全局索引集合:
S ^ ( q ) = { ( i , k ) ∣ y ^ i , k = 1 } \hat{S}(q)=\left\{(i,k)\mid \hat{y}_{i,k}=1\right\} S^(q)={(i,k)∣y^i,k=1}
这种设计把一个开放式文本生成任务,变成了一个受约束的片段选择任务。
模型的输出空间从任意自然语言缩小为“0、1和编号”,因此更容易控制。
4. 基于概率的召回策略
论文没有只依赖最终生成的 0 或 1,而是从解码器 Logits 中计算相关概率:
p i , k ( q ) = exp ( z i , k ( 1 ) ) exp ( z i , k ( 1 ) ) + exp ( z i , k ( 0 ) ) p_{i,k}(q)= \frac{\exp\left(z_{i,k}(1)\right)} {\exp\left(z_{i,k}(1)\right)+\exp\left(z_{i,k}(0)\right)} pi,k(q)=exp(zi,k(1))+exp(zi,k(0))exp(zi,k(1))
其中:
- z i , k ( 1 ) z_{i,k}(1) zi,k(1) 表示模型对“相关”标签的 Logit;
- z i , k ( 0 ) z_{i,k}(0) zi,k(0) 表示模型对“不相关”标签的 Logit;
- p i , k ( q ) p_{i,k}(q) pi,k(q) 表示第 k k k 个片段与问题 q q q 相关的概率。
论文采用偏向召回率的检索策略:
S ^ i ( q ) = { ( i , k ) ∣ p i , k ( q ) ≥ τ } ∪ T o p K ( { p i , k ( q ) } k = 1 K i , K ) \hat{S}_i(q)= \left\{(i,k)\mid p_{i,k}(q)\ge \tau\right\} \cup \mathrm{TopK}\left(\left\{p_{i,k}(q)\right\}_{k=1}^{K_i},K\right) S^i(q)={(i,k)∣pi,k(q)≥τ}∪TopK({pi,k(q)}k=1Ki,K)
其中:
- τ \tau τ 表示相关性阈值;
- T o p K \mathrm{TopK} TopK 表示选择概率最高的 K K K 个片段;
- 组合策略用于减少漏检。
附录中给出的实现参数为:
- 相关性阈值 τ = 0.4 \tau=0.4 τ=0.4;
- 无片段超过阈值时,使用 K = 5 K=5 K=5 的 Top-K 兜底;
- 每次查询最多取回 20 个文本片段。
这体现了论文的检索偏好:
多取回少量可能相关的证据,通常比漏掉关键历史更安全。
5. 举例说明
假设用户询问:
“如何在模型卡中指定任务类型?”
视觉记忆中包含三个带编号片段:
[1] 如何指定训练数据集
[2] 如何设置 pipeline_tag
[3] 如何指定许可证
光学检索器只需要输出:
[2]
系统再从原始日志中取回:
You can specify the pipeline_tag in the model card metadata...
这段文本才会进入主 Agent 的上下文。
六、多分辨率记忆与主动回忆
1. 设计动机
如果所有历史图像都长期保持高分辨率,那么视觉 Token 消耗仍然会随着记忆增长而增加。
因此,论文借鉴了人类记忆“由清晰逐渐变模糊”的特点:
- 新近记忆保持高分辨率;
- 较老记忆降低为缩略图;
- 当旧记忆再次被命中时,恢复为高分辨率。
2. 随时间降低分辨率
论文将记忆年龄定义为 Δ t i \Delta t_i Δti,并根据年龄分配分辨率层级:
ℓ i = ρ ( Δ t i ) \ell_i=\rho(\Delta t_i) ℓi=ρ(Δti)
随后对图像进行降采样:
I i = ϕ ℓ i ( I i h i ) I_i=\phi_{\ell_i}\left(I_i^{\mathrm{hi}}\right) Ii=ϕℓi(Iihi)
其中:
- Δ t i \Delta t_i Δti 表示记忆项已经存储的时间;
- ρ \rho ρ 表示从记忆年龄到分辨率层级的映射;
- ℓ i \ell_i ℓi 表示当前分辨率层级;
- I i h i I_i^{\mathrm{hi}} Iihi 表示原始高分辨率图像;
- ϕ ℓ i \phi_{\ell_i} ϕℓi 表示对应层级的降采样操作。
论文实现中:
- 最近 5 个交互步骤使用 1024 × 1024 1024\times1024 1024×1024;
- 更早的历史使用 512 × 512 512\times512 512×512;
- 对应视觉 Token 数分别约为 256 和 64。
3. Active Recall Upscaling
如果低分辨率记忆被检索器命中,系统会重新从原始日志渲染高分辨率版本:
I i ← I i h i I_i\leftarrow I_i^{\mathrm{hi}} Ii←Iihi
恢复后的高分辨率图像会在当前 episode 剩余时间内保持活跃,不再继续衰减。
这相当于:
旧记忆保持低分辨率
↓
检索器发现其与当前任务相关
↓
根据原始日志重新渲染
↓
恢复高分辨率
↓
当前 episode 内持续保持清晰
4. 为什么不同时保存两份图像
论文没有同时长期保存高、低分辨率图像。
系统只保存:
- 原始文本日志;
- 当前使用的图像版本。
当需要恢复高分辨率时,再从日志重新渲染。
因此,主动回忆的本质并不是对低分辨率图像进行传统超分辨率恢复,而是:
根据原始日志重新生成高清视觉记忆。
这保证了恢复后的内容不会因为图像放大而产生新的文字错误。
七、光学检索器的训练
1. 为什么需要微调
OCR-Memory 使用 DeepSeek-OCR 3B 作为基础模型。
但预训练 OCR 模型主要擅长:
- 阅读图像文字;
- 识别文档结构;
- 转写视觉内容。
OCR-Memory 需要模型完成的是另一项任务:
给定一个问题,判断图像中的哪些文本块能够支持回答。
这不是单纯的 OCR,因此论文对模型进行了检索任务微调。
2. 使用 HotpotQA 构造训练数据
HotpotQA 中的每个样本包含:
- 一个问题;
- 多个候选段落;
- 标注好的支持事实。
论文不使用最终答案,而是把支持事实转换成二值标签。
对于第 k k k 个段落:
y k = I [ k ∈ F s u p p ] y_k=\mathbb{I}\left[k\in F_{\mathrm{supp}}\right] yk=I[k∈Fsupp]
其中:
- F s u p p F_{\mathrm{supp}} Fsupp 表示支持事实对应的段落集合;
- I [ ⋅ ] \mathbb{I}[\cdot] I[⋅] 表示指示函数;
- 如果第 k k k 个段落属于支持事实,则 y k = 1 y_k=1 yk=1;
- 否则 y k = 0 y_k=0 yk=0。
随后,论文把候选段落渲染成带 Set-of-Mark 编号的图像,让模型学习根据问题选择相关编号。
3. 加权二元交叉熵
由于相关段落数量通常远少于无关段落,训练数据存在明显类别不平衡。
论文采用加权二元交叉熵:
L B C E = − ∑ n = 1 ∣ D ∣ ∑ k = 1 K [ w + y k ( n ) log p k ( n ) + w − ( 1 − y k ( n ) ) log ( 1 − p k ( n ) ) ] \mathcal{L}_{\mathrm{BCE}}= -\sum_{n=1}^{|D|} \sum_{k=1}^{K} \left[ w_{+}y_k^{(n)}\log p_k^{(n)} + w_{-}\left(1-y_k^{(n)}\right)\log\left(1-p_k^{(n)}\right) \right] LBCE=−n=1∑∣D∣k=1∑K[w+yk(n)logpk(n)+w−(1−yk(n))log(1−pk(n))]
其中:
- D D D 表示训练数据集;
- y k ( n ) y_k^{(n)} yk(n) 表示第 n n n 个样本中第 k k k 个片段的真实标签;
- p k ( n ) p_k^{(n)} pk(n) 表示模型预测的相关概率;
- w + w_{+} w+ 表示正样本权重;
- w − w_{-} w− 表示负样本权重。
论文设置:
w + = 2.0 , w − = 1.0 w_{+}=2.0,\qquad w_{-}=1.0 w+=2.0,w−=1.0
也就是让模型更重视漏掉相关证据的错误。
4. 冻结视觉编码器
论文冻结 DeepSeek-OCR 的视觉编码器,只通过 LoRA 微调语言解码器。
LoRA 配置为:
- Rank:16;
- 缩放系数:32;
- Dropout:0.05;
- 微调
q_proj、k_proj、v_proj和o_proj。
这样做的目的,是保留模型已有的视觉识别能力,同时让解码器学会“根据问题选择视觉编号”。
5. 分辨率课程训练
真实部署中,大量旧记忆会处于低分辨率状态。
如果训练时只使用高清图像,检索器在部署时可能无法适应模糊记忆。
因此,训练阶段会随机采样分辨率:
ℓ ∼ C a t e g o r i c a l ( π ) , I ~ = ϕ ℓ ( I ) \ell\sim\mathrm{Categorical}(\pi),\qquad \tilde{I}=\phi_{\ell}(I) ℓ∼Categorical(π),I~=ϕℓ(I)
论文使用两个分辨率层级:
- 1024 × 1024 1024\times1024 1024×1024,采样概率为 0.3;
- 512 × 512 512\times512 512×512,采样概率为 0.7。
这使检索器在训练阶段就学会根据粗粒度视觉信息判断片段相关性。
八、实验设置
1. 数据集
论文使用两个长时 Agent 基准。
Mind2Web
Mind2Web 是网页操作基准,要求 Agent 根据自然语言指令完成多步骤网页任务。
论文使用 Cross-Task 划分,并报告:
- Element Accuracy;
- Action F1;
- Step Success Rate;
- Task Success Rate。
AppWorld
AppWorld 要求 Agent 通过 API 与多个应用交互。
论文按照任务难度报告:
- Easy Success Rate;
- Medium Success Rate;
- Hard Success Rate;
- Average Success Rate。
其中,Hard 子集更依赖长历史回溯,因此更适合检验长期记忆能力。
2. 对比方法
论文使用以下基线:
- Zero-Shot:不读取历史轨迹;
- Retrieval:使用密集向量进行文本检索;
- MemoryBank:长期对话记忆系统;
- AWM:将历史经验抽象为 Agent Workflow;
- ACON:面向长时 Agent 的上下文压缩方法。
3. 实现设置
核心设置包括:
- 主 Agent:GPT-4;
- 温度:0;
- 光学检索器:DeepSeek-OCR 3B;
- 默认记忆上下文预算:4096 Token;
- 微调数据:HotpotQA;
- 训练轮数:3;
- 全局 Batch Size:128;
- 峰值学习率: 1 × 10 − 5 1\times10^{-5} 1×10−5;
- 优化器:AdamW。
九、主要实验结果
1. Mind2Web 和 AppWorld
论文的主要结果如下。
| 方法 | Mind2Web Element Acc | Action F1 | Step SR | Task SR | AppWorld Easy | Medium | Hard | Average |
|---|---|---|---|---|---|---|---|---|
| Zero-Shot | 40.1 | 46.2 | 37.9 | 2.2 | 68.7 | 36.2 | 20.9 | 41.9 |
| Retrieval | 41.3 | 48.2 | 38.9 | 2.7 | 72.5 | 44.8 | 21.4 | 46.2 |
| MemoryBank | 43.8 | 49.5 | 39.2 | 3.3 | 81.3 | 50.1 | 24.9 | 52.1 |
| AWM | 49.1 | 55.7 | 42.6 | 4.3 | 84.1 | 53.6 | 27.2 | 55.0 |
| ACON | 48.2 | 54.1 | 41.4 | 4.1 | 84.8 | 55.1 | 28.7 | 56.2 |
| OCR-Memory | 53.8 | 59.2 | 46.1 | 4.8 | 86.2 | 57.4 | 30.8 | 58.1 |
在 Mind2Web 上,OCR-Memory 相比 AWM:
- Element Accuracy 从 49.1% 提升到 53.8%;
- Step Success Rate 从 42.6% 提升到 46.1%;
- Task Success Rate 从 4.3% 提升到 4.8%。
在 AppWorld Hard 子集上:
- 文本 Retrieval 为 21.4%;
- AWM 为 27.2%;
- OCR-Memory 达到 30.8%。
Hard 任务中的提升更加明显,说明当任务需要频繁回看长历史时,保留原始细节比只保存摘要或工作流更有价值。
2. 严格上下文预算下的表现
为了观察 Token 预算对不同记忆方法的影响,可以看论文 Figure 2。

图源:论文 Figure 2。
该图比较了 Text-RAG 和 OCR-Memory 在 1024、2048、4096、8192 Token 限制下的表现。上下文预算越严格,OCR-Memory 相比 Text-RAG 的优势越明显。
在只有 1024 Token 的情况下,OCR-Memory 相比 Text-RAG:
- Element Accuracy 提升 17.0 个百分点;
- Action F1 提升 14.8 个百分点;
- Step Success Rate 提升 14.8 个百分点;
- Task Success Rate 提升 2.1 个百分点。
这说明 OCR-Memory 的主要价值并不是无限提高 Agent 的能力,而是:
当文本上下文成为系统瓶颈时,用视觉表示提高有限上下文中的有效信息密度。
十、消融实验与进一步分析
1. Set-of-Mark 是否必要
论文比较了三种视觉检索方式。
| 方法 | Element Accuracy | Step SR | 单次检索延迟 |
|---|---|---|---|
| OCR-Memory 完整方法 | 53.8 | 46.1 | 1.7 秒 |
| 不使用 SoM,直接生成文本 | 46.5 | 39.2 | 5.3 秒 |
| 不使用 SoM,预测边界框 | 49.2 | 44.5 | 2.1 秒 |
直接生成文本的问题最明显:
- Element Accuracy 下降 7.3 个百分点;
- Step Success Rate 下降 6.9 个百分点;
- 延迟从 1.7 秒增加到 5.3 秒。
这说明 Set-of-Mark 不只是一个视觉提示技巧,而是 OCR-Memory 能够稳定运行的核心约束。
它把检索问题从:
请从图片中生成相关历史
改成:
请判断编号 1、2、3 中哪些与当前问题相关
后者的输出空间更小,也更容易验证。
2. 多分辨率主动回忆是否有效
| 分辨率策略 | Step SR | Task SR | 每张历史图像平均视觉 Token |
|---|---|---|---|
| 静态低分辨率 | 39.7 | 2.9 | 65 |
| 静态高分辨率 | 46.5 | 4.9 | 256 |
| 动态分辨率 | 46.1 | 4.8 | 82 |
静态低分辨率最节省视觉 Token,但部分文字过于模糊,导致 Step Success Rate 下降到 39.7%。
静态高分辨率效果略高,但每张图像需要 256 个视觉 Token。
动态分辨率只使用约 82 个视觉 Token,就取得了接近静态高分辨率的效果。
这说明“旧记忆模糊保存,命中后恢复”的设计确实在性能和成本之间取得了较好的平衡。
3. 长上下文检索能力
论文在 RULER 的 Needle-in-a-Haystack 测试上评估了光学检索器。
| 原始上下文长度 | 视觉压缩比 | Recall@1 |
|---|---|---|
| 4k | 10.3× | 98.5 |
| 8k | 10.2× | 97.2 |
| 16k | 10.7× | 95.8 |
| 32k | 10.6× | 94.1 |
当原始上下文增加到 32k 时,OCR-Memory 仍然保持 94.1% 的 Recall@1,并实现约 10.6 倍视觉压缩。
但这里需要注意:
Needle-in-a-Haystack 测试主要说明检索器能够在压缩表示中定位目标,不等于完整 Agent 任务能够获得同等成功率。
4. 主 Agent 更换后的泛化
| 记忆方法 | 主 Agent | Element Accuracy | Step SR | Task SR |
|---|---|---|---|---|
| Text Retrieval | GPT-4 | 41.3 | 38.9 | 2.7 |
| OCR-Memory | GPT-4 | 53.8 | 46.1 | 4.8 |
| Text Retrieval | Qwen3-32B | 35.2 | 31.5 | 1.8 |
| OCR-Memory | Qwen3-32B | 48.6 | 42.3 | 3.9 |
换成 Qwen3-32B 后,OCR-Memory 仍然明显优于文本检索。
这说明性能提升主要来自记忆机制,而不是只对 GPT-4 有效。
5. 检索质量
论文在 Mind2Web 上构造了专门的 Experience Retrieval Evaluation Subset。
| 方法 | Recall@1 | Recall@5 | Recall@10 | MRR |
|---|---|---|---|---|
| Dense Text-RAG | 52.7 | 74.3 | 82.1 | 0.61 |
| OCR-Memory | 78.6 | 93.4 | 96.2 | 0.84 |
OCR-Memory 的 Recall@1 从 52.7% 提升到 78.6%,说明光学检索器不仅提高了最终任务结果,也确实提高了相关历史的召回质量。
6. 如何理解“100%忠实度”
论文还报告:
- 自由文本生成式检索的内容忠实度为 84.3%;
- OCR-Memory 的内容忠实度为 100%。
但这个结果不能理解成“检索结果永远正确”。
OCR-Memory 的 100% 忠实度表示:
一旦模型选中了某个片段,最终返回的内容与该片段的原始日志完全一致。
它不表示:
- 每个被选中的片段都一定相关;
- 检索器不会漏掉正确证据;
- Agent 最终一定能正确利用证据。
因此,OCR-Memory 解决的是“证据转写是否忠实”,而不是彻底解决“证据选择是否正确”。
十一、效率与成本分析
OCR-Memory 的优势主要体现在减少进入主 Agent 的文本 Token,而不是所有资源都更便宜。
| 方法 | 每个 Episode 磁盘占用 | 每步注入文本 Token | 每步检索延迟 |
|---|---|---|---|
| Text-RAG | 18 KB | 3980 | 0.3 秒 |
| OCR-Memory | 1.47 MB | 596 | 1.7 秒 |
OCR-Memory 将每步注入主 Agent 的文本 Token 从 3980 降低到 596,约减少 6.7 倍。
代价是:
- 每个 episode 的磁盘占用从 18 KB 增加到 1.47 MB;
- 检索延迟从 0.3 秒增加到 1.7 秒;
- 系统还需要额外部署一个视觉检索模型。
因此,OCR-Memory 的成本变化可以概括为:
更少的主模型上下文 Token
↓
更多的磁盘占用、图像渲染和检索延迟
它不是让整个系统无条件变得更便宜,而是把成本从稀缺的推理上下文,转移到相对便宜的存储和预处理资源。
十二、与已有 Agent 记忆方法的对比
| 方法 | 核心思想 | 主要解决的问题 | 与 OCR-Memory 的区别 |
|---|---|---|---|
| Mem0 | 事实记忆生命周期管理 | 记忆如何写入、更新和删除 | OCR-Memory 更关注长轨迹如何高密度保存与取回 |
| A-MEM | 动态建立记忆关联 | 记忆如何演化和形成关系 | OCR-Memory 不重点建模记忆关系 |
| AWM | 从经验中提取工作流 | 如何复用成功操作程序 | OCR-Memory 保留原始轨迹,不只保存抽象技能 |
| ACON | 优化长时任务上下文压缩 | 如何减少上下文冗余 | OCR-Memory 将压缩介质从文本扩展到图像 |
| OCR-Memory | 图像化轨迹与定位转录 | 如何在低 Token 预算下保存完整历史证据 | 用视觉模型定位,用原始日志保证忠实度 |
我认为 OCR-Memory 与技能记忆并不是替代关系。
更合理的工程组合可能是:
原始轨迹
├── OCR-Memory:保存可回溯的原始证据
├── 技能记忆:提取可复用工作流
└── 语义记忆:保存稳定事实和任务约束
当 Agent 需要快速行动时,可以优先使用技能记忆。
当技能执行失败、需要调试或者需要追溯历史依据时,再通过 OCR-Memory 查询原始轨迹。
十三、局限性与未来方向
1. 方法限制
依赖专用视觉检索器
OCR-Memory 不是一个完全训练无关的方法。
系统需要:
- 部署 DeepSeek-OCR;
- 使用 HotpotQA 风格的数据进行微调;
- 维护视觉编码器和解码器参数。
对于轻量 Agent 应用,这部分基础设施可能过重。
定位错误仍然存在
确定性文本回取只能保证“取回的内容和日志一致”,不能保证模型选对了编号。
如果视觉检索器遗漏关键片段,原始文本保存得再完整也无法帮助主 Agent。
图像压缩并非真正无损
OCR-Memory 保留了原始日志,因此最终证据能够无损恢复。
但是,低分辨率视觉表示本身仍然会损失文字细节。
论文中的 Active Recall 只有在检索器能够先从模糊图像中发现相关记忆时才会触发。
如果低分辨率图像已经模糊到无法识别关键语义,那么这条记忆仍可能被遗漏。
2. 工程限制
磁盘与延迟增加
与 Text-RAG 相比,OCR-Memory:
- 使用更多磁盘空间;
- 需要额外的图像渲染;
- 增加视觉模型推理;
- 检索延迟更高。
因此,它更适合上下文 Token 昂贵、历史轨迹很长的任务,而不一定适合所有短任务。
数据删除和版本一致性
OCR-Memory 同时保存:
- 原始日志;
- 图像表示;
- 编号与文本之间的映射;
- 分辨率状态;
- 元数据。
当原始数据被更新或删除时,系统必须同步修改所有相关表示,否则可能出现:
- 图像编号指向旧文本;
- 已删除内容仍然保留在图像中;
- 不同版本的轨迹同时存在。
隐私问题
Agent 轨迹中可能包含:
- 用户隐私信息;
- API 参数;
- 文件路径;
- 内部系统返回;
- 身份认证信息。
将日志进一步渲染为图像,相当于增加了一份数据副本。
因此,实际部署时需要同时处理文本日志和视觉记忆的:
- 权限控制;
- 脱敏;
- 加密;
- 生命周期管理;
- 用户删除请求。
3. 未来方向
与结构化记忆结合
OCR-Memory 擅长保存原始轨迹,但不擅长描述记忆之间的逻辑关系。
未来可以将其与知识图谱或情节图结合:
- 图结构负责组织实体、事件和因果关系;
- OCR-Memory 负责保留原始证据;
- 主 Agent 根据图结构定位事件,再回看具体轨迹。
学习更合理的分辨率策略
论文采用“最近 5 步高清,其余低清”的固定策略。
未来可以根据以下信号动态决定分辨率:
- 记忆访问频率;
- 任务相关性;
- 历史成功贡献;
- 记忆不确定性;
- 当前 Token 预算。
从视觉定位扩展到多模态经验
当前方法主要把文本轨迹渲染成图像。
未来可以进一步保存 Agent 原生的多模态经验,例如:
- 网页截图;
- GUI 状态;
- 视频片段;
- 图表;
- 代码编辑界面;
- 机器人第一视角画面。
这样,视觉记忆就不只是文本的另一种编码方式,而可能成为 Agent 原生的多模态情节记忆。
十四、我的理解和启发
1. 记忆压缩不一定只能发生在文本内部
以往讨论 Agent 记忆压缩时,通常考虑:
- 如何写摘要;
- 如何删除不重要的 Token;
- 如何合并重复事实;
- 如何提取技能和规则。
OCR-Memory 提醒我们,压缩还可以通过“改变表示模态”完成。
当文本 Token 是主要瓶颈时,可以把历史转换成另一种更高密度的表示,再通过专用模型完成检索。
这与传统数据库中的思想有些类似:
原始数据、索引结构和查询结果不需要采用完全相同的表示形式。
2. 检索模型不应该同时承担证据生成
OCR-Memory 中我认为最值得借鉴的设计,并不只是“把文本变成图片”,而是 Locate-and-Transcribe 的职责分离:
视觉模型:判断证据在哪里
数据库:返回证据原文
主 Agent:基于证据进行推理
如果让同一个模型同时负责:
- 判断什么相关;
- 读取模糊内容;
- 重新生成证据;
- 回答最终问题;
那么任何一个环节的幻觉都可能污染后续决策。
将模型输出限制为索引,可以让检索结果更容易验证和追踪。
3. “原始轨迹”和“抽象经验”应该同时存在
对于自己的 Agent 项目,我不会只选择 OCR-Memory 或技能记忆中的一种。
更合理的记忆架构是分层保存:
第一层:工作记忆
保存当前任务最近的交互,直接进入上下文。
第二层:结构化记忆
保存:
- 用户稳定偏好;
- 环境配置;
- 任务约束;
- 实体关系;
- 已验证事实。
第三层:技能记忆
保存:
- 成功工作流;
- 错误修复策略;
- 工具调用模板;
- 可复用操作程序。
第四层:原始轨迹档案
使用 OCR-Memory 或类似机制保存完整历史证据。
这种架构可以同时回答两类问题:
- “我下一步应该怎么做?”——查询技能和结构化记忆;
- “我为什么认为应该这样做?”——回查原始轨迹证据。
4. 视觉记忆更像索引,而不是知识本身
OCR-Memory 虽然将历史渲染成图像,但真正可信的数据源仍然是原始日志。
因此,在工程实现中可以把三部分严格分开:
原始日志:事实来源
视觉图像:高密度检索索引
主 Agent 上下文:按需取回的证据
这样的设计有一个明显优势:视觉检索器可以升级、替换或重新训练,而不需要修改原始记忆内容。
5. Token 成本不是唯一成本
OCR-Memory 的实验还说明,评价 Agent 记忆系统时不能只看 Token 数量。
至少应该同时考虑:
- 主模型输入 Token;
- 记忆写入成本;
- 检索延迟;
- 磁盘占用;
- 额外模型显存;
- 预处理开销;
- 证据忠实度;
- 最终任务成功率。
OCR-Memory 减少了最昂贵的推理上下文,却增加了存储和视觉检索成本。
在长时、高价值任务中,这种交换可能很划算;在短对话和高并发场景中,则未必合适。
十五、总结
OCR-Memory 研究的是一个长期 Agent 记忆中的基本矛盾:
完整历史能够提供更多证据,但有限的文本上下文无法承载不断增长的轨迹。
论文的解决方案可以概括为三个步骤:
- 将 Agent 历史轨迹渲染成带编号的多分辨率图像;
- 使用光学检索器定位与当前问题相关的片段编号;
- 根据编号从原始日志中逐字取回证据,再交给主 Agent 推理。
其核心创新包括:
- 使用视觉模态作为高密度的长期记忆表示;
- 使用 Set-of-Mark 将视觉检索转化为编号选择;
- 使用 Locate-and-Transcribe 分离证据定位和证据生成;
- 使用多分辨率存储与主动回忆降低视觉 Token 开销。
实验表明,OCR-Memory 在 Mind2Web 和 AppWorld 上都优于文本检索、MemoryBank、AWM 和 ACON,尤其在严格上下文预算和困难长时任务中优势更加明显。
但它并不是没有代价:
- 需要额外训练和部署视觉检索器;
- 图像存储占用更高;
- 检索延迟更长;
- 视觉压缩仍可能导致召回错误;
- 原始日志和视觉副本带来新的隐私与一致性问题。
我认为这篇论文最重要的启发并不是简单地“把 Agent 记忆截图保存”,而是:
Agent 记忆的存储形式、检索形式和最终推理形式不必完全相同。
可以使用高密度表示完成检索,再回到可验证的原始证据上进行推理。
这为长期 Agent 记忆提供了一条不同于摘要、向量检索和技能抽象的新路线。
参考资料
- Jinze Li, Yang Zhang, Xin Yang, et al. OCR-Memory: Optical Context Retrieval for Long-Horizon Agent Memory. ACL 2026.
更多推荐



所有评论(0)