做了十次PPT还是不记得我喜欢什么?这篇论文给Agent装上了"分层记忆"

论文标题:MemSlides: A Hierarchical Memory Driven Agent Framework for Personalized Slide Generation with Multi-turn Local Revision 作者:Ye Jin、Yangyang Xu、Jun Zhu、Yibo Yang arXiv:2606.17162(cs.CL / cs.HC / cs.MA,2026年6月15日提交) 代码 / 项目页 / 视频:论文中均有链接


先说个让我有共鸣的场景

你有没有用过那种"一句话生成PPT"的AI工具?

第一次用,惊艳。一句"帮我做一份关于Transformer的技术分享",几秒钟出来十几页,配色版式都像模像样。

但用第二次、第三次你就会发现一个让人烦躁的事情——它根本不记得你是谁

你上次明明跟它说过:"正文别堆字,多用图示""标题用衬线体""每页留白多一点"。这次换个主题,它又给你来一份密密麻麻的文字墙。你只能再说一遍、再改一遍。改到第四轮的时候,你提了个新要求:"把第三页的副标题改成蓝色",结果它把整个deck重新生成了一遍,连你前面辛辛苦苦调好的页面也一起给冲了。

这就是当下幻灯片生成Agent的两个老大难:记不住偏好,以及改个局部却伤筋动骨

MemSlides 这篇论文(arXiv:2606.17162)就是冲着这两个痛点来的。它的核心主张很直接:个性化不该是prompt里顺手带一句的副产品,而应该由一套专门设计的记忆系统来驱动。


核心摘要

MemSlides 给个性化演示Agent设计了一套分层记忆框架:把长期记忆和工作记忆拆开,又把长期记忆进一步切成"用户画像记忆"和"工具记忆"。用户画像记忆管的是跨任务的稳定偏好(你一贯喜欢什么风格),工作记忆管的是当前会话里临时引入的约束(这次特别要求什么),工具记忆攒的是怎么改才不会出错的执行经验。

配套还有一个我觉得挺关键的设计——作用域局部修订(scoped slide-local revision):改一处只动最小受影响的区域,而不是把整份deck重读重写一遍。

效果上,在GLM-5和Gemini 3.1 Pro两个模型上,persona对齐的各项指标基本全面领先;工具记忆注入后,闭环修改完成率从0.815提升到0.963,首次正确编辑的耗时从609.5秒压到242.5秒。

一句话评价:这篇论文不是在拼生成质量的天花板,而是在补"Agent的记忆"这块一直被忽视的短板——思路扎实,工程味很浓,但实验更像是受控的诊断性验证,离真实用户部署还有距离。


为什么"记不住"是个真问题

先得说清楚,现有的工具到底卡在哪。

像 PPTAgent、DeepPresenter、SlideTailor 这些 agentic 系统,单看生成质量其实已经相当能打了——完整、视觉精美,该有的都有。问题在于它们没有持久化的个性化能力

你想想看,一个做学术报告的人和一个做商业路演的人,对版式、模板、信息密度的偏好天差地别。同一个人,今天做技术分享、明天做季度汇报,需求也完全不同。现有系统的做法是:每次你都得重新把偏好说一遍。它不积累,不沉淀。

SlideTailor 算是沾了点个性化的边,但论文指出它的个性化是靠你提供的示例或模板撑起来的,而不是从你过往的交互里攒出一份"用户画像"。本质上还是"你给什么我用什么",而不是"我懂你"。

作者把根源归结为两点,我觉得抓得挺准:

第一,个性化往往是在修订过程中暴露出来的,而不是生成前一次性说清的。你很少能在第一句prompt里把所有偏好讲全,更多是边看边改、边改边提。可现有系统处理编辑的方式是重新上下文化、重新生成大部分内容,这就导致一个小改动得跟整个deck的状态、跟一长串反馈历史去抢那点有限的上下文窗口。多轮改下来,越改越脆。

第二,现有系统把个性化当成prompting的隐性副产品,而不是用记忆设计去正面解决它。

这两点放在一起,结论就很自然了:要做好个性化,得有专门的记忆架构。


方法核心:把记忆分层,各管各的

MemSlides 的整体设计,一张图就能看明白。

图1:MemSlides 总览

