← 返回 2026-05-15

BOOKMARKS:面向角色扮演的高效主动情节记忆框架 BOOKMARKS: Efficient Active Storyline Memory for Role-playing

Letian Peng, Ziche Liu, Yiming Huang, Longfei Yun, Kun Zhou, Yupeng Hou, Jingbo Shang 📅 2026-05-13 👍 8 2026-07-13 08:36
LLM Agent 剧情理解 检索增强生成 角色扮演智能体 长上下文记忆

用书签式问答对在长剧情中按需检索与增量同步,让角色扮演智能体既保留细节又省算力

前置知识

角色扮演智能体 (RPA)

指在给定场景下能持续以某个虚构角色身份产出符合其人设、情绪与情节需要的行动或对白的 LLM Agent。任务形式通常是把当前若干轮动作作为 scene 输入,让模型采样下一个动作 $a_i \sim \text{RPA}(\cdot | s_i, c_i)$,以最大化与原作 ground truth 的匹配。

论文的核心评估对象就是 RPA:BOOKMARKS 是为长剧情下的角色一致性而设计,benchmark 围绕 85 个角色、约 15.2K 个测试动作展开,不理解 RPA 的输入输出形式就读不懂整个方法链。

基于检索 vs. 基于压缩的记忆

检索式 (RICL) 每次按相似度从历史中捞 top-k 例子拼到 prompt 里,覆盖范围有限且把示例当成孤立实例;压缩式 (profile / ETA) 把整条剧情压成一段持续更新的角色档案,再用通用摘要增量改写。两种范式在长剧情下都存在「细节丢失」或「同步不灵活」的痛点,论文反复对照这两个基线。

BOOKMARKS 的核心主张就是「只把需要的信息维护成可复用的问答对」,比检索更系统、比压缩更精准。读者必须先看清这两种范式的局限,才能理解书签机制的动机。

搜索式 grounding 与同步点 (synchronization position)

搜索式 grounding 是让 LLM 根据当前任务主动提出问题,再用 (q, y) 形式的问答对在历史中查找证据;同步点 $p$ 是该问答对在剧情中「截至哪一幕仍然成立」的时间戳,更新只发生在 $[a_{p+1},\ldots,a_{i-1}]$ 这段新出现的剧情上,是 BOOKMARKS 增量同步的工程基础。

论文把书签抽象成 $b = (q, y, \tau, p, m)$,其中 $\tau \in \{\text{concept, state, behavioral}\}$ 决定同步算子 $U_\tau$。理解同步点才能理解为什么每次更新只扫「未读后缀」,从而达到 70% 以上的算力节省。

研究动机

现有 RPA 记忆系统主要有两类,一类是静态 profile(function-based、dialogue-recursive、topic-indexed summary 等),它们把所有剧情压成一份档案在每场 scene 重新挂回 prompt,由于是「猜什么要留、什么该丢」,压缩过程不可避免地丢细节;另一类是检索式 RAG(RICL、Emotional RAG 等),只捞与当前 scene 相似的 top-k 历史示例,等于只看到「局部剧情」,遇到跨长程伏笔就会缺证据。在 Death Note、A Game of Thrones 这种长程依赖的故事里,几十幕前埋下的细节和角色关系变化会决定后续动作,仅靠通用摘要的 incremental profile 不一定能保留,仅靠相似度检索也不一定能召回。作者还做了一个补充实验:profile 更新本质上是「无差别同步」,每条新动作都会触发整份档案的改写,对后续 70% 以上的 bookmark 来说这种更新其实是浪费算力的。

本文的目标是论文目标是为 RPA 设计一种「搜索式 + 主动 + 增量」的记忆框架,让角色在长剧情下既能稳定复现原作的 ground-truth 动作 (15.2K 测试样本上 16 个作品的 85 个角色),又能把每步预测的搜索计算量降下来。具体而言,希望达到三件事:(1) active grounding:每个 scene 由 LLM 主动挑出「现在最该跟踪的几个问题」;(2) passive updating:只对当前 scene 真正调用的 bookmark 做增量同步,剩下 90% 以上的条目靠 hit 而不重算;(3) type-aware synchronization:对概念 (concept)、状态 (state)、行为模式 (behavioral) 三类问题分别设计同步算子。

