Skip to content

规范

Agent UI v0.2 是 runtime-first 的 Agent 交互表面标准。核心契约是 Agent facts 与用户可见 UI 之间的 projection 边界。

Agent UI 定义 runtime、tool、workflow、context、permission、artifact、evidence 和 session facts 如何变得可见、可控制、可恢复、可编辑和可审计,同时不让 UI 变成这些事实的权威来源。

范围

Agent UI 标准化这些实现问题:

  1. 客户端可投影的 event classes 和 durable snapshots。
  2. Surface 职责和 fallback states。
  3. 通过受控 API 写回的用户动作。
  4. Hydration、progressive rendering、queue/steer 和性能预算。
  5. 面向真实 Agent 工作台的验收场景。

Agent UI 标准化模型协议、工具注册表、artifact store、CSS 系统、组件库或视觉皮肤。

投影架构

Projection store 可以保存 selected tab、collapsed sections、visible window、focused artifact、local draft 等 UI-only state。它不能成为 runtime identity、tool output、artifact content、permission state 或 evidence verdict 的权威来源。

必需事实所有者

兼容实现 SHOULD 分离这些 owner:

Owner示例WriterUI 使用
Runtime factssession id、turn id、lifecycle status、text deltas、tool calls、queue state、action requestsAgent runtime 或 protocol adapterConversation、Process、Task
Artifact factsartifact id、kind、read ref、version、preview、diff、metadata、export stateArtifact serviceArtifact 工作区
Evidence factstrace、citation、verification、replay id、review decision、audit recordEvidence 或 review serviceTimeline / Evidence
UI projectionvisible message window、collapsed tool count、selected tab、local draft、display labelUI controller仅渲染

Projection state 可以用 id 引用 facts,但不应复制大 payload,也不应从正文推断成功。

标准事件类

Agent UI 使用通用 event class 名称,方便客户端把 AI SDK UI、OpenAI Apps SDK、自定义桌面 runtime、事件流 runtime 或其他来源适配到同一投影模型。

Event class目的主表面
run.started建立 run、turn 或 task 边界。Runtime Status、Task
run.status展示 submitted、routing、preparing、streaming、retrying、cancelled、failed 或 completed。Runtime Status
text.delta / text.final流式展示并 reconcile 最终回答文本。Message Parts
reasoning.delta / reasoning.summary在最终回答之外展示 thinking 或 reasoning。Process
tool.started / tool.args / tool.progress / tool.result渲染工具生命周期、输入、输出和大输出引用。Tool UI、Timeline
action.required / action.resolved为审批、结构化输入、计划决策或修正暂停。Human-in-the-loop、Task
queue.changed展示排队 turn、steer intent、队列顺序和队列变更。Task Capsule、Composer
artifact.created / artifact.updated / artifact.preview.ready / artifact.version.created / artifact.diff.ready / artifact.export.started / artifact.export.completed / artifact.failed / artifact.deleted把生成、编辑、预览、版本化、diff、导出、失败或删除的交付物链接到 Artifact 工作区。Artifact 工作区
evidence.changed链接 citations、traces、verification、replay 和 review。Timeline / Evidence
state.snapshot / state.delta同步外部应用或 Agent 状态。Session Tabs、Task、自定义表面
messages.snapshot恢复或修复 conversation history。Message Parts、Session Tabs
run.finished / run.failedreconcile completed、interrupt、cancelled 或 failed。Runtime Status、Task、Evidence

标准表面

Surface用户问题不应拥有
Composer我将发送什么,带哪些上下文、模式、附件和 queue/steer 意图?Runtime queue facts 或 permission grants。
Message Parts用户和助手说了什么,哪些是最终回答,哪些是过程?把 tool output、reasoning 或 artifacts 当普通最终文本。
Runtime StatusAgent 是否 accepted、routing、waiting、streaming、blocked、retrying、cancelled、failed 或 done?超出 runtime facts 的 provider 真相。
Tool UI哪个工具在运行,安全输入摘要是什么,输出预览和详情在哪里?工具执行本身或带 secret 的原始 payload。
Human-in-the-loop用户需要批准、拒绝、编辑或回答什么?没有 runtime 确认的权限状态。
Task Capsule跨 turn 和 subagent 有什么在运行、排队、阻塞、失败或需要注意?完整 session history。
Artifact 工作区交付物在哪里,如何 preview、edit、diff、version、export、reuse 或 handoff?没有 artifact service 所有权的 artifact content。

