浙大推出让AI会「导演」的角色扮演框架!四通道消息沉浸式交互|ACL 2026
AdaMARP团队 投稿量子位 | 公众号 QbitAIAI能实现真正的沉浸式扮演了。大语言模型在角色扮演任务上进展迅速但现有系统往往缺乏沉浸感和适应性环境信息未被充分建模场景与角色也多为静态难以支撑多角色调度、场景切换、动态引入新人等复杂叙事需求。现在浙江大学联合腾讯优图实验室提出AdaMARPAdaptive Multi-Agent Interaction Framework for General Immersive Role-Playing——一种面向通用沉浸式角色扮演的自适应多智能体交互框架。该框架通过四通道消息格式和场景管理器让AI不仅会「说」还会「想」、会「动」、会「感知环境」并在复杂叙事中灵活切换场景、动态引入新角色。目前该工作已被ACL 2026接收。从跟AI聊天到和角色共处大语言模型在角色扮演任务上的应用正快速普及用户可以设定任意角色历史人物、小说角色、原创人设与AI进行持续的叙事互动。理想状态下AI应当能够代入这个角色在情境中保持人设一致、对环境敏感、对他人话语做出贴合关系的回应。但现实中大多数系统更像是会说话的聊天机器人对话虽流畅却缺少情境感和叙事张力。以探案为例故事往往在一个固定场景、固定人物之间反复进行无法四处搜证、无法与不同证人轮番对质、无法让环境线索真正参与推理缺乏真正的剧情推进和世界变化。现有方法缺了环境信号也缺了“组织者”研究团队指出当前角色扮演系统主要存在两类局限。一、沉浸感不足环境被当成「背景板」不少工作只建模角色的台词Speech后来有研究加入了动作Action或内心独白Thought但在叙事中环境并非可有可无的装饰。它会塑造氛围、推动因果连接角色的行动、世界的变化与后续对话。例如案发现场地毯上的蜡痕、煤气灯照出的阴影角度、证人住所门口未干的泥渍……这些环境信号既能支撑推理蜡痕指向婚礼蜡烛泥渍暗示来客方向也能成为剧情转折的契机换一个场景就换一批证人和线索。若系统不把环境当作与台词、动作同等重要的信号来建模角色就容易像是在一个空房间里自言自语探案也就失去了「搜证」的实感。二、互动结构过于静态缺一个「会调度的导演」多数系统假定场景不变、人物不变、用户与某个固定角色一问一答。但探案恰恰需要四处搜证从案发现场到苏格兰场从房东太太的公寓到嫌疑人的宅邸每个场景都有不同的环境和证人。谁来接下一句是先问管家还是先问马车夫何时换场景、何时引入新证人现有框架很少系统性地回答这些问题。没有这些能力故事就很难自然地「演下去」更像是在一个封闭的聊天室里重复对话而非一场真正的调查。AdaMARP四通道消息格式场景管理器AdaMARP从两个方向回应上述问题。沉浸式消息格式 Thought–Action–Environment–SpeechAdaMARP 为每一轮交互定义了一种四通道交织的消息格式这样一个完整的回应可以同时包含思考、动作、环境感知和言语且顺序可灵活交织。例如福尔摩斯在讯问证人时煤气灯摇曳证人下意识地瞥向壁炉上的时钟 [他在回避具体时间那段时间他不在场]用烟斗轻轻敲了敲桌面案发当晚八点到九点您究竟在哪里环境线索 → 内心推理 → 施压动作 → 追问话语四者形成一条清晰的因果链更贴近真实探案的节奏。同时环境不再只是点缀。案发现场的物证摆放会支撑角色的推理链条证人住所的布置凌乱的书桌、未拆的信件可以暗示性格与行踪场景切换则自然引入新的证人与线索。环境既参与氛围营造也参与推理与叙事的因果。自适应框架三智能体场景管理器的五种动作AdaMARP将角色扮演建模为三个智能体的协作Actor模型扮演所有非用户角色User模型代表用户方可由 LLM 模拟或真人替代场景管理器Scene Manager负责高层调度与控制。场景管理器通过一组离散动作来驱动整场「演出」init_scene初始化场景如贝克街 221B或某起凶案现场pick_speaker选择下一句由谁来说——是福尔摩斯追问、华生补充还是证人陈述并给出理由switch_scene切换场景从案发现场到证人公寓从苏格兰场到嫌疑人宅邸add_role在叙事中动态引入新角色新发现的证人、突然登门的访客含人设与动机end结束本场互动。每一步决策都会输出对应的理由使调度过程可解释、可约束。这样系统既能决定「谁来接话」也能决定「何时换场景搜证」「何时引入新证人」从而支持更复杂、更开放的多角色探案叙事。上述设计在实践中如何运转不妨看一段福尔摩斯探案叙事的拆解。各环节均由场景管理器调度需要注意的是本案例仅仅用于理解省略了部分细节例如详细的角色档案、角色动机场景管理器的原始输出等完整示例探案叙事中的AdaMARP角色福尔摩斯、华生。初始场景伦敦东区某寓所三层案发后的深夜。厚重的窗帘半掩煤气灯在风中摇曳在墙面上投下晃动的影子。壁炉已熄余烬旁的地毯上有一小块凝固的蜡痕不远处散落着几根烧尽的火柴。福尔摩斯与华生立于现场中央窗外隐约传来泰晤士河上的汽笛声。场景管理器选择的动作为pick_speakerspeaker: 福尔摩斯理由侦探应先勘察现场并给出初步推理福尔摩斯煤气灯昏黄蜡痕在阴影中隐约可见 [烛泪的位置和形状……婚礼蜡烛而且是左手持烛]蹲下身捻起碎屑嗅了嗅站起身华生去查查最近三个月内举办过婚礼、且家中有人左撇子的家庭。场景管理器选择的动作为pick_speakerspeaker: 华生理由福尔摩斯已下达指令助手应领命执行华生点点头明白推门而出走廊里传来渐远的脚步声随后是马车驶离的声响场景管理器选择的动作为switch_scene理由华生已前往调查需切换至下一个搜证地点——案发地邻居的住所新场景白教堂附近一栋老式公寓房东太太的住处。狭窄的木楼梯吱呀作响扶手蒙着一层油腻。二楼的走廊昏暗炖菜的气味从尽头的厨房飘来。门厅狭小壁炉上摆着一只廉价的瓷钟墙角堆着未拆的信件。场景管理器选择的动作为add_rolenew_role: 房东太太案发现场的邻居这栋公寓的房东理由作为案发地邻居可能掌握关键证词需引入讯问场景管理器选择的动作为pick_speakerspeaker: 福尔摩斯理由讯问应由侦探主导开场福尔摩斯摘下礼帽微微颔首夫人案发当晚八点到九点您是否听见三楼有任何异常声响场景管理器选择的动作为pick_speakerspeaker: 房东太太理由需听取证人对时间线的陈述。房东太太下意识地瞥向壁炉上的时钟场景管理器选择的动作为pick_speakerspeaker: 福尔摩斯理由证人出现回避迹象应继续追问施压福尔摩斯[她在回避具体时间]用烟斗轻轻敲了敲桌面那段时间您究竟在哪里场景管理器选择的动作为pick_speakerspeaker: 房东太太理由给证人回答的机会房东太太咬了咬嘴唇正要开口——场景管理器选择的动作为add_rolenew_role: 雷斯垂德探长理由新证人线索出现探长需汇报调查进展场景管理器选择的动作为pick_speakerspeaker: 雷斯垂德理由探长带来新线索应由其先行说明。雷斯垂德福尔摩斯先生我们发现了新的证人马车夫说他当晚载过一名黑衣男子…………初始场景、发言调度、场景切换、角色引入均由场景管理器驱动且每步均以「选择的动作为Action_name | 理由Reason」的形式可解释。这种结构化、多通道、多场景、多角色的连贯叙事恰恰是AdaMARP旨在支撑的探案节奏。训练数据从文学提取从主题合成为训练上述能力研究团队构建了两个数据集分别面向Actor模型和场景管理器。AdaRPSet让角色「会演」AdaRPSet面向Actor模型由两个互补子集构成AdaRPSet-Extracted文学提取从Goodreads「最佳书籍」榜单选取81本代表性文学作品经三阶段管道构建(1) 分块按章节切分并合并为合适长度的文本块(2) LLM提取识别连贯场景与多角色互动轨迹将对话直接转化为统一的Thought–Action–Environment–Speech 格式严格区分角色动作与环境信号(3) 角色画像生成按角色聚合全书证据合成七维画像身份与外貌、性格与心理、说话风格、能力兴趣、社会背景、个人经历、人际关系。每条轨迹采用多视角增强同一场景下轮流指定不同角色为主角其余为NPC从而扩展训练样本。提取数据天然具有文学质感与人味适合学习格式规范与基础演绎能力。AdaRPSet-Synthesis主题合成文学提取的轨迹多为单场景、角色固定的互动对场景切换与动态引入新角色的覆盖不足。研究团队因此构建合成数据在20类主题冒险、探索、探案、解谜、密谋、营救、逃亡、战斗、浪漫、友谊、竞争、背叛、和解、谈判、策略、魔法、末世等下由LLM生成情节级轨迹。每条轨迹明确包含初始情境、主控角色与多个辅助角色、多轮对话统一格式以及场景管理器的控制消息如 switch_scene、add_role。每条轨迹至少包含一次场景切换和一次角色引入用以强化模型对动态叙事的适应能力。合成数据与提取数据在训练时合并使Actor模型既能学格式与人味又能学动态调度下的演绎。关于两个互补子集对应的细节信息如下表所示。其中Plots指的是初始情节片段包含初始场景和初始角色的数量Roles指的是不重复的角色数量Convs指的是指的是完整的角色扮演记录初始情节片段和衍生的不同对话轨迹的数量Utterances指的是所有角色扮演记录中对话的数量Avg. Turns 指的是每个角色扮演记录的平均对话数量。AdaSMSet让系统「会导」AdaSMSet面向场景管理器在AdaRPSet-Synthesis的基础上构建。合成轨迹已包含init_scene、switch_scene、add_role、end等控制动作但缺少最核心的发言者选择监督。研究团队在每两段角色发言之间插入 pick_speaker 动作由强指令遵循模型为每次选择生成自然语言理由reason并约束理由需具体、上下文相关避免套路化表述。AdaSMSet因而覆盖场景管理器的全部五类动作为「何时换场景」「何时加人」「谁来接下一句」及对应理由提供端到端监督。由于AdaSMSet源于AdaRPSet-Synthesis因此对应的Plots、Roles和Convs的统计信息与其一致由于添加了pick_speaker记录因此最终的Utterances数量为496493Avg.Turns为50.15。两者的互补AdaRPSet与AdaSMSet共同支撑AdaMARP前者让角色「会演」保持人设、响应环境、推进剧情后者让系统「会导」合理切换场景、引入角色、安排发言顺序。二者共享统一的角色画像与消息格式确保Actor与场景管理器在同一叙事框架下协同工作。AdaptiveBench为什么还要自建评测有了训练数据和框架还需要回答一个关键问题怎样评估「沉浸式、可适应」的角色扮演是否真的做得好现有很多评测更偏向「一句话好不好」或「单轮对话像不像这个人设」难以覆盖AdaMARP所关心的几点整段故事而不是单句回复真实体验来自整条对话轨迹是否连贯、有张力而非某一句是否优雅。环境与动作是否被真正用起来环境线索有没有参与推理和叙事动作是否和内心、台词呼应。多角色与场景切换是否自然场景管理器有没有「带好这场戏」包括什么时候换场景、什么时候加新角色、谁来接下一句。为此研究团队提出了AdaptiveBench一个面向自适应角色扮演的仿真评测框架。它从AdaRPSet-Synthesis的保留子集中选取剧情种子20个话题每个话题5个初始Plots总共100个评估样本在每个种子上同时运行三方角色用户模型可以是真人或LLM Agent作为「演员」的Actor模型负责调度的场景管理器在每个种子上场景管理器连续发出若干轮pick_speaker、switch_scene、add_role动作驱动Actor与用户侧完成一整段多轮对话。完整轨迹生成后再由评估模型从轨迹级别给出多维评分。具体而言AdaptiveBench主要从轨迹级别Trajectory-level评估模型评分包含以下维度一、针对Actor模型的五大维度角色一致性Character Consistency角色内心、动作、台词是否自洽说话风格、身份背景、核心动机是否在整场戏中保持一致环境基础Environmental Grounding角色是否对环境有感知如记住地毯上的蜡痕并利用环境线索做出行动而不是将环境当成死物人际互动Interpersonal Interaction能否听懂他人的话外音并根据人物关系如侦探对证人、侦探对助手做出贴切的互动响应叙事推进Narrative Progression每一次发言是否提供了新信息、新动作或情绪发展推动故事向前走而不是原地打转指令遵循Instruction Compliance是否严格遵守了四通道格式要求不越俎代庖替其他角色或系统说话二、针对场景管理器Scene Manager的四大维度场景理解Scene Understanding能否正确跟踪当前场景的进展判断何时该切换到下一个场景比如搜证结束转往证人公寓发言纪律Speaker Discipline能否合理安排轮次是否让所有人在恰当的时机说话不冷落用户也不让NPC连续霸麦角色引入判断Role Introduction Judgment何时需要引入新角色引入的时机和理由是否能推动剧情整体评价Overall Assessment这三个维度的配合是否流畅整场「戏」的导演节奏感好不好通过 AdaptiveBenchAdaMARP 不只是「有一个好看的框架设计」而是可以在统一的仿真环境下对不同模型、不同训练方式的优劣进行可重复、可量化的比较。从叙事逻辑与情境交互能力来看AdaMARP能够产出更连贯的内心—行为—言语链更好地利用环境推动叙事例如探案中的物证与场景线索并在多角色、多场景的复杂情境中实现灵活调度例如切换场景搜证、与不同证人轮番对质。这为无论是探案推理、冒险叙事还是其他需要情境与调度的互动的更沉浸式的AI角色扮演提供了一个新的技术路径。项目主页https://xuzhenhua55.github.io/AdaMARP/#overview