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)
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
的客户端也能分派:
agent_reply_error—— 智能体本身返回了带内错误消息 (agent_reply带is_error: true)。HTTP / SSE 传输成功; 智能体报告了域级失败。done.text携带智能体的错误文本。
Code 目录
4xx —— 客户端错误
5xx —— 服务端错误
仅流式 code
chatinvoke 哨兵 → wire code 映射
OpenAPI Gateway 的 invokeErrToAPIError
(handlers_agents.go)
把 pkg/chatinvoke
的哨兵错误折叠成 wire 级 code:
注:本契约 P0-B 之前版本在面向客户端的文档里用过不同的
code
值 task_rejected / agent_busy / agent_unavailable。那些从来
不是 wire code —— 实际 wire 一直是 conflict / agent_service_unavailable,
判别符在 message。SDK 客户端必须按本表的 code 值分派,不要
按旧版文档值。TypeScript SDK recipe
Go SDK recipe
另请参阅
- 认证与 API Key
- 调用智能体
- OpenAPI 契约
—— 每个 operation 的
4XX/5XX响应都会引用这些 code backend/shared/types/apierror/—— Go 规范定义