图1(Figure 1):MemSlides 总览。框架由长期记忆与工作记忆两部分构成。第 t 轮中,会话状态 \(s_t\) 和用户反馈 \(f_t\) 经过 Modify Exec 模块处理后,得到更新后的状态 \(s_{t+1}\)。长期记忆又分为用户画像记忆和工具记忆两块。

整个框架其实就回答一个问题:不同生命周期的个性化信号,该用不同的记忆去装。

论文把信号分成三种,我觉得这个划分是全文最值钱的洞察:

信号类型 生命周期 装在哪 例子
用户画像记忆 \(P_u\) 跨任务、长期循环 长期记忆 "我一贯喜欢留白多、少堆字"
任务时模板 \(\tau\) 当前任务局部 任务级约束 "这份deck用公司统一模板"
会话状态 \(z_t\) 临时、轮次特定 工作记忆 "这次特别把第三页改成蓝色"

这三者的形式化也很清爽。初始生成是 \(S_0 = G_{\mathrm{init}}(x, P_u, \tau)\),其中 \(x\) 是源材料;之后每一轮修订 \(S_t = G_{\mathrm{edit}}(S_{t-1}, x, P_u, \tau, z_t)\),会话状态自己也在迭代 \(z_t = U(z_{t-1}, f_t; S_{t-1})\)

说到这个"把不同时间尺度的东西分开存",其实跟操作系统里寄存器/缓存/内存/磁盘的分层是一个味道——快的东西放近处、频繁变的单独管、稳定的沉到底层。只不过这里管的是"用户喜好"而不是数据。

用户画像记忆:意图感知的偏好沉淀

这块负责的是"我一贯是什么风格"。

它有两个关键特性:user-specific(针对每个用户)intent-aware(区分意图)。后者我觉得是点睛之笔——同一个人做学术报告和做商业路演,偏好是两套,不能混。所以画像不是一锅烩,而是按意图分桶存。

每个桶内的偏好又按六个维度组织:主题(theme)、内容(content)、视觉(visual)、版式(layout)、模板(template)、通用(general)。

它的生命周期是怎么转的,看这张图:

图2:用户画像记忆生命周期

图3(Figure 3):用户画像记忆生命周期。任务开始时,匹配意图的画像被路由进活跃临时记忆;兼容的偏好共存,发生显式冲突时旧偏好被取代;任务结束时,稳定的信号才被整合回长期画像记忆。

拆开看就是三步:

任务开始前的路由(round-0)。先用检索算子 \(\mathcal{S}(P_u, i_0)\) 把跟当前意图 \(i_0\) 匹配的画像桶捞出来,记作 \(\tilde{P}_u\);再用 \(\mathcal{E}(q_0)\) 从当前请求里抽出约束 \(C_0\);最后用调和算子 \(A_0 = \mathcal{R}(\tilde{P}_u, C_0)\) 把两者捏合成本轮的活跃临时记忆。

修订中的演化。每来一轮反馈 \(r_t\),就用更新算子 \(A_t = \mathcal{U}(A_{t-1}, r_t)\) 去更新——追加新偏好、覆盖真正冲突的旧项、保留不冲突的。

任务结束的整合\(P_u^+ = \mathcal{C}(P_u, H)\),把这一任务里的用户消息 \(H\) 做意图感知的整合,回写进长期画像。这里有个细节我很欣赏:整合是"意图感知"的,专门防止那些一次性的临时请求被误存成持久偏好。你这次随口说"这页背景调成红色",它不会就此认定你以后都爱红色。

冲突怎么排序?论文给了明确优先级:显式会话反馈 > 任务时模板 > 用户画像记忆。越当下、越显式的,优先级越高。这个顺序符合直觉。

工具记忆:攒的是"怎么改才不出错"

这是我觉得最有工程味的一块。

用户画像记忆管"deck该长什么样",而工具记忆压根不碰这个——它只管"怎么把目标可靠地执行出来,少犯重复错误、少回溯、本地验证更靠谱"。

它分两个尺度:

图3:工具记忆流