与已有工作不同的是,作者把「人读小说时会折页夹书签」这一生活直觉形式化:每条 bookmark 形如 $b = (q, y, \tau, p, m)$,$q$ 是自然语言提问,$y$ 是当前答案,$\tau$ 是问题类型,$p$ 是同步点,$m$ 是类型相关的辅助证据。新颖之处在于把 bookmark 同时当成「长期可复用的记忆单元」和「按需同步的工作单元」:exact match 时直接 reuse、相关时 derive 出新书签、不匹配时再从故事起点新建。这种「可重入、可派生、可新建」的三元匹配把传统 profile 的「无差别增量」改成「任务驱动的命中再算」,从而获得超过 90% 的 hit rate 与 70%+ 算力节省,同时不牺牲 ground-truth 复现率。

核心方法

BOOKMARKS 的整体思路是模仿人类重读小说时在关键位置夹书签的阅读习惯:维护一个全局 bookmark 池 $B$,每个 bookmark 是带类型与同步点的 $(q, y, \tau, p, m)$ 元组。给定当前 scene $s_i$ 与目标角色 $c_i$,流程分三步。第一步 Proposal(主动 grounding):让 LLM 根据当前任务生成 $K$ 个问题 $Q_i = \{(q_i^{(k)}, \tau_i^{(k)})\}$,配以搜索类型。第二步 Matching(被动更新入口):对每条 query 在 $B$ 中按类型 + 词面重叠过滤出 top-$K'$ 候选,再让 LLM 判定 reuse / derive / none:reuse 沿用现书签并把同步点直接拉到当前点;derive 用父书签的当前答案作种子新建一个书签;none 则在故事起点 #0 新建一个答案 [Unknown] 的书签,再增量同步。第三步 Grounding:被激活的书签用各自类型的 $U_\tau$ 算子同步到 $i-1$ 位置,再叠加 5 步以内的 near-bookmark 组成 grounding context $g_i$,送进 RPA:$a_i \sim \text{RPA}(\cdot | s_i, c_i, g_i)$。技术上不像传统 profile 那样对所有信息都压缩,而是「只为当前 scene 维护几条可复用的问答对」。

核心创新是把 grounding 拆成 active + passive 两半并落到同一个 bookmark 数据结构上。Active 一面指 Proposal 阶段对场景敏感、由 LLM 即兴生成问题(行为类问题写成通用形式以便跨 scene 复用,状态类问题以「当前时间点」措辞以保持时间锚定),避免固定模板覆盖不全;Passive 一面指只有被匹配的 bookmark 才调用 $U_\tau$ 做增量同步,其它条目原地不动。三个类型对应三种同步策略:concept 用关键词召回 + 上下文窗口合并 + 摘要(适合逐步引入的实体定义),state 用固定窗口分块迭代(适合位置、关系、目标等随剧情演化的属性),behavioral 用「对目标角色未读动作做二元分类」筛选证据后再摘要(避免把整条剧情全塞进行为描述)。关键差异:传统 incremental profile 是「无差别同步」,BOOKMARKS 是「hit 时增量、miss 时新建」;RICL 只在 prompt 顶层贴示例,BOOKMARKS 则是把示例组织成可继承的同步状态。

方法步骤详情

方法步骤按 pipeline 展开如下。Step 1 提案:输入 $(s_i, c_i)$,用 LLM 输出 5 条 $(q^{(k)}, \tau^{(k)})$,behavioral 写成「Kasumi 在被挑战时如何回应」这样的通用句,state 写成「Kasumi 当前最关心的目标是什么」这样的时间锚定句。Step 2 匹配:先按 $\tau$ 筛同类型候选,再用去停用词后的词面重叠取 top-3,最后 LLM 标 reuse / derive / none。reuse 直接激活该书签并把 $p := i-1$;derive 拷贝父书签的 $y$ 作为种子新建书签,$p$ 继承父书签位置,从那里继续同步到 $i-1$;none 在 #0 位置建一个 $y=\text{[Unknown]}$ 的空书签。Step 3 同步:根据 $\tau$ 选用不同算子。Concept 同步 $U_\text{concept}$ 在 $[a_{p+1},\ldots,a_{i-1}]$ 上做关键词检索、合并相邻上下文、LLM 摘要;State 同步 $U_\text{state}$ 把未见后缀按固定 chunk 迭代更新 $y$,适合「位置/目标/关系」类演化属性;Behavioral 同步 $U_\text{behavioral}$ 用一个 0.1B 参数的 deberta-v3-base 蒸馏分类器对未读动作逐条打「是否直接证据」标签,把命中的证据累积到 $m$ 再 LLM 摘要。Step 4 组装 grounding context:把激活 bookmark 同步后的答案 $y'$ 与同步点距 $i$ 不超过 5 的 near-bookmark 拼成 $g_i$。Step 5 预测:$a_i \sim \text{RPA}(\cdot | s_i, c_i, g_i)$,用 gpt-5.1 输出;候选 LLM 用 gpt-5.4-mini 做轻量推理。

