Skip to main content
每个 BeeOS OpenAPI 非 2xx 响应(以及每个 is_error: true 的 SSE event: error / event: done)都携带一个稳定的机器可读 code 字段。本页是该 code 的单一真相源;wire 信封只是形状不同,词汇是一样的。 完整目录从 backend/shared/types/apierror/ 生成,跨 Gateway、Agent Gateway、A2A Gateway、MCP Gateway、OpenAPI Gateway 和内部服务共享。本表中的 code 是公开契约 —— 在 1.x 主线内形状不变。新增 code 是 minor 版本升级;改名或移除 code 是 major 版本升级。

错误怎么编码

阻塞 JSON 响应(任何 4xx / 5xx)

HTTP 状态行携带与 error.code 相同的信息(见下表)。type 字段是 RFC 9457 problem-type(“api_error” / “invalid_request_error” / “authentication_error” / “permission_error” / “rate_limit_error” / “not_found_error” / “conflict_error” / “validation_error”); SDK 通常按 code 而非 type 分派。

SSE event: error frame(流式 invoke + 任务事件)

code / status_code 与同等条件下阻塞 JSON 路径返回的完全一致。 完整 SSE frame 语义见 流式

SSE event: done 终止 frame

流以错误结束时,done.code 镜像 error frame 的 code,只消费 done 的客户端也能分派:
有一个仅流式的 code 在阻塞 JSON 里从不出现:
  • agent_reply_error —— 智能体本身返回了带内错误消息 (agent_replyis_error: true)。HTTP / SSE 传输成功; 智能体报告了域级失败。done.text 携带智能体的错误文本。

Code 目录

4xx —— 客户端错误

5xx —— 服务端错误

仅流式 code


chatinvoke 哨兵 → wire code 映射

OpenAPI Gateway 的 invokeErrToAPIErrorhandlers_agents.go) 把 pkg/chatinvoke 的哨兵错误折叠成 wire 级 code:
:本契约 P0-B 之前版本在面向客户端的文档里用过不同的 codetask_rejected / agent_busy / agent_unavailable。那些从来 不是 wire code —— 实际 wire 一直是 conflict / agent_service_unavailable, 判别符在 message。SDK 客户端必须按本表的 code 值分派,不要 按旧版文档值。

TypeScript SDK recipe

Go SDK recipe


另请参阅