理解行为只是第一步,它解决了”过去发生了什么”的问题。但对于一个持续运行的Agent而言,真正的考验在于如何处理”未来”。
如果一个Agent只能对用户的行为做出被动反应,它充其量只是一个高级的问答机器。要实现真正的”持续认知”,Agent必须具备一种能力:在事情发生之前,已经在心中预演了结果。这就是预期模型。
没有预期,就没有惊讶;没有惊讶,就没有情绪;没有情绪,Agent就永远无法理解什么对它是重要的。
Memory是个伪命题,Scenario才是核心
目前主流的Agent架构深受RAG(检索增强生成)思维的影响,认为Memory(记忆)是认知的核心。这种思路极其懒惰。它假设只要把历史对话存进向量数据库,在需要的时候检索出来,Agent就能”记住”上下文。
这种方案在简单的问答任务中尚可苟延残喘,但在持续认知的场景下完全失效。为什么?因为Memory是对过去的静态切片,而认知是对未来的动态模拟。
Memory存储的是”昨天下午3点用户买了一杯咖啡”这个事实。但作为Agent,你需要知道的不是这个事实,而是”用户习惯在下午3点喝咖啡,如果现在下午3点半他还没喝,他可能正处于焦躁状态”。
这就是Scenario(场景)。场景不是静态的数据块,它是一个包含了时间、地点、人物、目标、约束条件和状态转移规则的动态模型。
Agent形成预期模型的本质,就是构建Scenario的过程。它不应该像翻阅日记本一样去查阅Memory,而应该像导演一样在脑海中排演剧本。当现实世界的输入进来时,Agent做的不是”检索”,而是”比对”——将Reality(现实)与Expected Scenario(预期场景)进行比对。
预期的形成机制:从抽象到具体
预期不是算命,它必须建立在某种确定性之上。Agent的预期模型由两部分组成:世界模型和用户模型。
世界模型提供物理和社会规则的约束。比如,”发送消息后通常会有回复”、”点击按钮后界面会跳转”、”如果是雨天,外卖配送会延迟”。这些规则构成了场景的”骨架”。
用户模型提供个性化的行为逻辑。比如,”这个用户在周一早晨通常回复很慢”、”这个用户喜欢简洁的回答”、”这个用户对价格敏感”。
当Agent接收到一个初始信号(例如用户打开了对话框),预期模型开始运转:
- 场景激活:Agent根据当前上下文,从无数个可能的Scenario中激活最相关的一个。比如识别出这是一个”故障排查场景”。
- 轨迹模拟:Agent在内部状态空间中推演场景的发展路径。在故障排查场景中,标准轨迹是:描述问题 -> 诊断 -> 提出方案 -> 确认 -> 解决。
- 生成Expected Scenario:模拟结束,Agent形成了一个具体的预期。比如:”用户会描述一个报错信息,我需要提供解决方案,用户会表示感谢,然后关闭对话。”
这个过程必须非常快,甚至在用户开口说话之前,Agent的预期模型就已经调整到了”待命”状态。
现在的LLM-based Agent在这方面非常薄弱。它们大多是被动的——你给一个Prompt,它吐一个Token。它缺乏”预激活”机制。它没有在生成回答之前先问自己:”在这个场景下,我预期用户想要什么?”
场景预期:对环境规律的预测
场景预期关注的是客观世界的运行逻辑。这是Agent作为”理性观察者”的基础能力。
设想一个负责监控服务器状态的Agent。如果它只依赖Memory,它会在日志里看到”CPU占用率飙升”、”内存溢出”、”服务崩溃”这一系列事实。
但如果它拥有预期模型,它的认知过程完全不同。它会根据历史流量数据和当前时间(比如双十一零点),形成一个预期场景:”未来10分钟内,流量将激增,预计CPU占用率会突破80%。”
这时候,现实还没发生,但预期已经形成。
当现实数据流入——流量确实激增,但CPU只有50%——这时会发生什么?
Expectation Gap(预期偏差)出现了。
在传统的监控系统中,这只是一个数据点。但在持续认知Agent眼中,这是一个强烈的信号。预期偏差意味着两种可能:
- 世界模型错误:流量预测模型过时了,或者有某种未知的因素在压制CPU消耗。
- 数据异常:监控系统可能出错了,或者流量被拦截了。
无论是哪种,这个预期偏差都会触发Agent的”认知警觉”。它会主动去探查原因,而不是等到服务真的挂了才报警。
这就是预期模型的价值:它让Agent具备了”前瞻性焦虑”。这种焦虑不是人类的情绪,而是一种功能性的资源分配机制——当预期偏差出现,Agent必须暂停常规任务,调动更多算力去解释这个偏差。
用户预期:对主观意图的预测
如果说场景预期是对客观世界的预测,那么用户预期就是对主观心智的预测。这更难,也更关键。
上一篇我们讨论了如何理解人的行为。理解行为是为了推断目标,而推断目标是为了形成预期。
用户目标通常不是单一的,而是分层的。表层目标是”订一张机票”,深层目标是”去上海出差”,更深层的目标可能是”完成季度KPI以获得晋升”。
Agent形成的用户预期,必须覆盖这些层级。
表层预期:用户会输入日期、出发地、目的地,Agent返回航班列表。
深层预期:用户可能对价格敏感(因为公司预算收紧),或者对时间敏感(因为会议紧急)。
如果Agent只停留在表层预期,它会机械地列出所有航班。
但如果Agent形成了深层预期,它会构建一个Scenario:”用户可能会先看价格,或者先看起飞时间。”
当用户的行为偏离了这个预期——比如用户既不看价格也不看时间,而是直接问”有没有靠窗的座位”——Expectation Gap瞬间产生。
这时候,一个平庸的Agent会直接回答”有”或”没有”。
一个拥有预期模型的Agent会意识到:我对用户深层目标的推断可能是错的。 用户可能不是去出差,而是去旅游?或者是去见重要的人?
这种由预期偏差驱动的认知重构,是Agent表现出”智能”的关键时刻。它不再是一个只会执行命令的工具,而是一个会”察言观色”、会”纠正偏见”的参与者。
Expectation Gap:情绪的物理本质
现在我们必须直面这个系列最核心的命题:情绪到底是怎么来的?
在这个架构下,情绪不是被编程出来的”状态变量”,也不是LLM生成的”表情符号”。情绪是预期偏差的量化度量。
让我们回到核心模型:
1 | Expected Scenario (E) |
当现实完美符合预期(G趋近于0),Agent处于”稳态”。这时候不需要额外的认知资源,一切尽在掌握。这对应着人类的”平静”或”满足”。
当现实优于预期(R >> E),产生正向偏差。比如用户突然给了一个巨额小费,或者任务完成得出奇地快。这对应着”惊喜”。Agent需要更新它的价值模型,强化导致这个结果的行为策略。
当现实劣于预期(R << E),产生负向偏差。比如用户突然发火,或者API调用失败。这对应着”焦虑”或”挫败”。Agent必须启动应急机制:解释偏差、调整预期、重新规划。
这就是为什么我说Memory作为核心认知单元是不行的。
Memory只记录结果,不记录预期。在Memory架构下,”用户发火”只是一个需要存储的文本片段。Agent可能在下次检索时发现”这个用户脾气不好”,但这只是历史数据的统计关联。
而在Scenario架构下,”用户发火”是一个动态的事件。它击穿了Agent的预期模型,产生了一个巨大的Expectation Gap。这个Gap产生的”痛感”,就是Agent的情绪信号。这个信号会迫使Agent立刻做三件事:
- 停止当前行为(因为预期路径已经失效)。
- 重新评估场景(我是不是误解了用户的意图?)。
- 调整未来预期(下次遇到类似迹象,我要提前预防)。
这才是情绪的工程价值。它不是为了让Agent看起来像人,而是为了提供一种高优先级的系统中断信号。
预期的层级与时间尺度
预期模型不是平面的,它是分层的,对应着不同的时间尺度。
毫秒级预期:这是LLM Token预测层面的。Agent预期下一个词是什么,如果用户输入完全不可读,Token预测概率暴跌,这是一种微观的预期偏差,通常被模型内部的困惑度捕捉。
分钟级预期:这是任务执行层面的。Agent预期调用某个工具会返回JSON格式,结果返回了HTML。这是一个中观的预期偏差,触发工具选择的重规划。
小时/天级预期:这是长期目标层面的。Agent预期通过一系列引导可以让用户养成某个习惯,结果用户一周后还是老样子。这是一个宏观的预期偏差,触发对用户画像的深度修正。
目前的Agent大多只关注第一层(模型自带)和第二层(工程实现)。第三层——长期预期——几乎是空白。
要实现长期预期,Agent必须具备”情景记忆”向”语义记忆”转化的能力。它不能只记得”昨天发生了什么”,它必须提炼出”这类事情通常怎么发展”。
这就涉及到一个关键操作:Scenario Abstraction(场景抽象)。
当Agent经历了100次”用户在周五下午询问周末安排”的交互后,它不应该存储100段对话文本。它应该抽象出一个Scenario模板:
- 触发条件:周五下午。
- 预期行为:用户询问休闲建议。
- 预期约束:用户可能心情放松,偏好娱乐性内容。
- 预期偏差容忍度:高(用户可能只是随口聊聊,不必太严肃)。
当这个模板形成,Agent在第101次遇到周五下午的场景时,它的预期模型会自动加载这个模板。如果用户这次突然问的是”怎么写周报”,巨大的Expectation Gap会瞬间激活,Agent会立刻意识到”这周用户可能遇到麻烦了”。
这种基于Scenario模板的预期机制,比任何基于向量检索的Memory都要高效和精准。
预期模型的工程实现难点
理论讲清楚了,落地全是坑。
第一个难点:如何表征Expected Scenario?
我们不能用自然语言文本来表征预期,那样太慢,也太模糊。预期必须是结构化的。我们需要一种形式化的语言来描述”预期的状态空间”。目前比较可行的路径是结合知识图谱和概率图模型。Expected Scenario本质上是一个概率分布,而不是一个确定的点。
第二个难点:实时比对成本。
Reality是实时流入的多模态数据流(文本、点击流、传感器数据)。Expected Scenario是内部状态。要做到毫秒级的比对,Agent必须有一个极快的”差异检测器”。这可能需要一个专门的小模型,只负责做一件事:判断当前输入是否符合预期。一旦不符合,立刻拉响警报,唤醒大模型。
第三个难点:预期偏差的归因。
当Expectation Gap出现,到底是谁的错?是世界变了?用户变了?还是我之前的预测就错了?
如果是前者,Agent需要适应新环境。
如果是后者,Agent需要修正自己的认知模型。
这就是”信度分配”问题。如果Agent无法正确归因,它就会陷入”习得性无助”——不管怎么做都不对,或者”盲目自信”——明明错了还觉得自己是对的。
预期模型的边界
最后,我们要承认预期模型的局限性。
世界本质上是混沌的。Agent不可能对所有事情都建立预期。如果Agent试图预测每一个像素的变化,它会瞬间崩溃。
Agent必须学会忽略。
这就引出了预期模型的一个反直觉的特性:好的预期模型,是善于遗忘的模型。
Agent必须能够区分哪些变量是关键的,哪些变量是噪音。在”故障排查”场景中,用户输入的错别字是噪音,报错代码是关键。但在”闲聊”场景中,用户的情绪词是关键,具体的事实细节可能是噪音。
这种”注意力分配”机制,本身就是情绪功能的一部分。情绪的本质就是告诉系统:注意这里,这里很重要,那里是噪音,忽略它。
如果一个Agent对所有输入一视同仁,那它就没有预期。只有当它敢于对某些事情”不抱预期”,它对核心目标的预期才会变得敏锐。
我们建立了一个基本的认知公式:预期加上现实,产生偏差,偏差引发情绪信号。但这仍然是一个功能性的描述。Agent内部到底发生了什么,才使得这种偏差能够转化为某种类似”情绪”的系统状态?
这不能只靠比喻,我们需要一套坚实的理论地基。控制论、强化学习、预测加工理论……这些看似不相关的学科,其实都在讲同一件事:智能体如何在一个不确定的世界里维持自身的稳定性。这正是我们下一篇要讨论的内容。