图4(Figure 4):工具记忆流。Round-scope 任务经验在修改任务开始时即可用,并跨轮缓冲在工作记忆中;Operation-scope 工具链经验则把原始的"推理-工具调用-观察"链记录为紧凑可复用的片段。

  • Round-scope 任务经验 \(E_t^{\mathrm{round}}\):粗粒度,modify任务一开始就能用,跨轮缓冲。每轮结束后用agent的经验教训、工具报错摘要、自动提取的模式来更新。
  • Operation-scope 工具链经验 \(E_{t,k}^{\mathrm{op}}\):细粒度,把原始的 reasoning–tool–observation 链切成可复用片段,按操作上下文建索引,下次遇到类似的工具调用前先检索出来参考。

合起来就是 \(\mathcal{M}^{\mathrm{tool}}_{t,k} = (E_t^{\mathrm{round}}, E_{t,k}^{\mathrm{op}})\)

说白了……(打住,这个词不用)——直白点讲,这就是给Agent建了个"踩坑笔记本":上次这么调工具报错了/绕远了,记下来,下次别再犯。

工作记忆:让流程从"单次"变"多轮"

工作记忆是会话级的那层。它存活跃临时偏好、carryover指令(延迟生效的偏好)、编辑状态记录(已解析的目标、覆盖状态、快照重绑定提示),还缓冲round级的工具记忆信号。

论文一句话点明了它的作用:它是让 Plan–Act–Guard 流程从"单次"变成"多轮"的那层会话作用域状态。没有它,每一轮都是断片的。


关键设计:改一处,别动全局

如果说分层记忆解决的是"记得住",那作用域局部修订解决的就是"改得稳"。

核心思想一句话:把请求投影到最小受影响的幻灯片区域,在一个有界的"修复表面"上操作,而不是为每条反馈把整个deck重读重写。

具体怎么做:

  • 读取时,只读局部表面的结构化快照——局部版式结构、可用的选择器(selectors)、暴露出来的样式规则。
  • 写入时,只写回限定在显式selector或样式规则上的补丁(patches)。

读和写都"局部化构造",上下文压力小了,意外漂移(drift)也少了。这张定性对比图很能说明问题:

图4:局部修改执行的定性对比

图5(Figure 5):局部修改执行的定性说明。面对同一个编辑请求,DeepPresenter 会连带改动非目标区域,而 MemSlides 只对目标元素打补丁,其余部分原封不动。

Plan–Act–Guard:把"改对"拆成三步

具体执行落在一条 Plan–Act–Guard 流水线上。看这张图:

图5:MemSlides 中的局部修改执行

图6(Figure 2):MemSlides 中的局部修改执行。工作记忆向 Plan–Act–Guard 流水线供给活跃临时偏好、carryover 指令、当前编辑状态和缓冲的工具记忆信号。

Plan(规划):把每个修订请求转成一份显式的"执行契约"——记录推断出的scope、目标幻灯片路径、活跃规则标识符、selector提示、是否需要目标覆盖。本地请求绑到已解析的那一页;deck级规则铺到全部页;混合请求则全局规则和局部例外同时保留。有个细节挺巧:插入请求创建的"仅对未来生效"的规则,不会被错误地强加到已有页面上。

Act(执行):根据契约挑编辑工具—— - 目标页共享显式selector → 批量CSS更新 - 跨结构不同页的共同语义(标题、正文、页脚)→ 语义批量样式 - 单页要改内容/局部结构 → 读layout-first修复表面,打非空补丁 - 插页/删页 → 显式页级操作 - 整页重写 → 只限新页或损坏状态后的受控恢复

Guard(守卫):这步我最喜欢。它把"完成"当成一个被检查的状态,而不是模型自己说停就停。Patch调用绑定到快照的内容哈希,快照过期了就触发重绑定提示,而不是直接全量重写;需要覆盖时,过早的finalize调用会被拦住,直到所有目标页都改完或显式确认合规为止。

这个设计直击痛点——LLM最爱干的事就是"差不多了我就说完成了",Guard等于给它套了个紧箍咒。


实验:数据说话,但要看清楚怎么测的

实验跨了三个模型家族:GPT-5、GLM-5、Gemini 3.1 Pro;基线是 DeepPresenterSlideTailor。测试用了一个受控的多persona、多意图画像库,共30个persona-intent条目(10个persona × 3种角色意图)。

