PHASE-Tree|为长线 AI 角色构建可演化的人格骨架 今年 6 月NVIDIA 在 Unreal Fest 2026 公布了面向 Unreal Engine 5 的本地 AI 角色工具并展示了将 NPC 的角色设定与具体表演过程分开的工作流让角色能够根据现场情况行动和回应同时保持角色一致性。当 AI 角色进入真实游戏运行时一句台词通常会同时受到多组信号影响。Quest Flag 记录任务已经推进到哪个分支Relationship Value 表示角色与玩家的关系阶段长期记忆保存双方共同经历过的事件Persona 则定义角色长期保持的性格和语言风格。这些信息都可能是正确的。Dialogue System 仍然需要一份可以直接使用的 Current Character State说明剧情走到此刻角色的关系、立场、行为倾向和情绪已经发生了哪些变化。缺少这层状态时RAG 可以召回正确事件任务系统也能给出正确 Flag模型依然可能沿用第一章的态度生成台词。我们在上一篇文章中已经系统介绍过在 PHASE-Tree属性树研究中将这类现象概括为 stale-state failure也就是角色状态滞后。PHASE-TreeCPC 不只要会聊、会打还要会成长AI 队友的状态演化难题PHASE-Tree属性树是一种面向长线 AI 角色的状态建模与演化方法。它把剧情与互动转成可追溯的证据按照字段阻力、事件强度、证据跨度和更新冷却期维护角色的当前状态再通过结构化文本或动态 LoRA 将状态提供给生成模型。PHASE-Tree 位于游戏运行时的哪一层一套完整的 AI 角色系统通常包含多个职责不同的模块。PHASE-Tree 中的 Tree 指角色状态的层级结构。Behavior Tree 和 Utility AI 继续负责 NPC 的动作决策Quest System 维护任务进度剧情 Flag 保存关键分支PHASE-Tree 则向对话和角色决策模块提供持续更新的 Current Character State。例如一次守城任务结束后Quest Flag 可以记录任务已经完成Relationship Value 可以增加信任分数长期记忆可以保存玩家在危机中留下的事实。PHASE-Tree 进一步维护这些经历带来的状态变化例如角色已经从“保持戒备”进入“有限信任”同时保留其谨慎、克制的长期表达风格。四层状态四种变化速度PHASE-Tree 全称为 Psychology-grounded Hierarchical Attribute-Structured Evolving Tree。它参考人格心理学对稳定特质、情境适应和即时状态的区分将角色在时刻 \(t\) 的完整状态表示为四个部分Persona、Session 和 Moment 带有时间下标会随着剧情推进以不同速度更新。图 1 PHASE-Tree 的四层数字人格结构图中的短期更新主要作用于 Session 和 MomentIdentity 与 Persona 保持锁定。长期更新中Identity 仍作为身份锚点Persona、Session 和 Moment 可以依据相应证据发生变化。四层状态中的字段可以独立寻址关系进展时只更新 Relationship场景气氛改变时刷新 Moment一次冲突不会连带改写角色的爱好、职业和说话方式。这种字段级结构也方便游戏团队将状态接入已有系统Quest State 可以关联 Session关系阶段可以映射到 Persona 中的 Relationship当前战斗后的紧张或兴奋则进入 Moment。角色先根据当前状态完成本轮回应。互动结束以后系统才从已经发生的内容中提取证据形成下一时刻的状态。当前状态 S ₜ → 本轮回应 → 提取证据 e ₜ → 下一时刻状态 S ₜ ₊₁新证据从下一轮开始生效不会回头改写已经生成的台词。剧情先变成证据证据再改变状态PHASE-Tree 按互动发生的顺序更新角色角色先根据当前状态完成本轮回应互动结束后系统再提取证据生成下一时刻的状态新证据从下一轮开始生效已经生成的台词不会被事后修改。证据抽取以目标角色的视角进行系统关注角色新知道了什么、对谁的态度发生了变化、做出了哪些承诺以及当前立场和情绪受到了怎样的影响。职业变化、重大背景揭示、关系确立和关键承诺会进入高重要度证据普通但有意义的冲突、理解和态度变化则作为中等重要度证据继续积累。这些证据进入两条用途不同的轨道。Track A近期状态事件Track A 关注最近发生的明确变化主要服务关系、职业、爱好等低阻力字段。一次任务中的背叛可能立即改变角色的信任状态一项正式任命也可以直接更新职业字段。这类事实已经完成不需要等待十几章剧情才进入状态。Track B长期角色弧证据Track B 跨越多个剧情单元积累证据主要服务性格、行为倾向和说话方式等中高阻力字段。角色在一次战斗中表现勇敢可能来自当时的特殊环境。角色在多个 Questline 中持续承担风险、保护队友并主动接下高危任务才可能形成稳定的行为倾向变化。同一件关键事件可以同时进入 Track A 和 Track B。它可以立即推进关系阶段也可以成为长期角色弧中的一条证据。字段何时获得更新资格当证据指向某个字段的变化时PHASE-Tree 还会检查证据跨度、事件强度和更新间隔其中公式中的三个 ∧ 表示三项条件需要同时通过。证据不会被加权成一个模糊的综合分数。证据跨度用于判断变化是否经过了足够多的独立剧情单元事件强度确认其中是否包含能够支撑变化的关键事件冷却间隔用于防止同一字段在短时间内反复翻转。在实验中性格和说话方式等高阻力字段要求证据覆盖至少 16 个剧情单元其中包含至少 6 条高重要度事件并满足对应的更新间隔。关系、职业和爱好等低阻力字段拥有更快的更新条件。一条高重要度证据或两条中等重要度证据即可使相关字段进入候选更新。一句话可以改变情绪一次关键事件可以推进关系。习惯需要反复出现性格则要经过更长的剧情检验。通过这些门槛的变化还会在正式写入前接受进一步校验。候选更新与确定性校验开放剧情很难用固定规则逐句穷举大模型更擅长理解其中的语义变化。角色状态的写入需要稳定边界不能跟着一次模型判断随意改动。PHASE-Tree 将理解和写入分开处理。大模型读取证据记录提出候选更新。它会说明准备修改哪个字段、改成什么内容以及判断依据来自哪些剧情。确定性校验器随后核对证据编号与来源检查跨度、强度和更新间隔是否达标。它还会确认本次修改只影响目标字段原有内容得到保留同一份证据也没有被反复使用。任何一项检查没有通过原状态保持不变。通过校验后系统优先执行 incremental merge。仍然成立的描述会被保留新剧情增加新的侧面或修正局部内容。新旧状态发生明确冲突时系统只替换冲突部分。每次通过校验的字段更新都会保留证据来源和版本记录。开发团队可以按字段检查它在什么剧情单元发生变化以及本次变化使用了哪些事件作为依据。一棵人格树怎样抵达角色的下一句话PHASE-Tree 不绑定单一生成模型。当前角色状态可以通过两条路径交给模型。图 2 PHASE-Tree 的双路径生成机制两条路径共享当前 Dialogue Context区别在于角色状态进入模型的方式。显式文本注入显式路径将四层状态整理成结构化自然语言与当前对话一起交给生成模型这种方式可以直接检查模型读取了哪些状态字段也便于开发团队定位角色口吻、关系阶段或即时情绪是否被正确注入。论文的主要结果采用这条路径。隐式参数适配参数适配路径通过超网络把当前角色状态映射为动态 LoRA 增量权重图 2 中Profile Embedding、Module Embedding 和 Depth Embedding 共同描述字段内容、所属模块及层级位置。角色状态发生变化时LoRA 增量权重随之更新提示词中只需要保留当前对话。长对话实验中显式文本路径的平均输入为 1736 tokens参数适配路径为 372 tokens输入长度减少约 79%。当前 Profile-to-LoRA 映射会损失一部分细粒度状态信息因此论文将参数适配路径用于研究提示长度与生成效果之间的取舍。LongEvoRoleBench 让角色演化可以被测试LongEvoRoleBench 将八组角色对话数据整理成统一的下一句台词生成任务。四组长篇语料来自《老友记》《办公室》《哈利·波特》和《星际迷航》用于检查角色能否跨越剧情阶段持续演化。另有四组短篇语料关注单个场景中的信息、立场和情绪变化。长篇语料采用随机测试和 temporal extrapolation 两种划分。时间外推测试会将后期季数或书目留作测试数据用于观察角色进入后续剧情后生成模型是否仍然沿用早期状态。评测包含三个维度角色一致性采用 1—5 分评分场景连贯性采用 1—5 分评分参考台词语义相似度使用余弦相似度。长篇语料主结果以上结果是四组长篇语料在随机测试和时间外推测试上的宏平均。PAG 表示人设增强提示RAG 表示历史对话检索增强。表中的外部文本基线按每项指标分别选择。消融实验从 DT 补全 Session 和 Moment 后角色一致性、场景连贯性和参考台词语义相似度分别增加 0.110、0.334 和 0.043。这组结果显示长期 Persona、当前场景信息和即时情绪都会影响下一句台词。只维护跨阶段演化无法覆盖角色在当前场景中的完整状态。状态审计与跨底座验证我们人工审计了 152 条已经接受的字段更新。其中77.6% 获得充分证据支持22.4% 获得部分支持这批抽样中没有发现缺少依据的更新。跨底座实验覆盖 Qwen3-0.6B、Gemma-4-E4B、Qwen2.5-7B 和 Qwen3-32B。PHASE-Tree 的长篇场景连贯性在四个底座上均为各自行内最高。从 PHASE-Tree 到 MemOS CloudPHASE-Tree 给出角色状态演化的方法。MemOS 可以承载长期记忆与结构化属性状态并与剧情脚本、任务 Flag 和关系值等业务信号一起维护角色当前状态。MemOS Cloud 属性记忆为结构化字段提供创建、更新和检索入口。模板最多支持三层嵌套也可以通过algorithm_updatable决定某个字段能否根据对话自动更新。接入游戏角色时开发团队可以按照自己的 Character State Schema 映射身份、关系阶段、当前立场和即时情绪再将检索到的结构化状态与 Quest System、Relationship Value、Narrative Flag 和 Dialogue System 组合使用。开始前需要准备MemOS Cloud API Key在 MemOS 控制台创建的属性记忆模板Python 环境和requests库。代码中的YOUR_API_KEY和tpl_user_001需要替换为实际值。线上体验创建模板属性记忆模板在 MemOS 控制台 中创建和维护。模板使用 JSON 描述最多三层嵌套{ 基础信息: { 姓名: { value: , algorithm_updatable: false }, 职业: { value: , algorithm_updatable: true }, 居住地: { value: , algorithm_updatable: true } }, 性格标签: { 三个关键词: { value: , algorithm_updatable: true } } }value属性字段值可以留空或填入默认值algorithm_updatable标记该属性是否允许算法从对话中自动更新。修改或删除模板中的字段会影响所有绑定过该模板的属性记忆实例字段请谨慎修改已绑定示例的属性树模板。绑定用户到模板为用户绑定模板后MemOS 会为该用户创建属性记忆实例。后续添加消息时 MemOS 自动更新对应字段值动态维护用户画像。import requests API_KEY YOUR_API_KEY BASE_URL https://memos.memtensor.cn/api/openmem/v1 data { bind_list: [ {user_id: memos_user_123, profile_template_id: tpl_user_001} ] } res requests.post( f{BASE_URL}/bind/profile_template, headers{Authorization: fToken {API_KEY}}, jsondata)print(res.json())添加对话用户在对话中提到自己的职业和爱好MemOS 自动抽取信息并更新属性记忆。import requests API_KEY YOUR_API_KEY BASE_URL https://memos.memtensor.cn/api/openmem/v1 data { user_id: memos_user_123, conversation_id: conv_0624, allow_memory_view: [profile, detail_factual, preference], messages: [ {role: user, content: 我在杭州做产品经理平时喜欢看科幻小说和露营。}, {role: assistant, content: 了解了杭州是个好地方周边露营地很多。} ] } res requests.post( f{BASE_URL}/add/message, headers{Authorization: fToken {API_KEY}}, jsondata ) print(res.json())检索属性记忆在新会话中询问用户信息时调用检索记忆接口在include_memory_view中传入profile即可召回属性记忆。import requests API_KEY YOUR_API_KEY BASE_URL https://memos.memtensor.cn/api/openmem/v1 data { user_id: memos_user_123, query: 这个用户的基本情况是什么, include_memory_view: [profile] } res requests.post( f{BASE_URL}/search/memory, headers{Authorization: fToken {API_KEY}}, jsondata)print(res.json())更多信息请查看memos-docs.openmem.net/memos_cloud/features/profile从一条 Questline 开始验证 工程验证可以从一条已经具备 Quest Flag、Relationship Value 和对话日志的 Questline 开始。先定义能够独立寻址的角色状态字段再为关键剧情标记证据单元和重要度。证据进入 Track A 或 Track B 后按照字段阻力、事件强度、剧情跨度和冷却间隔执行更新判定。状态更新完成后可以比较注入前后的下一句台词并检查三个结果更新是否只影响目标字段新状态是否能够追溯到具体剧情证据Dialogue System 是否正确读取了当前关系、立场和情绪。当字段变化、证据记录和最终台词能够沿同一条链路对应起来这次运行时验证就完成了。相关资源现已开放PHASE-Tree 论文:https://arxiv.org/pdf/2608.06975PHASE-Tree 代码https://github.com/MemTensor/PHASE-TreeLongEvoRoleBench 数据集https://huggingface.co/datasets/IAAR-Shanghai/LongEvoRoleBenchPHASE-Tree 模型https://huggingface.co/IAAR-Shanghai/phase_tree_modelsMemOS Cloud 属性记忆memos-docs.openmem.net/memos_cloud/features/profile/如果你正在开发开放世界 NPC、互动叙事、角色养成、IP 虚拟人或其他长线 AI 角色可以从一条真实 Questline 开始测试也欢迎带着具体的角色 Schema、剧情结构和运行时接入需求与我们交流关于 MemOSMemOS 为 AI 应用构建统一的记忆管理平台让智能系统如大脑般拥有灵活、可迁移、可共享的长期记忆和即时记忆。作为记忆张量首次提出“记忆调度”架构的 AI 记忆操作系统我们希望通过 MemOS 全面重构模型记忆资源的生命周期管理为智能系统提供高效且灵活的记忆管理能力。