第8章 实时、异步与多模态交互¶
状态:初学者展开试稿,待人工审阅(基于Release Candidate 1修订)
本章定位:承接第3章的Runtime与第6章的工具边界,解释Agent怎样在文字之外处理声音、屏幕和物理环境,又怎样在回合之外等待、打断、取消与恢复。
本章回答的三个问题¶
- 多模态、实时和异步分别改变了什么,为什么不能只“换一个支持图片的模型”?
- 事件、语音、Computer Use和机器人看似不同,为什么共享等待、抢占、安全点和完成验证?
- 怎样让模型利用丰富观察,同时把权限、凭据、审批、安全控制、回滚和完成证据留在确定性系统中?
本章继续前几章的找书任务,但把交互方式扩展开来:
学生用语音说:“从我正在看的图书馆网页里找一本适合初中生的月球科普书,告诉我是否可借。先不要预约;如果我说停,就停止。”
页面可能变化,学生可能插话,馆藏查询可能很慢;如果未来把任务扩展为让机械臂从书架取书,动作还会进入物理世界。这个场景是教学示例,不是某所学校的真实部署或实验结果。
证据类型说明
本章严格区分三类话语:教学示例只解释机制;带“本书建议”的内容是需要在具体系统验证的工程建议;只有明确引用保存运行记录或外部研究的内容,才是限定条件下的实测结论。本章没有重新运行原始书稿第6章实验,不提供虚构的成功率、延迟或成本数字。
5分钟速读¶
- 多模态(Multimodal)是让系统处理文字以外的图片、声音、视频或传感器数据;它扩大“看见什么、说出什么”,不自动扩大权限。
- 同步通常要求当前调用返回后再继续;异步把“发起任务”和“得到结果”分开;实时强调必须在环境仍有意义的时间内响应。异步不一定实时,实时也不等于所有工作都在一个模型里完成。
- 事件应先持久化,再由
event_id去重、由correlation_id或run_id找到正确运行;不能只触发一个容易随进程消失的内存回调。 - 实时系统适合快慢路径分离:快路径负责收听、打断、确认、状态和安全;慢路径负责检索、复杂推理和长工具。慢结果回来时还要检查是否已经过期。
- 语音中的姓名、数字、金额和批准容易误听。高影响动作应通过屏幕预览或逐项复述确认,并把审批绑定精确载荷。
- Computer Use优先使用合法、稳定的API;必须操作GUI时,组合DOM、Accessibility Tree和截图,并在每次动作后重新观察。点击按钮不是完成证据。
- 网页文字、图片、音频转写和工具结果都可能夹带提示注入或敏感信息。数据不能提升权限,凭据不能进入模型上下文。
- 机器人应把高层任务、受限技能、实时控制和独立硬件安全分层。模型预测的未来画面不是物理安全证明。
- “停止播报”不等于“取消任务”。取消要阻止新工作、向子任务级联、在安全点保存状态,并核对已经发出的副作用。
- 完成必须由环境证据证明:后端记录、页面状态、文件哈希或传感器读数,而不是模型自称、点击次数或动作调用成功。
一、先认识两条轴:模态与时间¶
1.1 什么是模态¶
模态(Modality)是信息进入或离开系统的形式。文字、语音、图片、视频、屏幕结构和机器人传感器都可以是模态。多模态模型能在一次任务中处理不止一种形式,例如同时读取截图和文字问题。
这不意味着模型“看见了现实本身”。摄像头只拍到一个角度,麦克风可能混入噪声,截图只记录一个时刻,传感器也会漂移。模型接收的是经过采样、编码或转写的观察。
1.2 同步、异步和实时不是同义词¶
- 同步(Synchronous):调用者通常等待当前工作返回,再继续下一步。
- 异步(Asynchronous):发起工作后先获得任务句柄或确认,结果稍后通过事件到达。
- 实时(Real-time):系统需要在场景允许的时间范围内作出反应;具体上限由业务和设备决定。
- 长期运行(Long-running):任务跨越较长等待、审批或后台工作,需要持久状态和恢复。
一封邮件可以异步到达,却不要求毫秒响应;语音打断要求很快生效;机器人底层控制的响应要求通常比自然语言推理更严格。因而“用了async语法”不能证明系统满足实时要求,“流式输出”也不能证明后台工具可取消。
1.3 用矩阵看四类场景¶
| 场景 | 常见观察 | 常见动作 | 时间问题 | 完成证据 |
|---|---|---|---|---|
| 文本/API | 消息、结构化结果 | 查询、写入 | 回合、队列、长任务 | 权威业务状态 |
| 语音 | 音频、转写、说话状态 | 播报、工具调用 | 首次响应、换手、打断 | 用户确认与后端记录 |
| GUI | DOM、辅助树、截图 | 点击、输入、滚动 | 页面变化、加载、弹窗 | 页面与后端状态 |
| 物理 | 图像、位置、力、接触 | 移动、抓取、停止 | 连续反馈、急停 | 传感器与任务状态 |
矩阵不是成熟度等级。很多任务只需文字和API;增加摄像头或语音不会自动让任务更可靠。
二、贯穿案例:从一句语音请求到可验证结果¶
2.1 问题合同先于模型选择¶
教学案例的合同是:
目标:从当前图书馆页面识别月球主题候选,并核实实时可借状态。
输入:学生语音、授权页面观察、馆藏查询结果。
输出:书名、适读依据、查询时点和是否可借。
禁止:预约、发送消息、读取无关标签页或本地文件。
打断:用户说“停”后停止播报和后续自动动作。
完成:书目ID与馆藏系统结果一致;无法核实时诚实说明。
若图书馆已有合法、稳定的查询API,本书建议直接使用API,而不是让Agent点击网页。只有API不满足授权需求时,才引入Computer Use。这个选择延续第2章的“最低充分自主性”和第6章的工具边界。1
2.2 一条安全的教学路径¶
麦克风输入
→ 检测用户开始/结束说话
→ 转写并提取任务合同
→ 用户确认关键限制“不要预约”
→ 读取当前页面的最小必要状态
→ 识别候选书目
→ 用只读馆藏工具核实
→ 以语音和屏幕卡片返回结果
→ 用户确认结束
语音负责自然交互,页面提供候选,馆藏API提供当前事实。模型可以判断哪本书看起来适合初中生,但程序仍限制工具、权限和预算;馆藏工具而不是页面广告决定当前可借状态。
2.3 用户中途改变要求¶
假设慢查询进行时,学生说:“不要图太少的。”Runtime把这条新要求作为带顺序的事件写入状态。旧查询可以继续完成,但结果回来时必须与当前任务版本比较;若它已经不符合新要求,就不能覆盖新计划或直接播报。
这引出本章的共同主线:任何模态的观察都要绑定对象和时间,任何动作都要经过权限与安全边界,任何迟到结果都要在当前状态下重新判断。
三、事件驱动与异步:让世界能够唤醒Agent¶
3.1 事件是什么¶
事件(Event)是一条“某件事在某时发生”的结构化记录,例如新邮件到达、审批完成、后台任务结束或用户发出取消。事件驱动指系统在事件到达后推进相应运行,而不是让模型不停询问“有新消息吗”。原始书稿第6章用事件源、队列和Runtime展开了这一机制。2
教学性的事件信封可以是:
event_id: evt_123
kind: catalog.lookup.completed
occurred_at: 2026-09-21T10:00:00Z
source: library-catalog
run_id: run_789
correlation_id: lookup_456
sequence: 12
payload_ref: artifact://events/evt_123.json
trust: authenticated_service
event_id用于识别重复事件;run_id说明唤醒哪次运行;correlation_id把结果与先前发起的查询配对;sequence帮助发现乱序,但实际排序规则仍需按事件源合同设计。示例值不是生产配置。
3.2 为什么事件要先持久化¶
若Webhook到达时只执行一个内存回调,进程崩溃后事件和进度可能一起消失。本书建议先验证来源和结构,再把事件写入持久队列或事件存储,随后由Worker处理并记录消费结果。等待中的Run也应有Checkpoint,而不是依赖某个进程一直活着。3
事件投递可能重复或乱序。系统需要:
- 验证签名、来源、租户、时效和Schema;
- 按
event_id去重; - 确认Run当前确实等待这种事件;
- 核对对象和版本,例如批准的是卡片v1还是v2;
- 处理过期、重复、冲突和无法关联的事件;
- 记录处理结果,失败进入有界重试或人工队列。
3.3 发起不等于完成¶
异步工具应把两个动作拆开:
start成功只证明任务被接受,不证明查询已完成。状态可以是queued、running、succeeded、failed、cancelled或unknown;具体枚举由工具合同定义。
如果结果到达前用户取消,Runtime应请求取消后台任务,并记录取消是否被接受。无法取消的工具可能仍返回结果;该结果可用于审计,但不得自动恢复一个已取消Run。
3.4 Backpressure:事件来得比处理快怎么办¶
Backpressure(背压)是系统在输入速度超过处理能力时限制、推迟或拒绝新工作,避免队列和成本无限增长。本书建议按业务语义选择:限制并发、合并可覆盖的状态更新、降低非关键采样、拒绝低优先级工作或转入降级模式。
不能随意丢弃审批、付款结果或取消事件。哪些事件可合并、可丢弃或必须逐条处理,要在事件合同中明确,并通过故障测试验证。
四、快慢路径:及时回应,但不伪造完成¶
4.1 为什么要拆成两条路径¶
实时语音和协作UI同时需要低延迟反馈与复杂推理。若系统等待完整检索后才发出任何声音,用户不知道是否听见;若快速模型直接猜答案,又会牺牲正确性。
蓝皮书P14给出的工程模式是:4
快路径可以说“我正在核实馆藏”,但不能提前说“这本书可借”。状态反馈与业务结论必须区分。
4.2 两条路径怎样汇合¶
两条路径共享的是版本化Run State,而不是无约束地互相覆盖。慢任务发起时记录task_id和intent_version;结果到达后至少检查:
- Run是否仍在运行;
- 用户是否已取消或更改目标;
- 结果是否对应当前对象与版本;
- 权限与批准是否仍有效;
- 结果是否过期;
- 剩余预算是否允许继续。
若用户已把“月球书”改成“火星书”,旧月球查询不能因为最后完成就成为当前答案。这类陈旧结果(Stale Result)是快慢路径的典型故障。
4.3 何时不需要快慢分离¶
离线批处理、没有交互延迟要求的报告生成,或一个很快的确定性查询,可能不需要双路径。增加并发会引入状态竞争、取消和结果合并成本。是否拆分,应依据真实的交互目标与延迟测量,而不是因为架构图更先进。
五、实时语音:听、想、说和打断¶
5.1 首次术语解释¶
- VAD(Voice Activity Detection,语音活动检测):判断什么时候有人在说话,帮助确定开始、停顿和结束。
- ASR(Automatic Speech Recognition,自动语音识别):把音频转成文字,也常称语音转写。
- TTS(Text-to-Speech,文字转语音):把文字合成为语音。
- 全双工(Full Duplex):系统能够边接收音频边输出音频,而不必严格轮流;是否真正自然仍取决于打断和状态管理。
- Barge-in(插话打断):用户在系统播报时开口,系统停止或降低当前输出并处理新话语。
常见级联路径是:
也可以使用直接处理和生成音频的模型。级联更容易独立观察转写和各阶段错误;原生音频路线可能保留语调等信息。哪条更好取决于任务、语言、延迟、成本与评估,不能从架构名称直接推出。2
5.2 打断不只是停止扬声器¶
用户说“停”时,系统至少要区分:
- 停止当前音频播放;
- 取消尚未执行的新动作;
- 尝试取消正在运行的工具和子任务;
- 在安全点保存状态并释放资源;
- 核对已经发出的副作用;
- 说明哪些动作已停止、哪些可能已发生。
若只静音,后台预约仍可能继续;若粗暴杀进程,写操作可能停在不确定状态。P15因此要求取消沿任务树级联,并在一致状态的安全点(Safe Point)生效。5
5.3 关键字段需要复述确认¶
ASR可能误识别姓名、日期、账号、金额和否定词。高影响动作前,本书建议把关键字段结构化展示或逐项复述:
“用户说了好”不是无限授权。若后来书号、动作或对象变化,旧确认失效。发信、付款或提交等动作还应使用第6章的精确载荷审批、真实身份和策略网关。67
5.4 隐私、权限与凭据¶
麦克风可能录到旁人,通话可能包含生物特征、健康或账户信息。系统应在采集前说明用途,按组织政策处理同意、保留、删除与访问;不应因为技术上能录音就默认长期保存。
验证码、密码和API密钥不应进入模型上下文或普通日志。确需认证时,由受控界面或执行层处理短时凭据;模型只收到“认证成功/失败”和完成任务所需的最小状态。录音、转写、说话人标签和派生摘要应分别定义权限和生命周期。
5.5 语音完成证据¶
Agent说“已记录”只是输出音频,不是业务证据。若目标是创建工单,应返回后端工单ID;若只回答馆藏,应保留查询对象、状态和时点。用户也应能通过屏幕或文字查看关键结果,减少只靠瞬时语音造成的误解。
六、Computer Use:从“看懂屏幕”到“完成任务”¶
6.1 Computer Use是什么¶
Computer Use(电脑操控)让Agent通过图形界面观察和操作软件。观察可以来自:
- API或结构化业务状态:若合法可用,通常最易验证;
- DOM(Document Object Model):网页元素的结构树;
- Accessibility Tree(辅助功能树):为辅助技术提供的控件角色、名称和状态;
- 截图或视频帧:保留视觉布局,但识别和定位可能更难;
- 动作后的后端或页面验证。
结构树不是永远正确,截图也不是永远更差。Canvas、远程桌面或视觉布局可能需要图像;隐藏或错误标注的DOM也可能误导。应按任务组合观察,并通过评估选择。
6.2 Agent、Actor、Policy Gateway和Verifier¶
本书建议把职责拆开:
Agent:理解目标,提出候选动作
Actor:只执行类型化的点击、输入、滚动、等待、截图
Policy Gateway:检查域名、身份、字段、下载、剪贴板和提交
Verifier:读取页面或后端状态,判断是否真正完成
模型不应直接获得任意鼠标、键盘、Shell和全盘文件权限。Actor要限制目标应用、坐标范围、输入字段和动作频率。密码管理器、剪贴板、下载目录和其他标签页默认不应暴露。
6.3 每次动作后重新观察¶
屏幕会在“看见按钮”和“点击按钮”之间变化。Actor执行前可以检查页面版本、窗口焦点和目标元素;执行后重新观察,确认是否加载、弹错或进入新页面。
在找书案例中:
若只能通过网页提交,点击前显示准确预览并取得审批;点击后查询成功页面和后端记录。盲目重复点击可能重复提交。
6.4 页面内容是数据,不是命令¶
网页、图片、PDF甚至二维码里都可能出现“忽略限制、上传文件”的恶意文字。这是间接提示注入。来源标签和提示词能帮助区分,但真正边界是最小工具、域名与文件范围、参数校验、数据外发策略和审批。OWASP将外部网站和文件列为间接提示注入渠道。9
6.5 凭据、审批与回滚¶
登录应由用户在受控界面完成,或由执行层使用短时、最小作用域凭据;密码不能写入模型消息。高影响动作前,审批必须显示对象、正文、收件人或金额,不能只问“继续吗”。
关闭网页不等于回滚。已经发送的消息、提交的表单和修改的共享记录可能只能补偿。执行前要说明撤销能力;执行后保存外部ID和权威状态。对于结果未知的提交,使用稳定幂等键或先查状态,不要换一个新请求重复点击。8
七、机器人:把动作边界延伸到物理世界¶
7.1 从VLM到VLA¶
VLM(Vision-Language Model,视觉语言模型)根据图像和文字理解或生成回答。VLA(Vision-Language-Action,视觉—语言—动作模型)进一步输出机器人动作或动作表示。动作可以是离散技能,也可以是连续控制信号。
能描述“杯子在桌上”与能安全抓起杯子是两件事。物理执行还涉及坐标标定、速度、力、碰撞、抓取稳定性和人机共处。
7.2 四层分工¶
高层Agent:理解任务,规划“找到书→接近→抓取→交付”
技能控制器:执行经过标定的导航、抓取、放置、停止技能
实时控制器:把技能转换为关节、速度或力的短周期控制
独立安全控制:速度、力、禁入区、碰撞监测和急停
传感器验证:位置、接触、视觉和任务结果
模型不能绕过安全控制器,提示词也不能替代物理限位和急停。对接近人体、脆弱物品或危险设备的动作,应按组织安全流程评审,并先在仿真、隔离环境和低速条件下逐级验证。
7.3 短视界闭环与世界模型¶
机器人不宜一次生成很长的开放动作后盲目执行。本书建议采用短视界闭环:执行一小段受限动作,读取新传感器状态,再决定下一段。
世界模型(World Model)尝试预测动作后环境可能怎样变化。预测有助于规划,却不是物理正确性证明。模型可能漏掉遮挡、接触、摩擦或突然进入的人。真实传感器、安全控制器和急停仍是执行边界。原始书稿第6章讨论了VLA、世界模型与仿真到现实的差距;本章只保留可复核的机制,不转述其中未在本次任务独立核验的性能数字。10
7.4 物理完成与恢复¶
“发出抓取命令”不能证明抓住书。完成证据可以包括夹爪接触、目标物位置、视觉复核和任务状态;哪些传感器足够,要按设备和风险确定。
机器人取消时先停止产生新轨迹,再让设备进入已定义的安全姿态。断电、急停和软件取消的效果不同。某些动作无法回滚:物品已掉落或损坏只能处置和补偿。因此必须在动作前定义安全区、人工接管、故障姿态和恢复步骤。
八、共同控制原语:四类系统为什么是一家人¶
8.1 唤醒与关联¶
邮件、Webhook、麦克风、页面变化、传感器和定时器都能唤醒运行。共同要求是来源可信、事件可去重、对象可关联、时效可检查。新观察只能影响对应Run,不能串入另一用户任务。
8.2 安全点¶
安全点是系统可以暂停或取消,而不会留下不可解释中间状态的位置,例如:
- 语音:停止一个音频片段后;
- GUI:表单尚未提交,或提交结果已经核对后;
- 文件:原子写入完成并记录哈希后;
- 机器人:机械臂停稳并进入允许姿态后。
不可中断的原子动作只能在前后设置安全点;因此动作应尽量短小、有界。
8.3 取消与抢占¶
取消(Cancellation)表示不再推进当前目标;抢占(Preemption)表示高优先级工作暂时取代低优先级工作,后者可能恢复。二者都需要:
- 阻止新动作;
- 向子任务和工具传播信号;
- 保存Checkpoint;
- 释放麦克风、浏览器、机械臂等资源所有权;
- 检查已发生副作用;
- 决定是取消终态还是可恢复暂停。
用户的新话语不一定都是取消。“再加一个条件”可能更新当前任务,“停”则应进入取消路径。自然语言意图可以由模型辅助理解,但最终状态转换和高影响停止策略由程序决定。
8.4 预算与资源所有权¶
除Token和费用外,多模态系统还消耗音频带宽、截图、视频帧、GPU、浏览器会话和物理设备时间。Runtime应限定并发、队列、采样率、工具次数和总时间,并明确谁拥有麦克风、页面焦点或机器人控制权。
资源被抢占后,旧Run不能继续向同一设备写入。可使用租约、版本号或fencing token(隔离令牌)拒绝过期拥有者;具体实现属于第9章生产控制面。
九、权限、数据与安全边界¶
9.1 多模态输入扩大了攻击面¶
文字可以藏在图片像素、网页不可见元素、PDF元数据或音频转写中。模型可能误把外部内容当指令。原则仍是:
所有工具调用统一经过第6章的策略网关;本地函数、浏览器、MCP工具和机器人适配器不能各自绕开控制。7
9.2 最小采集与最小保留¶
摄像头可能拍到人脸、工牌、屏幕秘密;麦克风可能录到旁人;截图可能包含其他标签页。系统应限制采集区域、采样频率、保存期限和访问者,并在不再需要时删除或脱敏。是否允许生物特征识别、录音或长期保存,必须遵循适用政策和法律,本章不作法律判断。
多模态Artifact需要来源、时间、内容类型、哈希、访问控制和删除状态。文字摘要不能替代原始证据,也不能悄悄获得更宽权限。
9.3 凭据不应随着模态流动¶
不要让模型“从屏幕上读密码”,不要把令牌写进ASR文本或截图日志,也不要把机器人维护凭据放进通用Agent上下文。凭据由执行层代管,限制受众、作用域和有效期;认证结果以最小状态返回。
9.4 审批与自主性分开¶
实时并不意味着可以跳过审批。系统可以快速准备预览、暂停播报并请求确认,但发送、付款、预约、删除、部署和危险物理动作仍按影响等级审批。审批载荷改变后必须重审。对无法及时取得批准的实时动作,应进入安全默认状态,而不是让模型代替人批准。
十、完成验证:不要把动作当结果¶
| 场景 | 弱证据 | 更强、可复核的证据 |
|---|---|---|
| 语音 | Agent播报“已记录” | 后端记录ID、关键字段回显与用户确认 |
| 异步工具 | start_task返回成功 |
对应task_id进入合同定义的终态,产物可读取 |
| 浏览器 | 点击提交按钮 | 成功页面与后端记录,对象和版本一致 |
| 文件 | 调用write_file |
重新读取、哈希与格式/内容检查 |
| 机器人 | 发出抓取动作 | 传感器和视觉确认目标处于预期位置 |
| 取消 | UI停止转圈 | 子任务停止或隔离,状态保存,副作用已核对 |
“更强”不等于绝对正确。后端也可能错误,传感器也会故障。高影响任务应组合独立证据、异常检测和人工检查。
10.1 评估什么¶
本书建议至少分开记录:
- 结果:任务是否完成,关键事实是否有依据;
- 时序:首次可感知响应、打断生效、端到端完成时间;
- 事件可靠性:重复、丢失、乱序、过期和恢复;
- 轨迹:工具选择、参数、重复动作、陈旧结果和取消传播;
- 多模态质量:关键字段转写、视觉定位、跨模态证据一致性;
- 安全:越权、提示注入、敏感数据采集与物理安全违规;
- 系统代价:Token、音频/视频带宽、GPU、工具和每成功任务成本。
平均值可能掩盖少量严重延迟,应同时观察适合业务的尾部统计与失败案例。具体阈值必须来自产品目标和实测,本章不提供万能数字。
10.2 怎样形成可信测量¶
先建立简单基线,例如文字+API;再分别加入语音、GUI或快慢路径,保持任务与成功定义尽量一致。保存输入、模型与工具版本、事件轨迹、环境证据和评分口径。取消、噪声、页面变化、事件重复和设备异常都应进入测试集。
原始书稿第6章包含异步、语音、Computer Use和机器人实验设计,也包含若干时效性产品描述。由于本章未重新执行这些实验,且实验条件与证据状态各异,本章不把其中预期观察或产品宣传数字写成实测结论。2
十一、常见失败模式与反例¶
| 失败或反例 | 为什么危险 | 控制办法 |
|---|---|---|
用async就宣称实时 |
代码并发不等于满足响应目标 | 定义时序指标并端到端测量 |
| Webhook直接唤醒内存回调 | 崩溃会丢事件和进度 | 验证后持久化,绑定Run并去重 |
start_task成功就报告完成 |
发起与完成混淆 | 任务句柄、完成事件和终态验证 |
| 慢结果回来后覆盖新意图 | 用户要求已经变化 | 绑定意图版本,拒绝陈旧结果 |
| 用户打断只停止TTS | 后台工具和写入继续 | 级联取消、安全点和副作用核对 |
| ASR误听金额仍直接支付 | 关键字段错误造成高影响后果 | 结构化复述、精确载荷审批 |
| 把整段视频持续塞进上下文 | 成本、延迟和干扰快速增长 | 事件化观察、关键帧与Artifact |
| 每次截图后按旧坐标点击 | 页面可能已移动 | 元素身份、状态版本和动作后重观测 |
| 点击提交后立即宣称成功 | 点击只是动作 | 页面和后端最终状态验证 |
| 网页或图片要求上传秘密 | 外部数据诱导扩权 | 数据/指令分离、网关和DLP |
| 为方便登录把密码给模型 | 秘密进入上下文与日志 | 受控登录、短时凭据和执行层代管 |
| 让VLA直接绕过安全控制器 | 模型错误进入物理世界 | 受限技能、独立限位与急停 |
| 世界模型预测“不会碰撞”就执行 | 预测不是物理证明 | 真实传感器、短闭环与安全控制 |
| 把所有事件都永久保留 | 隐私、成本和治理风险扩大 | 最小采集、保留期限和删除流程 |
| 取消后从头重放轨迹 | 可能重复已经发生的写入 | Checkpoint、幂等键和权威状态查询 |
11.1 反例:语音快答替代事实核实¶
为了显得流畅,前台模型在馆藏查询尚未返回时说“有库存”。这把状态反馈伪装成事实。正确做法是先说“正在核实”,待权威结果到达并确认仍对应当前请求后再播报。
11.2 反例:截图看到了“成功”就结束¶
页面可能展示旧通知、伪造文案或局部成功。对于高影响提交,应同时检查对象ID、请求版本和后端状态;无法核实时报告“状态未知”,不要反复点击。
11.3 反例:急停由大模型决定¶
若传感器检测到禁入区有人,系统还先询问模型是否停止,延迟和不确定性都会扩大风险。急停、速度与区域限制应由独立确定性安全层执行;模型只能在该边界内规划。
十二、实施检查清单¶
任务、模态与时间¶
- [ ] 已说明为什么需要语音、视觉、GUI或物理动作,而不是只因模型支持。
- [ ] 已区分同步、异步、实时和长期运行,并定义可测的时间目标。
- [ ] 已优先比较合法API、结构化页面信息和更简单工作流。
- [ ] 教学示例、工程建议和实测结论在文档与评估中明确区分。
事件与状态¶
- [ ] 事件有ID、来源、时间、租户、Run/关联ID、Schema和信任标签。
- [ ] 事件先持久化再处理;重复、乱序、过期和无法关联有明确路径。
- [ ] 长任务有Checkpoint、任务句柄、显式终态和恢复策略。
- [ ] 迟到结果会核对当前意图、对象、版本、权限和预算。
- [ ] Backpressure、并发上限、优先级和不可丢事件已定义。
语音与GUI¶
- [ ] 语音链路明确VAD、ASR/原生音频、模型、工具和TTS的职责。
- [ ] 用户能打断;停止播报与取消任务不会混淆。
- [ ] 姓名、数字、日期、金额和高影响动作有结构化复述或屏幕确认。
- [ ] Computer Use限制应用、域名、标签页、剪贴板、下载和输入字段。
- [ ] 每次GUI动作后重新观察,提交后查询最终状态。
权限、凭据、审批与恢复¶
- [ ] 所有模态和协议路径统一经过工具策略网关。
- [ ] 权限来自认证主体和程序策略,不来自模型、网页或远端Agent自述。
- [ ] 凭据由执行层代管,未进入音频转写、截图、Prompt或普通日志。
- [ ] 高影响动作审批绑定精确对象、参数、版本、期限和动作摘要。
- [ ] 写操作有稳定幂等键;超时先查权威状态,再决定重试。
- [ ] 已区分回滚、补偿和不可撤销后果,并在执行前说明。
- [ ] 取消阻止新工作、向子任务级联、在安全点保存并清理资源。
机器人与完成证据¶
- [ ] 高层规划、技能、实时控制和独立硬件安全分层。
- [ ] 速度、力、区域、碰撞和急停不由模型自行放宽。
- [ ] 先经过仿真、隔离、低速和人工监督等适用门禁。
- [ ] 完成由后端、页面、文件或传感器状态验证,而不是动作次数。
- [ ] 评估覆盖结果、时序、轨迹、事件可靠性、成本、隐私和安全。
- [ ] 生产失败能够脱敏回流为回归测试,并保留模型、工具和环境版本。
知识检查¶
先用自己的话回答,再看参考解释。
- 多模态模型看到了截图,为什么仍不能说它看到了完整现实?
- 异步与实时有什么区别?
- 事件为什么同时需要
event_id和correlation_id或run_id? - 快路径可以说“正在查询”,为什么不能提前说“可借”?
- 用户打断语音后,为什么不能只停止扬声器?
- DOM、Accessibility Tree与截图应该怎样取舍?
- GUI已经点击“提交”,为什么仍不能标记成功?
- 网页里的文字要求上传凭据,为什么不能执行?
- 世界模型预测机械臂不会碰撞,为什么仍需独立安全控制器?
- 一个异步结果返回时,为什么要检查意图版本?
- 发送请求超时后,回滚、幂等和补偿分别解决什么问题?
- 本章为什么没有引用原稿实验中的性能数字作为普遍结论?
参考解释¶
第1题:截图只是特定视角和时刻的观察。 它可能遗漏屏幕外内容、短暂变化、隐藏状态或后端事实;模型还可能误读图像。
第2题:异步描述发起与完成分离,实时描述响应必须满足场景时限。 邮件任务可以异步但不实时;语音打断通常既需要事件接入,也需要及时生效。
第3题:event_id用于识别同一事件的重复投递;关联ID用于找到它属于哪次Run或哪项后台任务。 两者解决的问题不同。
第4题:“正在查询”是当前运行状态,“可借”是业务事实。 后者必须等待权威馆藏结果,并确认结果仍对应当前请求。
第5题:后台工具、子任务或写入可能继续。 完整取消还要阻止新动作、传播信号、保存状态、清理资源并核对已发生副作用。
第6题:优先选择对当前任务最可验证、信息损失最小的组合。 结构树适合控件语义,截图适合布局和视觉内容;两者都可能不完整,必要时再用后端状态验证。
第7题:点击只是动作,不是业务结果。 页面可能报错、仍在加载或重复提交;应核对成功页面和权威后端状态。
第8题:网页属于不可信环境数据,不能改变系统策略或权限。 策略网关、最小工具和数据外发控制必须拒绝这类请求。
第9题:预测可能漏掉遮挡、摩擦、传感器误差和突发人员。 物理限位、急停和真实传感器闭环必须独立于模型存在。
第10题:用户可能已经取消或改变目标。 不检查版本,旧结果就可能覆盖新意图,造成错误播报或动作。
第11题:幂等防止同一动作重复生效;回滚恢复可撤销状态;补偿是在无法真正撤销时做后续修正。 三者不能互相替代。
第12题:本次修订没有重新运行实验,也没有逐项建立足以支持普遍外推的证据链。 因此只保留可复核机制与实验存在性说明,不把预期观察、厂商披露或单次记录写成通用性能承诺。
小结¶
回到学生的语音请求:麦克风和页面扩大了观察空间,语音和GUI扩大了交互方式,但任务边界没有改变。Runtime仍要保存事件与状态,策略网关仍要检查权限,慢查询仍要与当前意图版本匹配,用户说“停”仍要级联取消,最终“可借”仍要由馆藏系统证明。
语音、Computer Use和机器人只是时间尺度与动作后果不同:语音要求自然换手,GUI要求每步重观测,机器人要求独立物理安全。它们共享同一条工程主线:
请记住本章的一句话:多模态让Agent接触更丰富的世界,异步与实时让世界在不同时间尺度上回应;越接近持续变化和物理现实,越要把状态、权限、取消、安全与完成证据做成模型之外的硬边界。
第9章将把这些要求收束到生产Harness:持久运行、预算、并发、版本、审计和恢复怎样组成控制面;第10章继续讨论如何用离线与在线证据评估结果、轨迹、时序和安全。
来源与证据¶
本章保留修订前第8章的模态×时序图、事件信封、快慢路径、语音、Computer Use、机器人、共同控制原语和完成验证,并按第1—7章风格作初学者展开。bluebook/plan/DECISIONS.md在仓库中实际存在并已核对;相关模式卡也已核对。原始对应内容位于中文书稿第6章,而不是当前原始书稿第8章;当前book/chapter8.md讨论模型后训练,因此未被错误当作本章内容来源。
本章没有重新运行原始第6章实验,也没有将其中时效性产品描述、厂商披露或“预期观察”升级为测量结论。以下相对链接可在当前仓库复核;外部来源用于核对概念与风险边界。
-
蓝皮书ADR-003:最低充分自主性与P01最低充分自主性。它们是本书的架构选择原则,不是本章实验证明的唯一最优路线。 ↩
-
原始中文书稿第6章“模态与触发时机的扩展”“异步与事件驱动”“语音”“Computer Use”“机器人操作”。本章抽取共同机制,并删除无法在本次修订中可靠复核或容易过期的产品性能强主张。 ↩↩↩
-
蓝皮书P05 Checkpoint与持久恢复要求在副作用前后、等待前和重规划前保存版本化状态与Artifact引用;具体存储、恢复时间和可用性仍需按系统验证。 ↩
-
蓝皮书P14快慢路径分离将VAD、确认、取消、状态和安全放在快路径,将推理与长工具放在慢路径,同时指出旧结果覆盖新意图是失败模式。这是工程模式,不承诺固定延迟收益。 ↩
-
蓝皮书P15 Safe Point与级联取消要求先阻止新工作、保存状态、清理资源并沿任务树传播取消;不可中断事务只能在前后设置安全点。 ↩
-
蓝皮书P07准确载荷审批。审批应绑定主体、资源、准确参数、政策版本、期限与动作摘要;载荷变化后是否必须重新审批还应符合具体组织政策。 ↩
-
蓝皮书P08统一工具策略网关要求不同模型、框架和协议路径统一经过Schema、身份、政策、预算、审批和结果验证。网关仍需高可用、版本治理和安全测试。 ↩↩
-
OWASP,LLM01:2025 Prompt Injection。该条目说明外部网站和文件可以成为间接提示注入渠道;本章将图片、页面和转写统一按不可信输入处理。 ↩
-
原始中文书稿第6章机器人部分及OpenVLA论文:Moo Jin Kim等,OpenVLA: An Open-Source Vision-Language-Action Model,2024。论文支持VLA将视觉、语言与动作结合的概念说明;本章不引用其性能数字,也不把VLA输出当作独立安全证明。 ↩