这里我要先泼盆冷水:全程都是推理时的agent评估,没有训练/微调,而且作者自己也承认画像库和编辑请求是"代理"(proxy)而非真实用户的部署研究。所以下面这些数据,更适合理解为"受控诊断",而不是"真实战场战绩"。

主实验一:persona对齐(首轮生成)

四个0–10的维度:Content(内容是否匹配目标persona)、Structure(页序/版式是否反映persona组织)、Visual(信息密度/留白/视觉层次/基调)、Specificity(用干扰persona测deck是否仍能认出是目标persona)。

框架 模型 Content↑ Structure↑ Visual↑ Specificity↑
DeepPresenter GPT-5 6.22 7.56 5.76 5.89
GLM-5 6.67 7.61 5.28 7.22
Gemini 3.1 Pro 6.89 8.00 6.78 7.44
SlideTailor GPT-5 6.78 6.00 6.39 6.33
GLM-5 4.44 4.89 4.00 3.89
Gemini 3.1 Pro 4.48 5.00 4.03 4.67
MemSlides GPT-5 7.11 7.33 6.00 6.67
GLM-5 9.00 8.78 8.56 8.89
Gemini 3.1 Pro 7.77 8.64 8.24 8.56

读这张表,有几个点值得说:

MemSlides 在 GLM-5 和 Gemini 3.1 Pro 上几乎全列碾压,GLM-5上的9.00、8.78这些数确实很能打。跨模型平均下来,相比DeepPresenter分别提升 Content 1.37、Structure 0.53、Visual 1.66、Specificity 1.19;相比SlideTailor更夸张,四项分别 2.732.952.793.08

但有意思的是GPT-5上没赢透——Structure这一项DeepPresenter的7.56还比MemSlides的7.33高一点。作者很坦诚地把这个写出来了,没有藏。这种诚实我给个好评。

不过我也得多嘴一句:SlideTailor在GLM-5和Gemini上的分数低得有点离谱(4分上下),这让MemSlides的"提升幅度"看起来格外大。baseline在某些模型上表现这么差,对比的说服力是要打个折扣的。

主实验二:通用质量没有被牺牲

个性化做上去了,普通质量会不会塌?这是必须回答的问题。

框架 模型 Constraint↑ Content↑ Style↑ Avg.↑ Diversity↑
DeepPresenter GPT-5 4.83 3.50 3.63 3.99 0.387
Gemini 3.1 Pro 4.17 3.33 4.00 3.83 0.370
GLM-5 4.00 3.57 4.00 3.86 0.366
SlideTailor GPT-5 3.83 2.93 4.03 3.60 0.399
Gemini 3.1 Pro 3.83 3.20 4.00 3.68 0.364
GLM-5 3.83 2.97 4.00 3.60 0.348
MemSlides GPT-5 5.00 3.60 3.90 4.17 0.380
Gemini 3.1 Pro 3.33 3.37 4.10 3.60 0.463
GLM-5 3.83 3.34 4.03 3.74 0.391

结论是:个性化的提升没有以牺牲通用质量为代价。GPT-5上MemSlides拿到最佳Avg. 4.17,Gemini上Style 4.10和Diversity 0.463最佳——不过Gemini上的Constraint掉到了3.33,这是个明显的弱点,作者没回避。

消融实验:工具记忆到底值不值

这是全文我觉得最干净利落的一个实验——诊断性匹配对(diagnostic matched-pair):9对modify任务,每对只改变一个变量——要不要注入工具记忆,其余全控住。这种设计排除干扰的能力很强。

模型 注入记忆 闭环完成率↑ 严格验证↑ 首次正确编辑(秒)↓ 核心工具耗时比↓
GPT-5 1.000 0.646 211.3 0.740×
0.667 0.294 234.2 1.000×
GLM-5 1.000 0.488 195.9 0.344×
0.889 0.434 500.9 1.000×
Gemini 3.1 Pro 0.889 0.469 309.9 0.137×
0.889 0.201 968.2 1.000×
总体 0.963 0.534 242.5 0.327×
0.815 0.310 609.5 1.000×

四个指标全线改善:

  • 闭环完成率:0.815 → 0.963
  • 严格验证(改完后短窗口内本地验证):0.310 → 0.534,几乎翻倍
  • 首次正确编辑耗时:609.5秒 → 242.5秒,砍掉一大半
  • 核心工具耗时比的几何均值:降到 0.327×

