跳转至

PersonaAgent: Bridging Memory and Action for Personalized LLM Agents

会议: ACL2026
arXiv: 2506.06254
代码: 论文未明确公开代码
领域: LLM Agent / 个性化智能体
关键词: 个性化 Agent、长期记忆、Persona Prompt、测试时对齐、LaMP

一句话总结

PersonaAgent 用“个性化记忆 + 个性化动作 + 可测试时优化的 persona prompt”把用户历史和工具行动连接起来,在 LaMP 多个个性化决策任务上明显超过 RAG、PAG、ReAct 和 MemBank 等基线。

研究背景与动机

领域现状:LLM agent 已经可以调用工具、维护记忆并执行多步推理,但大多数 agent 仍然偏向通用任务执行。个性化方向则常见于用户画像、检索增强或用户特定微调,这些方法通常只在文本生成阶段利用个人信息。

现有痛点:通用 agent 的动作空间不随用户变化,容易采取“一刀切”的策略;用户特定微调难以支撑大规模用户和频繁更新;固定 RAG/PAG 工作流虽然能读取用户数据,但缺少 agentic 决策能力,也无法持续调整工具调用和行为策略。

核心矛盾:真正的个人智能需要同时满足 agentic intelligence、真实部署可用性、个人数据利用和实时偏好对齐,而现有方法往往只能覆盖其中一两项。个性化不能只发生在最终回答文本里,还要影响 agent 选择什么工具、检索什么记忆、如何解释当前任务。

本文目标:作者希望建立一个统一框架,让 LLM agent 在执行个性化任务时能够读取用户历史、抽象长期偏好、调用个性化工具,并在测试时根据近期交互动态更新用户 persona。

切入角度:论文把 persona 定义为每个用户独有的系统提示。它不是静态 profile,而是记忆模块和动作模块之间的中介:记忆为 persona 提供证据,persona 控制动作,动作结果又反过来更新记忆和 persona。

核心 idea:用 persona prompt 作为个性化 agent 的中心控制器,并通过近期交互的文本反馈在测试时优化这个控制器。

方法详解

PersonaAgent 的设计可以理解为给通用 LLM agent 加上一层“用户级操作系统”。普通 agent 根据任务上下文选择工具;PersonaAgent 则先把用户历史压缩成可操作的 persona,再让 persona 影响工具选择、记忆检索、推理路径和最终决策。

整体框架

框架包含两个互补模块和一个中介变量。个性化记忆模块负责保存用户交互,分为 episodic memory 和 semantic memory;个性化动作模块负责根据 persona 调整工具调用和行动策略;persona prompt 则把记忆中的用户证据转成 agent 每一步可使用的行为约束。

当新查询到来时,系统先从 episodic memory 中检索相似历史,再结合 semantic memory 中的稳定用户画像形成上下文。随后 agent 在 persona 调制下选择动作,例如使用外部知识、检索个性化历史、更新记忆或进行 persona-guided reasoning。测试时对齐模块会模拟最近的用户交互,比较 agent 回复和真实用户响应之间的文本差异,再用 LLM 生成“文本梯度”更新 persona。

%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400, 'subGraphTitleMargin': {'top': 8, 'bottom': 16}}}}%%
flowchart TD
    Q["新查询 q"] --> MEM
    subgraph MEM["双层个性化记忆"]
        direction TB
        EP["事件记忆 episodic<br/>embedding 检索 Top-K 相似历史"]
        SEM["画像记忆 semantic<br/>总结稳定用户偏好 P^u"]
    end
    MEM --> CTX["拼成当前上下文 c_t"]
    CTX --> ACT["Persona 控制的个性化动作空间<br/>persona 调制,从扩展动作集 Â=A∪D 选动作"]
    PER["Persona prompt(记忆与动作的中介)"] -->|调制策略 π_P| ACT
    ACT --> R["回复 r̂"]
    R -->|沉入事件记忆| MEM
    R --> ALIGN["测试时用户偏好对齐<br/>对比真实响应 → 生成文本梯度"]
    ALIGN -->|异步改写 persona| PER

关键设计

1. 双层个性化记忆:用事件层留证据、用画像层留偏好

只靠事件检索,上下文又长又噪;只靠一份用户 profile,又会把具体行为细节抹平。PersonaAgent 把记忆拆成两层来同时拿住这两端:episodic memory 为每个用户逐条保存 \((q_i,r_i^{gt},m_i)\),新查询到来时用 embedding 相似度检索 Top-K 历史先例;semantic memory 则用 summarization prompt 把事件集合抽象成稳定的用户画像 \(P^u=f_s(S_t,D^u)\)。两层各司其职——事件层让 agent 看得见"这个用户以前具体怎么做的",画像层让它守得住"这个用户长期偏好是什么"——于是检索到的上下文既有具体证据又不被噪声淹没。

