oag_ 用户 API Key —— 获取方式参见
认证与 API Key)和同样的智能体标识(agentId)。
本页只描述 OpenAPI wire 契约;A2A Task、Message Envelope 和 Runtime
Operation 使用相关但不同的状态机,映射见任务与操作状态。
按你的 UX 需求选择。底层三者都汇集到同一个
chatinvoke 核心
(参见 ADR 0017),
所以三种模式的 result 形状、状态语义和 SSE wire 格式是一致的。
1. 阻塞调用
最简单的模式。智能体跑完后(或网关超时,默认 120s)返回单条 JSON。请求
响应(200)
TypeScript SDK
Go SDK
2. 流式调用 (SSE)
同一个端点,换一下Accept header。响应体是一个 SSE 流:delta
事件(增量文本)+ 一个终止 done 事件。
请求
响应(SSE)
流由三种 frame 形状之一组成,契约里建模为InvokeEventStream
(InvokeAgentSSEDelta / InvokeAgentSSEError / InvokeAgentSSEDone
的 oneOf)。与 /tasks/{id}/events 不同,invoke 端点的 SSE 帧
不命名 event —— 全部是裸 data: 行,客户端通过 JSON 的 type
字段做区分:
done 之前发一个 error 帧:
timeout_ms 是服务端钳制在 115s 上限的(见 OpenAPI spec 的
InvokeAgentRequest.timeout_ms.maximum)。超出该值的钳制是静默的 ——
如果智能体没在有效窗口内回复,网关仍会发 service_timeout。
对于可能超过 ~2 分钟的工作,请切到异步任务 API,
它立即返回,让你通过 SSE 观察进度。
SSE frame 字段
错误码参考
同样的码会出现在error.code / done.code 以及阻塞 JSON 错误信封里。
用它们作为 switch 键 —— status_code / message 是展示,不是契约。
完整表格在 错误参考,是
HTTP 状态 × wire code × SSE frame 的单一真相源。调用路径上你最常
处理的几个:
agent_not_found(404) —— 检查所有权 / 可见性agent_service_unavailable/agent_offline(503) —— 短暂重试conflict(409) —— 智能体忙 / 拒绝 / 重复 idempotency key(看message区分)service_timeout(504) —— 切到异步tasksforbidden(403) —— 用一个拥有该智能体的凭证rate_limited(429) —— 尊重Retry-After
TypeScript(raw fetch)
生成的 SDK 的阻塞invokeAgent 不能流式 —— SSE 直接用 fetch:
3. 异步任务(推荐用于长任务)
标准任务核心。Submit 立即返回 202 +task_id。用
GET /tasks/{taskId} 轮询,或订阅 GET /tasks/{taskId}/events(SSE)
获取实时更新。生命周期支持 cancel 和 continue。
3a. 提交
3b. 轮询状态
status 翻为 completed / failed /
canceled / timeout / rejected 之一,result(成功)或
error(失败)字段被填充。终止态是状态机的叶节点 —— 轮询可短路。
3c. 实时 SSE 事件流
event: end 总是发生一次。它的 reason 字段是以下之一:
每个
event: message frame 里 type 取值的完整列表见
TaskEventStream schema。
3d. 取消
3e. 续传(resume input_required / auth_required)
某些智能体在任务中间暂停以请求额外输入或一次 OAuth 风格的授权。 状态会翻为input_required(或 auth_required)。用以下方式续传:
auth_required 暂停,设 "auth_grant": true 以发送
user.auth_grant 信封。
TypeScript SDK
3f. 列出你的任务
翻页查看你提交到某个智能体的任务。该列表由 Message Service 通道 元数据支撑,所以和 §3b 拿到的GetTask 快照是一致的。
该端点仅返回通道元数据
protocol 为 openapi 的任务 —— 会话通道在
GET /api/v1/agents/{agentId}/conversations。
跨智能体变体 —— GET /api/v1/tasks
如果你已经向多个智能体提交了任务,想要一份统一的”我的任务”视图
(多智能体 UI 常见),改用跨智能体端点:
tasks[] 行、同样的
next_since cursor —— SDK 可以共享 decode + 分页代码。可选
agent_id query 参数把范围收回到单个智能体,无需切换端点路径。
当你预先不知道调用方提交到哪些智能体时,用这个。
3g. 回放任务消息
取一个任务的完整消息日志。常用于在 SSE 事件流已经关闭后,展示 智能体的中间步骤。TypeScript SDK(列表助手)
对比小结
OpenAPI TaskStatus 参考(ADR-0017)
这些值只属于版本化的 OpenAPI/tasks wire 契约,不是 BeeOS 通用的
产品状态。把它们映射到 UI 或 A2A client 前,请先阅读
任务与操作状态。
状态转换文档见 TaskStatus
schema 组件。
另请参阅
- 会话 vs 任务 —— 多轮对话 API,何时
代替
invoke/tasks,以及 SSEsince-cursor 的完整契约 - 流式(SSE) —— 三个流式接入面的规范 SSE framing / 重连 / 掉线补偿
- 任务与操作状态 —— OpenAPI、A2A、消息、 Runtime 和产品状态的映射
- 错误参考 —— 此接入面可能返回的每一个
wire
code - 认证与 API Key —— JWT 对
oag_,以及 scope 表 - OpenAPI 契约 —— 真相源
- ADR 001 —— openapi-gateway 作为唯一 OpenAPI 实现者
- ADR 0017 —— 统一任务核心
- ADR 0017 follow-up —— audit-v4 快速胜利 + 历史 bug 修复
- ADR 0013 —— MS 是 IM,不是任务状态机
- SDK 验证 runbook
- Operator 验证矩阵
- @beeos-ai/sdk on npm
- github.com/beeos-ai/sdk-go