最戏剧化的是Gemini那一行——首次正确编辑从968.2秒压到309.9秒,核心工具耗时比降到0.137×。这说明工具记忆对"原本爱绕远路"的模型帮助最大。

作者也老实交代了异质性:有一个Gemini的hard-modify对在闭环完成率上失败了,两个对在首次编辑延迟上没改善,还有一个GPT-5对反而用了更多核心工具时间。不是所有case都灵,这种把"不灵的"也摊开说的态度,比那种"全面碾压"的论文可信多了。


顺手补两个背景

关于工具记忆这个思路,其实跟近来很火的 agent memory / experience replay 是一脉相承的。让Agent把成功和失败的执行轨迹存下来、检索复用,Reflexion、Voyager那一批工作早就在做。MemSlides的特色是把它细分成round和operation两个尺度,并且专门服务于"局部编辑的可靠性"这个具体场景,而不是泛泛地存经验。

关于Guard那个"完成是被检查的状态"的设计,这其实是在对抗LLM Agent一个臭名昭著的毛病——premature termination(过早收手)。模型经常改了一半就宣布大功告成。用快照哈希+覆盖检查把finalize卡住,是个朴素但有效的工程手段。


跨任务沉淀的定性证据

最后看一张定性图,它展示了画像记忆怎么在多次任务间"长出来":

图6:跨任务画像整合

图7(Figure 6):跨任务画像整合的定性图。在6个重复任务中,原本零散的局部反馈线索(如证据边界护栏、owner/timeline 闭合表、模块输入输出责任模式、实现清单)逐渐沉淀为可复用的画像偏好。

这张图回答了一个朴素的问题:你前几次随口提的那些要求,第七次做PPT时它还记得吗?图里的答案是——记得,而且是自动从交互里"长"出来的,不需要你显式去配置。

附录里还有Table 7的一个数据可以佐证:在GPT的十persona画像记忆实验里,平均Overall对齐提升了2.42分(Content +3.30、Structure +2.30、Visual +3.17、Specificity +2.43)。


我的判断

先说亮点。

信号分层这个抽象是真的漂亮。 把"跨任务的稳定偏好""当前会话的临时约束""可复用的执行经验"三者拆开,各用一套记忆去管——这个划分既符合直觉,又能落到工程上。我觉得它的价值不限于PPT生成,任何需要多轮交互+个性化的Agent都能借鉴这套记忆分层。

Guard和作用域局部修订,是冲着真实痛点去的。 "改一处冲掉全局""模型过早收手"这两个坑,凡是做过Agent产品的人都踩过。这篇用很务实的方式去补,不花哨但管用。

再说我皱眉的地方。

实验的"诊断性"太重,"真实性"太轻。 全程没有真实用户,画像库是构造出来的proxy,编辑请求也是设计好的。匹配对消融虽然干净,但9对的样本量实在偏小,异质性已经能看到(好几个case不灵)。作者自己在局限性里也承认了这点——需要更广泛的人类研究、随机化的编辑集。所以现在这些数字,我会理解成"机制是有效的证据",而不是"产品级的战绩"。

部分baseline的弱势放大了提升幅度。 SlideTailor在GLM-5和Gemini上4分上下的表现,让MemSlides的对比显得格外亮眼。这种情况下,看绝对值比看"提升了多少"更靠谱。

隐私这块是个隐患。 一个会自动沉淀你偏好的系统,意味着它在持续记录你。论文也提到未来要加记忆的同意/删除/敏感偏好保护——这不是锦上添花,是产品化的必答题。

总的来说,MemSlides补的是"Agent记忆"这块一直被忽视的短板,而不是去卷生成质量的天花板。如果你正在做任何带多轮修订的个性化生成Agent——不管是PPT、文档还是网页——这套"信号分层 + 作用域局部编辑 + 完成态守卫"的组合拳,非常值得拆开来借鉴。它不是那种让人惊掉下巴的突破,但是那种你看完会默默存下来、下次写代码时真的会用到的工作。


觉得有启发的话,欢迎点赞、在看、转发。跟进最新AI前沿,关注我