技术新颖性

技术新颖性体现在三点。第一,把人类「折页夹书签」的阅读行为形式化为带同步点的 $(q, y, \tau, p, m)$ 五元组,让记忆单元既可作为长期存储、又可作为增量同步的工作面,这是 RPA 记忆研究中首次明确「按命中点增量」的设计。第二,把三类问题解耦到不同同步算子 $U_\text{concept}$、$U_\text{state}$、$U_\text{behavioral}$,并用行为分类器替代「对整条剧情做摘要」的旧做法,避免把场景级细节平均掉。第三,匹配阶段引入 reuse/derive/none 三元判定,把「同一问题复用」「相关问题派生」与「无匹配新建」分开,使得 bookmark 池既能持久化又能在分支场景下繁衍新条目;reuse 命中即可跳过增量同步,是 90% 命中率与 70% 算力节省的来源。第四,论文把推理期 grounding 进一步做成「动态 profile 检索 + 池子更新」,作者明确称这是「rolling self-augmentation」,在 RP 记忆领域目前没有先例。

BOOKMARKS grounds role-playing by actively searching for useful information from the preceding storyline, while passively updating previous search results for efficiency.
Figure 1: BOOKMARKS grounds role-playing by actively searching for useful information from the preceding storyline, while passively updating previous search results for efficiency.
The role-playing grounding workflow of BOOKMARKS.
Figure 2: The role-playing grounding workflow of BOOKMARKS.

实验结果

在 16 个作品、85 个角色、共 15.2K 测试动作的 Fandom + Bandori 双基准上,BOOKMARKS 在 Key Move Exact Match 上系统性地超过 Vanilla、RICL、ETA 三个基线。Fandom 平均 EM 从 Vanilla 的 26.56 → RICL 27.53 → ETA 28.06 → BOOKMARKS 30.03;Bandori 平均从 39.25 → 40.81 → 41.98 → 44.53。提升最显著的是长程依赖强的作品:A Game of Thrones 上 BOOKMARKS 达到 39.35(Vanilla 33.87,+5.48),Death Note 上 24.76(Vanilla 20.89,+3.87),Spy × Family 上 28.26(Vanilla 26.56,+1.70),这三个剧情里「几十幕前的伏笔会决定后续动作」的现象最明显。Bandori 系列提升也很稳定,PoPiPa 从 Vanilla 41.22 提升到 46.84(+5.62),Monica 从 44.62 提升到 51.05(+6.43)。Hit rate 方面(Figure 3)reuse 单独就能保持持续的高命中,引入 derive 后总体有效命中率超过 90%,意味着超过 70% 的搜索计算可以被省掉。消融实验(Table 3,PoPiPa S1)显示,去掉 Derive 或同时去掉 Reuse/Derive 都能保持 47.47/47.62 的性能,但会把节省的算力还回去;去掉 Near-bookmark 跌到 45.38(-1.46),证明邻近书签的局部连续性确实有用;把 behavior 更新换成 incremental behavior update (IBU) 跌到 45.45(-1.39),说明行为模式应通过「验证过的动作证据」维护而不是「状态转移式」压缩。Live 评估(Table 4,BanG Dream Event 321,2026/2/8 发布,gpt-5.1 / gpt-5.4-mini 知识截止之后)上 BOOKMARKS 拿到 48.70,ETA 43.95、RICL 43.45、Vanilla 39.79,证明在模型无法靠训练记忆熟悉剧情时,bookmark 池仍能有效组织已观察到的信息。Case study(Figure 4)展示在多动作连续生成中,BOOKMARKS 通过「物理位置」「前序事件」「Poppin'Party 活动」「Tae 说话风格」「Arisa 对计划反应」等 5 条可复用书签的并行激活,把后续 4 轮对话维持在「五个人共同感受到节日精神」这一情感基线上,而 ETA 偏向泛化讨论策略,丢失了原句的情绪焦点。