2. Persona 控制的个性化动作空间:把个性化从"答案内容"前移到"行动选择"

很多个性化任务的关键不在于"说得像用户",而在于 agent 知道何时该去翻个人历史、何时该依赖外部知识、何时该让长期偏好覆盖通用判断——而通用 agent 的动作空间根本不随用户变化。PersonaAgent 把动作集合从通用的 \(A\) 扩展为 \(\hat{A}=A\cup D\),其中 \(D\) 包含访问用户数据和历史的工具;动作策略写成 \(a_t\sim\pi_P(\cdot|c_t)\),由 persona \(P\) 调制。这样 persona 不再只是最后生成时的风格装饰,而是直接决定每一步选哪个工具、检索什么记忆、走哪条推理路径,个性化被注入到了行动层而非仅仅输出层。

3. 测试时用户偏好对齐:用文本梯度让 persona 随近期行为实时演化

用户偏好会漂移,一次性总结出的 profile 不可能永远准,可又不能为了每个用户单独训一个模型。PersonaAgent 的解法是在测试时优化 persona:给定近期 batch \(D_{batch}=\{(q_j,\hat{r}_j,r_j^{gt})\}\),让 LLM 对比 agent 的模拟回复和用户真实响应、生成自然语言形式的 textual loss feedback,再由 LLM_update 据此改写 persona。形式上这相当于在求

\[P^*=\arg\min_P\sum_j L(\hat{r}_j,r_j^{gt}\mid q_j)\]

只不过"梯度"是 LLM 用文字描述的反馈、"更新"是 LLM 对 persona 提示的改写。整个优化异步执行,不挤占下一次在线响应的延迟——既避开了大规模用户场景下频繁训练模型的成本,又保留了个体级的持续适配能力。

一个完整示例:一次个性化查询怎么走完闭环

一个新查询 \(q\) 进来后,系统先在 episodic memory 里用 embedding 相似度捞出 Top-K 条相似先例,再叠上 semantic memory 给出的稳定画像 \(P^u\),拼成当前上下文 \(c_t\)。接着 agent 在 persona \(P\) 的调制下从扩展动作空间 \(\hat{A}\) 里选动作——可能是去检索更多个人历史、调用外部知识、做 persona-guided reasoning,或更新记忆——最终给出回复 \(\hat{r}\)。这次交互的 \((q,\hat{r},r^{gt})\) 会沉进 episodic memory;当近期交互攒够一个 batch,测试时对齐模块就异步比较模拟回复与真实响应,生成文本反馈把 persona 往更贴合用户的方向改写。于是下一轮查询用到的就是被微调过的 persona:记忆喂证据给 persona,persona 控制动作,动作结果又回流更新记忆和 persona,构成一个比固定 RAG 流程更接近长期个人助理的闭环。

损失函数 / 训练策略

PersonaAgent 不依赖用户级模型微调,而是通过 prompt 和文本反馈做测试时优化。论文将 persona 优化形式化为 \(P^*=\arg\min_P\sum_j L(\hat{r}_j,r_j^{gt}|q_j)\),但实际梯度由 LLM_grad 以自然语言反馈表示,再由 LLM_update 改写 persona。实验中默认使用 Claude-3.5 Sonnet 作为统一执行模型,并保持输入和输出格式一致,以隔离框架设计带来的收益。

实验关键数据

主实验

任务 指标 强基线 PersonaAgent 变化
LaMP-1 Citation Identification Acc / F1 MemBank 0.862 / 0.861 0.919 / 0.918 明显提升引用选择个性化
LaMP-2M Movie Tagging Acc / F1 MemBank 0.470 / 0.391 0.513 / 0.424 更好捕捉用户电影偏好
LaMP-2N News Categorization Acc / F1 PAG 0.768 / 0.509 0.796 / 0.532 profile 与动作结合优于固定工作流
LaMP-3 Product Rating MAE / RMSE ICL 0.277 / 0.543 0.241 / 0.509 数值评分误差最低

消融实验

配置 LaMP-1 Acc/F1 LaMP-2M Acc/F1 LaMP-2N Acc/F1 LaMP-3 MAE/RMSE 说明
Full PersonaAgent 0.919 / 0.918 0.513 / 0.424 0.796 / 0.532 0.241 / 0.509 完整系统
w/o alignment 0.894 / 0.893 0.487 / 0.403 0.775 / 0.502 0.259 / 0.560 去掉测试时对齐后全面下降
w/o persona 0.846 / 0.855 0.463 / 0.361 0.769 / 0.483 0.277 / 0.542 persona 中介对 memory-action 桥接很关键
w/o Memory 0.821 / 0.841 0.460 / 0.365 0.646 / 0.388 0.348 / 0.661 历史用户上下文缺失伤害较大
w/o Action 0.764 / 0.789 0.403 / 0.329 0.626 / 0.375 0.375 / 0.756 仅靠推理不够,个性化动作最关键