Artifact 工作区契约

Artifact 工作区是 Agent UI 的核心表面。它标准化 durable deliverables 的交互语义,但内容存储和 bytes 仍属于 artifact service。

兼容客户端 SHOULD 支持:

  1. Conversation 或 process surfaces 里的紧凑 artifact cards。
  2. 用于 preview、edit/canvas、diff/review、version history、export 和 handoff 的专用工作区。
  3. 明确的 artifact.kindartifact.statusartifact.version.idartifact.previewartifact.read_refartifact.diff_refartifact.source_refsartifact.evidence_refs
  4. 可用时保留具体 artifact events,artifact.changed 只作为折叠后的 adapter event。
  5. Message text 与 artifact body 分离。

UI MUST NOT 从 assistant prose 推断 saved state、export success、version identity 或 artifact kind。 | Timeline / Evidence | 发生了什么,哪些事实支撑结果,如何 replay 或 review? | 不是 evidence system 产生的 verification verdict。 | | Session / Tabs | 哪些 session/thread active、hydrated、stale、unread、running 或 pinned? | 非活跃 session 的完整 detail。 |

受控写入动作

会改变状态的 UI action MUST 通过拥有该状态的系统写回:

UI actionRequired factWrite boundary
Send promptsession/thread id、draft、context refs、modeRuntime submit API
Queue inputactive run 或 busy session、draft、queue policyRuntime queue API
Steer current runactive run id、steering payload、policyRuntime steer 或 resume API
Interruptrun id、turn id、task id 或 session idRuntime interrupt API
Approve/rejectaction request id、decision、optional payloadRuntime action response API
Edit artifactartifact id、version、patch/contentArtifact service
Export evidencesession/run/task idEvidence export API
Open older historysession id、cursor/windowSession history API

如果写入失败,UI 应保留现有 facts,把本次 action 标为 failed,并提供可恢复路径。

Hydration 与渐进渲染

旧 session 和长任务不能被 full detail 阻塞。兼容实现 SHOULD 按这个顺序加载:

  1. Shell、title、tab、轻量 runtime snapshot。
  2. 最近 message window。
  3. 当前 run status、pending action 和 queue summary。
  4. Timeline summary 与紧凑 tool/artifact references。
  5. Full tool output、artifact content、evidence payload 和 older history 只在按需时加载。

historyLimit、基于 cursor 的分页、idle timeline construction 和大输出 offload 属于 UI 契约的一部分,因为它们直接决定 Agent workspace 是否可用。

Fallback states

事实缺失或延迟时,必须诚实展示状态:

  • loading:请求已开始,但事实尚不可用。
  • unknown:客户端无法从现有事实知道状态。
  • unavailable:producer 不提供此事实。
  • stale:snapshot 可能过期。
  • blocked:runtime 缺少事实或动作而无法继续。
  • needs-input:需要用户动作。
  • failed:拥有系统报告失败。
  • disputed:evidence/review 状态冲突。

兼容 UI MUST NOT 从普通正文推断 artifact kind、permission grant、success、verification pass 或 user approval。

校验

Validator SHOULD 校验行为和契约,而不只是检查文件:

  • Event adapter 把 lifecycle、text、reasoning、tool、action、queue、artifact、evidence 和 session events 映射为 typed projection state。
  • Final text reconciliation 防止 streamed/final output 重复。
  • Reasoning、tool output、runtime status、artifacts 和 evidence 不污染最终回答正文。
  • Missing facts 渲染诚实 fallback states。
  • User actions 通过受控 runtime/artifact/evidence APIs 写入。
  • 旧 session 以 bounded history 和按需详情渐进恢复。
  • Acceptance scenarios 覆盖 send、first status、tool call、action request、queue/steer、artifact handoff、evidence export、failure 和 old-session recovery。

Draft runtime-first standard for agent interaction surfaces.