Instance examples in benchmarks. (Scenes include 10 preceding actions in real benchmarks)
Table 1: Instance examples in benchmarks. (Scenes include 10 preceding actions in real benchmarks)
RP performance (Key Move Exact Match Rate) comparison on Fandom and Bandori benchmarks.
Table 2: RP performance (Key Move Exact Match Rate) comparison on Fandom and Bandori benchmarks.
Ablation Study on BOOKMARKS framework. Incremental Behavior Update (IBU): Apply incremental updating for behavior.
Table 3: Ablation Study on BOOKMARKS framework. Incremental Behavior Update (IBU): Apply incremental updating for behavior.
Live storyline (BanG Dream! Girls Band Party! Event 321, released on Feb 8th, 2026) results.
Table 4: Live storyline (BanG Dream! Girls Band Party! Event 321, released on Feb 8th, 2026) results.
Statistics of benchmarks (Fine-grained Fandom Benchmark and Bandori Conversational Benchmark) used in the experiments.
Table 5: Statistics of benchmarks (Fine-grained Fandom Benchmark and Bandori Conversational Benchmark) used in the experiments.
The hit rate (matching an existing bookmark) and efficiency analysis of BOOKMARKS.
Figure 3: The hit rate (matching an existing bookmark) and efficiency analysis of BOOKMARKS.
Case study on comparing BOOKMARKS and conventional profiling, based on multiple action prediction.
Figure 4: Case study on comparing BOOKMARKS and conventional profiling, based on multiple action prediction.
查看结构化数据
任务指标本文基线提升
Fandom (8 部作品平均) 关键动作 EM Key Move Exact Match Rate (%) 30.03 ETA 28.06 / RICL 27.53 / Vanilla 26.56 +1.97 (相对 ETA) / +2.50 (相对 RICL) / +3.47 (相对 Vanilla)
Bandori (8 个乐队平均) 关键动作 EM Key Move Exact Match Rate (%) 44.53 ETA 41.98 / RICL 40.81 / Vanilla 39.25 +2.55 / +3.72 / +5.28
Death Note (长程依赖强) Key Move EM (%) 24.76 ETA 21.34 / RICL 19.91 / Vanilla 20.89 +3.42 / +4.85 / +3.87
A Game of Thrones (长程依赖强) Key Move EM (%) 39.35 ETA 35.78 / RICL 37.64 / Vanilla 33.87 +3.57 / +1.71 / +5.48
Live Evaluation (Event 321, 2026/2/8 发布) Key Move EM (%) 48.70 ETA 43.95 / RICL 43.45 / Vanilla 39.79 +4.75 / +5.25 / +8.91
Hit Rate & 计算节省 Bookmarks matched (reuse+derive) / saved search cost >90% 命中率 / 节省 >70% 搜索计算 ETA:每条新动作都触发整段 profile 重算 由 Reuse 跳过同步、由 Derive 用父答案作种子

局限与改进

作者在 Limitation 章节明确指出三个未做的事。其一,当前书签主要维护「故事级」的状态/行为/概念,没有显式跟踪「哪个角色知道什么」这种 recognition / belief 信息,对话剧里常见的「信息不对称」无法建模。其二,BOOKMARKS 目前只作为 generation 之前的 grounding 模块,生成后再做 self-refinement 没有纳入流程;作者设想未来可以与「agent 检视 bookmark 证据并修订已生成动作」这类自反思机制结合。其三,类型同步策略目前是统一设计,没有针对角色、剧情结构做自适应;例如侦探剧 vs 日常喜剧的「伏笔密度」不同,固定 5 条提案 + 5 步邻域 + 概念/状态/行为三分法可能不是最优解,论文把这块留给未来工作。此外,从我自己的观察看:(1) 主实验选用 gpt-5.1 + gpt-5.4-mini + deberta-v3-base 蒸馏分类器的组合,没有在开源 LLM(如 Llama-3 / Qwen-3)上验证,对算力受限的复现者来说成本与可复现性是潜在门槛;(2) 评估指标是单步 Key Move EM,这种「只比下一步」的做法会低估多步叙事一致性,而 Figure 4 的多动作案例表明 BOOKMARKS 真正的优势可能在多步连贯性上,但目前没有自动指标支撑;(3) Figure 3 报告的 hit rate 是「reuse+derive 比例」,但 derive 实际仍需一次 LLM 生成种子答案,严格意义上并非零开销,未来工作可以进一步拆分「reuse 严格零开销」与「derive 一次 LLM 开销」两段曲线。