关键发现

  • PersonaAgent 在四个 decision-making 任务上都是最佳,尤其 LaMP-1 从 MemBank 的 0.862 Acc 提到 0.919,说明 persona-guided memory/action 对 topic-level 用户兴趣很有效。
  • 消融显示 action module 的影响最大,去掉后 LaMP-3 MAE 从 0.241 变差到 0.375。这说明个性化工具行动比简单把用户资料塞进 prompt 更重要。
  • 测试时 scaling 有收益:增大近期 alignment batch、增加少量 alignment iterations、检索更多 memory entries 都会增强 LaMP-2M 上的个性化效果,但迭代到约 3 次后收益趋于平台或略降。
  • 效率分析中 PersonaAgent 平均每样本 1.79 秒,慢于 PAG 的 1.24 秒,但明显快于 ReAct 的 2.61 秒和 MemBank 的 2.92 秒;作者强调 persona optimization 异步完成,不增加实时在线响应延迟。
  • 冷启动实验将每个用户限制到 10 条历史交互时,PersonaAgent 仍在四个 LaMP 任务上最优,例如 LaMP-1 Acc 0.845、LaMP-2M Acc 0.476、LaMP-3 MAE 0.301。

亮点与洞察

  • 论文最有价值的地方是把 persona 从“描述用户的文本”提升成“控制 agent 行动的策略中介”。这使个性化不再只是最后生成时的风格调整,而是贯穿检索、工具选择和推理路径。
  • 测试时文本梯度很适合个性化场景。它不需要为每个用户做参数训练,也不要求用户显式写偏好,只要有最近交互的真实响应,就可以迭代改写 persona。
  • 记忆和动作的闭环设计比较自然。行动结果可以更新记忆,记忆又改写 persona,persona 再控制下一轮行动,这比固定 RAG 流程更接近长期个人助理。
  • 消融结果给了一个清晰信号:如果要做 personalized agent,单纯加 memory 不够,必须让 memory 影响 action policy。

局限与展望

  • 作者承认文本反馈可能忽略隐式或多模态用户信号,例如情绪、视觉偏好、行为停留时间等。未来可以把点击、语音、图像或生理反馈纳入 persona 更新。
  • 个性化数据被频繁用于记忆检索和 persona 优化,会带来隐私风险。论文提到可以探索 federated learning 等隐私保护机制,但当前框架尚未具体实现。
  • 实验主要在 LaMP 个性化任务上验证,真实长期部署中的用户偏好漂移、恶意反馈、数据过期和跨设备同步还没有被系统评估。
  • persona prompt 的自动更新可能累积错误。如果某次交互的 ground truth 本身噪声较大,文本梯度可能把 persona 推向错误偏好,需要更稳健的更新和回滚机制。

相关工作与启发

  • vs RAG / PAG: RAG 检索用户历史,PAG 进一步使用 profile,但二者通常是固定工作流;PersonaAgent 让 persona 调制动作策略,可以决定何时检索、检索什么、如何使用证据。
  • vs ReAct: ReAct 具备工具使用和推理能力,但不是用户级对齐;PersonaAgent 在 ReAct 类 agentic loop 上加入个人记忆和 persona 控制。
  • vs MemBank: MemBank 强调长期记忆,但个性化行动控制较弱;PersonaAgent 的消融显示 memory 重要,但 action module 和 persona bridge 更是性能核心。
  • vs 用户特定微调: 微调可以做个体对齐,但计算和维护成本高;PersonaAgent 用测试时 prompt 优化避开了大规模用户场景下频繁更新模型参数的问题。

评分

  • 新颖性: ⭐⭐⭐⭐ 将 memory、action 和 persona prompt 结合成测试时可优化的个性化 agent 框架,概念整合度高。
  • 实验充分度: ⭐⭐⭐⭐ 有主实验、消融、persona 分析、test-time scaling、base model 变化、效率和冷启动;真实在线用户研究仍缺失。
  • 写作质量: ⭐⭐⭐⭐ 动机清楚,表格覆盖全面;部分公式和算法描述偏 prompt engineering,工程细节仍可更具体。
  • 价值: ⭐⭐⭐⭐⭐ 对构建个人助理、推荐式 agent 和长期用户交互系统很有启发,尤其是 persona-as-controller 的设计。