2026-07-22 第二十二阶段实时、环境与多 Agent 控制面深审记录

阶段结论

本阶段把实时会话、环境执行和多 Agent 协作中的“看起来已经发生”拆成可验证的不同事实:媒体/文本观察、模型提议、运行时状态、授权决定、执行 receipt 与人工对账不能互相替代。课程现在明确区分离线模拟器能证明的关联/状态合同,和生产系统仍必须由 adapter、IAM、持久状态、外部事实和人工控制证明的部分。

覆盖 实时多模态交互、环境型 Agent 与 多 Agent 协作。

本阶段不证明什么

离线事件、合成 JSON、单进程调度和 Quartz 构建不证明真实音频采集/播放、网络与设备质量、供应商会话恢复、真实工具或业务 receipt、用户身份、对象 ACL、审批签名、跨进程 lease、原子事务、人工对账、补偿执行或组织合规已经成立。它们只证明当前教学合同、失败路径和公开发布边界可以重复检查。

多 Agent 分工与主 Agent 复核

  1. 实时多模态专项:复核实时产品样例、媒体/控制/状态面、背压、断线恢复及离线会话项目;主 Agent 对 JSON 严格性、工具收据边界、状态图和测试计数做二次修复。
  2. 环境型 Agent 专项:限定在浏览器、桌面、编码、沙箱、恢复和评测页面,补身份、委派、凭据、审批、审计与并发恢复边界;不修改运行时项目的既有教学范围。
  3. 多 Agent 协作专项:处理委派、消息、冲突、停止、评测和离线调度器;主 Agent 统一新身份章节的学习顺序、grant_ref 术语及跨课程引用。
  4. 两个独立只读审阅:一组核对三门课程的事实、链接与合同闭环;另一组只审调度器的状态机、依赖传播、结果冲突和 CLI。所有 P1/P2 均由主 Agent 用窄范围实现、文档和负向测试修复后复核。

开始时工作树已经包含实时、环境与多 Agent 范围内的若干未提交编辑;本阶段没有回退或归属那些既有内容,只在逐页核验后补充/收敛实际发现的断点。

关键改动

实时多模态:严格输入、等待门与执行账本分层

  • realtime_session.py 现在拒绝重复 JSON key、NaN/Infinity 等非标准常量,并以 allow_nan=False 计算事件摘要和输出 JSON;嵌套工具参数也不能绕过有限 JSON 边界。
  • WaitingTool 已成为可测试的输出门:可声明额外调用、接收匹配结果、响应用户打断、断线或超时;在所有未决调用结束前,拒绝新的输入帧、输出音频和 response 完成。状态图、文字替代和回归测试同步说明这是本课程的阻塞式教学模型,不等同于全双工生产产品。
  • 明确模型 tool.call、应用内部执行 receipt 和离线 tool.result 三者不同。模拟器的简化事件只验证 call_id + response_id 关联,并从响应账本推导 turn;生产写操作仍需在执行边界复验授权/审批、持久化 intent/idempotency/receipt,并根据外部事实核对。
  • 项目测试由 29 项增至 33 项,覆盖重复 JSON key、非标准数值、非有限嵌套参数、多个工具结果与工具等待期间的输入/输出拒绝。

环境型 Agent:计划、身份和环境能力不再混为一谈

  • 统一交互契约新增“用户目标、模型计划、委派/策略、具体审批、adapter receipt”五类证据表;页面文字、屏幕头像、模型自述和已有登录态都只能作为 observation,不能升级为授权。
  • 浏览器页面补齐动态 locator 与 locator.all() 的边界;桌面页面明确窗口/可访问性信息不是业务主体或对象所有权证明;编码页面明确 Git linked worktree 保护工作树但不是进程、网络、凭据或仓库外文件的安全沙箱。
  • 沙箱、审批与恢复页面加入主体—委派—凭据—审批链、最小审计留存,以及 generation 高水位之外的 worker lease/状态版本要求。评测页把功能、安全、隐私/审计、恢复和发布复现性分成独立证据维度。