独立分析的弱点

其一,evaluate 端用单步 EM 只测了下一步动作的 key move,无法充分体现 bookmark 在多动作情感连贯性上的优势。改进方向:引入 narrative-coherence 评估(参考 Wang 2025c 的 NLI 协议在多步 rollout 上跑),或者直接用 LLM-as-judge 给整段 4-6 动作打分,把 Figure 4 这类 case 的优势量化。其二,bookmark 的「5 条提案、5 步邻域」是硬超参,对伏笔稀疏 vs 伏笔密集的剧情一刀切。改进方向:把提案数量与邻域大小做成随 scene 复杂度自适应,比如检测到「前 N 步出现新角色」就把邻域扩到 10,遇到同 scene 重复出现的话题就把邻域压到 2。其三,behavioral bookmark 用 0.1B 的蒸馏分类器挑证据,虽然效率高但召回细节能力受限于训练数据分布,对非 ACG 类长剧情(侦探、政治剧)的复杂行为模式可能漏检。改进方向:用更大的 cross-encoder 或在 ground-truth action 上做 RAG-style retrieval 来补充。其四,paper 没提供 prompt 模板与少量样本 (few-shot) 的具体内容,Proposal 质量难以独立审计。改进方向:在附录公开 prompt 与 5-10 个手工校验的 query/answer 对,让社区能复现并改进 Proposal 阶段。其五,作者承认「recognition management」缺位,对话中常见的「只有 A 知道 B」这种信息约束未建模,会让 BOOKMARKS 在密室推理类剧情上泄露未公开给某角色的信息。改进方向:扩展 bookmark 元组加一个 knowledge-scope 字段 $V \subseteq \mathcal{C}$,同步时按角色集合做访问控制。

未来方向

作者明确提出的方向包括:(1) 把 bookmark 池扩展到「角色级认识论」,显式跟踪 $V_c$ 即角色 $c$ 已知信息的子集,使生成时能基于「谁掌握了什么」过滤 ground 真相;(2) 把 BOOKMARKS 与 self-refinement 框架结合,agent 生成动作后回看 bookmark 证据做自检并修订;(3) 为不同 query 类型、角色、叙事结构设计定制化更新策略,例如对推理剧给 behavioral bookmark 更高权重,对日常剧给 state 更高权重。基于 BOOKMARKS 的成果可延伸的方向还包括:(4) 把 bookmark 池做成可解释的「剧情笔记」供创作者审阅,自然衔接 story-writing 工具链(与 StoryWriter、BooKWorlD 衔接);(5) 用 bookmark 的派生关系 (derive) 构建角色动态知识图谱,进而支持跨剧情的角色迁移学习;(6) 在多语言 / 跨作品设定下,把不同作品的 bookmark 池通过相似 query 桥接,做零样本角色扮演;(7) 与 RAG-as-RL(如 Search-R1)结合,让 agent 学会自己提更准的 query,进一步提升主动 grounding 的命中率。

复现评估

代码仓库在 KomeijiForce/BOOKMARKS_Koishiday_2026,论文使用的是闭源模型 gpt-5.1 做最终生成、gpt-5.4-mini 做 Proposal / Matching / Summary 等辅助调用、deberta-v3-base (0.1B) 做行为分类器,主实验对算力门槛较高(需要稳定的 gpt-5 系列 API 配额)。基准数据 (Fandom 8 部 + Bandori 8 队) 与 ground-truth 决策树均来自 Peng et al. 2026 既有工作,便于复用。评估指标是单步 Key Move EM,judge 用 gpt-4.1,作者报告 500 例人工校验中 96.6% 一致,说明打分可信度较高。复现难度分两层:用闭源模型复现主表较易但需 API 成本;想完全开源化则需替换 gpt-5.1 / gpt-5.4-mini 为开源 LLM,并重新蒸馏行为分类器,预期会有 2-4 个百分点的性能回落。整体看数据集、指标、judge 都公开,bookmark 数据结构清晰(5 元组 + 三个同步算子),作者若补完整 prompt 模板与少量 few-shot 示例,复现门槛会进一步降低。