适用读者:要做语音助手、Computer Use、机器人/具身 Agent,或要把"回合制"Agent 改成事件驱动的人。
前置:S21-J08(两个空间)、J11(工具分类)、J12(Coding Agent)。
覆盖旧文:A-4572(交互:观察与动作空间的扩展,第 6 章,40,259 字符)→ 34 小节 / 约 4 万字符。
扩展点:E-S21-041(内容 / 模态 / 时机三维)、E-S21-042(事件驱动三机制与兼容层)、E-S21-043(语音三范式与 Computer Use / VLA 的动作空间)。
上一篇:S21-J12 · Coding Agent 与通用 Agent:代码是元能力
下一篇:S21-J14 · Agent 的评估(待写)。
1. 一句话结论
回合制是模型与接口的交互约定,不是环境的性质。 邮件在你思考时到达,用户在你说到一半时插话,页面在两帧截图之间就变了。前五章扩展的是两个空间的内容,这一章扩展的是模态与时机。
出处:《AI Agent 深入理解》第 6 章(
A-4572)。
| 观察空间 | 动作空间 | |
|---|---|---|
| 内容(J08–J12) | 上下文、记忆、知识库 | 工具、代码 |
| 模态(本篇) | 语音、屏幕、物理传感器 | 说话、点击、关节运动 |
| 时机(本篇) | 世界主动推送、连续流 | 跨回合、可打断、可抢占 |
2. 四个时间尺度(E-S21-041)
| 尺度 | 场景 | 观察侧变化 | 动作侧变化 |
|---|---|---|---|
| 秒–天 | 异步与事件驱动 | 会被外部事件唤醒 | 动作跨回合:先发起,事件收尾 |
| 10 ms–1 s | 语音 | 边说边听,不等说完 | 边想边说,可被打断 |
| 亚秒–秒 | Computer Use | 屏幕持续变化 | 动作后必须重新确认现实 |
| 毫秒 | 机器人 | 传感器连续回流 | 动作分块:一次一小段,可被抢占 |
判据:先定时间尺度,再选架构。 用回合制去做毫秒级控制,必然不允许。
3. 异步:从"轮询"到"事件流"(E-S21-042)
同步 Agent 像只会排队的柜台;真实助理要能:异步执行长期任务、动态判断事件优先级(取消/入队/并行)、中断后自然恢复。
轮询:反复问"有没有新消息"(低效)
事件驱动:新消息到达 → 触发处理逻辑
统一建模:所有输入、输出、思考、外部交互 = 一条时间线上的事件流
先检查接口能力:有些接口要求"先补齐工具结果才能继续";有些已允许工具挂起、模型继续工作、生成中接受用户更新。"代码里用了 asyncio" ≠ "模型具备原生异步"。 截至 2026-09,原文记录 GPT-6 Astra 已提供原生异步工具调用与回合中途追加指令(版本事实,待核)。
3.1 事件驱动三机制(以 OpenClaw Gateway 为例)
| 机制 | 触发源 | 用途 |
|---|---|---|
| Hooks | 框架内部生命周期(会话创建/重置) | 像 GitHub Actions 的触发器 |
| Cron | cron 表达式(0 9 * * 5 = 每周五 9 点) |
周期任务 |
| Heartbeat | 每隔 N 分钟 | 唤醒检查("有没有要关注的事") |
关键区分:内置渠道(IM/Web)的消息是推送式;而Cron 与 Heartbeat 是时间驱动,Hooks 的事件源在框架内部而非外部。只有时间驱动 + 外部事件源,才让 Agent 在没有用户消息时"自己动起来"。
3.2 事件触发工具的双时刻(接 J11)
注册:Agent 主动调用 set_timer / connect_channel,声明"我关心什么事件"
触发:外部事件异步回调 → 唤醒 Agent
用户沟通工具同理:当沟通从"一问一答"扩展到"多渠道异步触达","说话"本身要成为显式工具调用(reply_to_user、send_card_to_user)。
3.3 虚拟身份与隔离执行环境
Agent 以谁的名义行动(邮件地址、账号、浏览器 profile)、在哪个沙箱里执行,决定了授权边界与可追责性。没有隔离,一次误操作就是真账号上的真损失。
兼容路由:不支持原生异步时,用事件队列 + 任务句柄 + 兼容层;但事件来源、工具生命周期、结果归属仍要应用层管理。
4. 语音:三条时序路线(E-S21-043)
| 范式 | 结构 | 优势 | 代价 |
|---|---|---|---|
| ① 级联 Cascading | VAD → ASR → LLM → TTS | 每级可独立优化,落地最成熟 | 延迟串行累积;转文本丢失语调/情绪 |
| ② 端到端 Omni | 同一模型听音频→生成回复→输出语音 | 延迟更低、保留副语言信息(语调、唱歌) | 训练成本高;仍假设轮流说话(靠 VAD 分发言权) |
| ③ 全双工 | 边说边听、边想边说、可打断 | 最接近真人 | 工程与训练最复杂 |
级联的三个硬伤:① 必须等一段静音才能确认说完;② 有声/无声二值信号表达不了犹豫、情绪、附和;③ 专名被分片识别(人名、邮箱、品牌)。
流式感知(在保留模块化前提下的优化):
ASR 边听边转(增量临时文本)
LLM 推测执行(临时文本先算,最终文本相同则复用,不同则取消重算)
LLM 分段输出(第一段可播报文本立即交 TTS)
TTS 增量合成(音频块流式返回,生成/合成/播放重叠)
端点判断的两个坑:Whisper 编码器需要完整音频段,不能直接当流式模型;端点判断的训练标签只能用决策时刻可见的信息,否则"上帝视角"会导致线上无法复现的判断。
模型可输出声学事件标记:speak_start/end、interrupt、emotion、laugh/sigh/noise——与文字 token 构成统一事件流,Agent 才能感知"被打断""在犹豫"。
5. Computer Use:看完 ≠ 做完
① 截图 → ② 多模态模型输出思考 + 一个动作 → ③ 执行(点击/输入) → ④ 等响应 → 回 ①
关键区分:
| 能力 | 测法 | 难点 |
|---|---|---|
| 看懂界面 | 一次截图问答 | 多模态理解 |
| 完成任务 | 闭环多步 | 加载、状态变化、误操作、不可逆后果 |
三个设计维度:
| 维度 | 内容 |
|---|---|
| 动作空间 | GUI(mouse_move / click / drag / scroll / type 12 ms 间隔 / key / hold_key / screenshot / cursor_position / wait);bash(持久会话、120 s 超时、哨兵串检测完成、状态跨调用保留);文件编辑(str_replace_editor 字符串匹配、可撤销) |
| 视觉定位 Grounding | 在截图中找到目标元素(别让模型猜坐标) |
| 模型架构 | 截图 + 动作约束 + 执行结果 → 目标模型可接受的结构化输出 |
判据:"能看懂"只是一次问答;"能完成"要求每一步之后重新确认现实是否仍符合计划。 不可逆动作(删除、支付)必须有人确认或可回滚。
6. 机器人:VLA 与世界模型
当前观察 + 技能指令 → 动作(VLA)
高层规划器提交 pick(red_cup) → VLA 决定接近方向、夹爪闭合时机、轨迹
| 路线 | 做法 | 取舍 |
|---|---|---|
| RT-2 / OpenVLA | 连续动作切成 离散 token,像生成文字一样输出 | 易与语言模型结合 |
| π₀ | 直接生成连续轨迹 | 更平滑,训练更难 |
动作分块(必讲):大模型每秒推理 1–10 次,控制器要几十到上千次。工程上让模型一次生成一小段动作,控制线程高频执行,模型后台准备下一段——把推理等待藏进执行时间。
代价:分块越长越平滑,但模型看到的新画面越少;杯子在伸手途中被碰动,Agent 仍在执行按旧画面生成的动作。这是平滑性与反应速度的取舍,不是免费加速。
VLA 的四个局限:机器人演示数据远少于文本图像;行为克隆只学"下一步怎么做",不回答"做了会怎样";不同机器人自由度/坐标系/延迟不同;观察可能过时。
世界模型 = 动作结果预测器:
当前状态 + 候选动作 → 预测下一状态 → 比较候选 → 选动作 / 重规划 / 安全停止
判据:语言模型知道"杯子"是什么,不等于知道摩擦、接触、液体晃动会怎样改变未来状态。 VLA 答"现在做什么",世界模型答"做了会怎样"。
7. 反例与排障
| 现象 | 根因 | 处理 |
|---|---|---|
| 语音助手反应慢 | 四级串行累积 | 流式感知 + 推测执行 + 分段 TTS |
| 用户说一半被打断 | 端点判断过早 | 端点模型 + 声学事件 |
| CU Agent 点错元素 | 无 Grounding,硬猜坐标 | 先定位再点 |
| 页面变了仍按旧计划走 | 无动作后重确认 | 每步重新截图核验 |
| 机械臂抓空 | 动作块过长、观察过时 | 缩短分块、插入重感知 |
| 定时任务"以为在做异步" | 只有时间驱动、无外部事件源 | 接 Webhook/渠道推送 |
8. 自测
- 为什么说"回合制是约定,不是环境的性质"?
- Cron 与 Hooks 的事件来源差别?谁让 Agent"自己动起来"?
- 级联语音的三个硬伤?流式感知怎么缓解?
- 动作分块换来了什么、付出了什么?
答案
- 环境本身持续变化并主动推送;回合制只是同步接口的组织方式。
- Cron/Heartbeat 是时间驱动(可让 Agent 自主行动);Hooks 源在框架内部。外部事件源(Webhook/渠道推送)才算真外部。
- 等静音、二值信号丢副语言、专名被分片;用增量 ASR + 推测执行 + 分段输出 + 增量 TTS。
- 换来把推理延迟藏进执行时间;付出的是观察变旧(反应速度下降)。
9. 下一篇
S21-J14 · Agent 的评估(待写)—— 一条评估任务怎么解剖、Pass@k 与 Pass^k 的分工、评估环境五要素,以及统计显著性怎么算(章 7)。
本篇属于系列《S21 · Agent 工程与 MCP》。旧文来源:A-4572(第 6 章);扩展点 E-S21-041/042/043。文中产品/版本事实(如 GPT-6 Astra 原生异步、Anthropic CU 参数)按原文快照记录,属待核。