多 Agent:委派不传递凭据,冲突不再伪装成成功

  • 新增 身份、授权与跨边界信任,并把它排在委派合同之后、消息/共享状态之前。它区分角色名、运行主体、Agent Card、grant_ref、审批和 receipt,说明 A2A Card 用于发现而不替代业务授权,MCP HTTP 不得透传面向其他资源的 token。
  • 委派合同统一使用 grant_ref,强调它是策略/IAM 解析的无秘密引用,而不是 bearer credential;学习路线和掌握标准同步加入跨信任域与执行边界复验。
  • 调度器现在将 failed、denied、blocked 或 needs_review 的 pending 依赖后代传播到不动点,避免非拓扑声明顺序把上游失败误报为 deadlock。任务状态使用白名单迁移,仍只允许 succeeded → needs_review 这条冲突升级边。
  • 同一 (task_id, idempotency_key) 出现不同 payload digest 时,公开 result 被清空并标为 result_trust: conflicted;result_conflicts 只为合成教学数据深拷贝双方证据、digest、事件序号和状态版本。真实系统应改为受保护证据引用,隔离已经开始的下游副作用并由人工决定查询/补偿/撤销。
  • 文档不再把 Python 的排序键 JSON 序列化称为跨实现 canonical JSON;跨进程实现必须固定并版本化自身 digest scheme。项目测试由 61 项增至 66 项,新增逆序三层失败/冲突传播、非法迁移和冲突结果隔离测试。

跨课程术语与状态边界

术语本阶段稳定含义不可错误替代
grant_ref指向策略/IAM 决定的无秘密、受限授权引用bearer token、角色显示名、模型计划或长期执行许可
tool.call模型或编排层提出的候选工具意图已批准、已执行或已提交的业务事实
执行 receipt外部 adapter/目标系统对副作用的可对账证据模型文本、离线 result 字符串或单纯连接恢复
payload_digest在明确算法、版本与值规则下绑定 payload 的摘要未声明实现的“canonical JSON”或跨语言自动等价
needs_review运行时检测到互斥证据后的安全冻结状态A2A 标准任务状态、自动重试或默认失败回滚
state_version / lease防止旧 worker 或迟到写入覆盖当前状态的并发控制证据单进程内存状态、checkpoint 签名或简单重连标记

来源、原创与第三方材料边界

本阶段新增中文解释、Mermaid 图、教学代码与测试均为原创;外部规范、论文和官方文档只用于核验事实/边界,未复制无明确公开再分发条件的正文。主要一手来源:

验证证据

检查结果
实时会话项目33 项测试,normal、-O、warnings-as-errors、-O + warnings-as-errors 全通过
环境型 Agent 项目103 项测试,同四种模式全通过
多 Agent 调度项目66 项测试,同四种模式全通过
统一项目回归202 项/模式,四种模式共 808 次测试执行全通过
静态检查7 个 scoped Python 文件 AST、相关 Markdown/JSON 语义与 scoped git diff --check 通过
网站测试.website 中 npm test:48/48 通过;npm run build 成功
发布验证924 个公开页面、231 个资源;0 个本地断链、禁止文件、敏感泄漏或 KaTeX 错误

后续队列

  1. 将实时阻塞式教学状态机映射到真实全双工媒体 adapter 前,单独设计 capture/playout/side-effect 并行状态、设备/网络试验和回退路径。
  2. 将环境型与多 Agent 的引用式授权接入真实 IAM、短期凭据、审批签名、lease/compare-and-set、受保护审计和业务 receipt,再测试撤销、并发恢复、补偿和跨租户攻击。
  3. 在 Obsidian 桌面端抽查新增 Mermaid、长表与 callout 的阅读体验;Quartz 的静态构建不能替代本地编辑/交互验证。

本记录只覆盖第二十二阶段,不表示长期 /goal 已完成。