事件到达与任务完成是两个时刻

用户消息、定时器、文件变化和工具结果可能在一次任务运行中到达。事件驱动运行环境需要接收、归属、排序和处理这些更新;程序使用 async/await,并不自动证明模型理解了新增约束,也不证明任务能够跨进程恢复。

接口支持的中途引导与工具异步能力因模型而异。可以在安全边界先暂停当前步骤、保存状态,再构造下一次调用;模型能力和运行环境的编排能力应分别验证。

事件记录与可信身份

本站设计的事件记录至少区分 event_id、task_id、task_revision、call_id、source、observed_at、payload。来源身份由应用认证,不采纳 payload 自报身份。工具结果、网页内容和用户指令使用不同的来源标签,工具输出中的命令文字不能升级为任务授权。

情况 控制要求
重复投递 按事件 ID 去重,记录已处理状态
结果乱序 按调用 ID 和任务修订归属,不按最后到达直接覆盖
用户改变目标 更新当前任务修订,在后续动作前核对新约束
用户取消 停止可取消工作,记录已执行和结果未知的动作
进程重启 从持久任务状态恢复,核对外部动作是否已经发生

普通队列重试不等于外部动作只执行一次。事件消重、业务幂等和实际效果查询解决的是不同层的问题。

原创迟到结果案例

任务 r17 原计划整理五个来源,工具查询尚未返回时,用户改为 r18:只保留三个来源且暂不发布。r17 的结果稍后到达,系统可以作为旧任务证据保存,但不能用它触发 r18 的发布动作。

一种实现是在执行前核对任务修订与动作授权,并用原子版本检查保存决定。已经发送到外部的动作可能无法撤销,取消不应被报告为“所有动作均未发生”。需要查询实际结果,再决定恢复、补偿或报告结果未知。

抢占与安全点

紧急取消可以中断生成或可取消工具;一般更新可在下一次工具完成后消费;独立通知可以排队处理。抢占应在能清楚记录执行状态的位置进行,避免留下半个参数、缺失结果或无法判定的写入。

持久异步任务还需要任务存储、执行者生命周期、deadline、结果回收和日志。只开后台协程而不保存恢复信息,服务退出后仍可能丢任务。

语音与 Computer Use 的共同控制问题

语音打断要区分接收新输入、停止播放和撤销旧动作。Computer Use 要根据当前截图或可访问界面识别目标,执行后读取新状态;点击成功不等于表单已保存。页面跳转、弹窗和布局变化都可能使旧坐标失效。

机器人还增加物理安全与控制延迟问题。截图上的“停止”文字不能代替独立的硬件停止机制;视觉和语音入门笔记不能直接证明具备真机操作能力。

练习与复习

为 r17/r18 设计五条时间线:正常返回、重复返回、取消后返回、重启后返回、新约束与旧动作冲突。逐步写出任务版本、下一步动作及用户应看到的状态,再检查是否重复发布。

解释程序异步与模型异步有什么不同、取消为何不等于回滚,以及一次界面操作怎样核对真实结果。本篇为状态设计练习,没有运行界面或硬件实验。

阅读来源与核验

2026-10-10:AI 助手协助原创整理;具体模型接口仍以实施时的官方文档为准。

原始资料与核验依据

继续探索

哪些笔记引用了这里

学习路径:Agent 工程进阶 从执行到持续改进

第 6 / 8 步 · 验证任务:写出乱序、重复、任务修订、取消与重启的事件时间线。