🔧 工具、MCP 与 Agent 协议
工具结果与错误协议
工具、MCP 与 Agent 协议专题:用 2 个核心问题讲清原理、取舍与落地。
一句话定位
工具契约、注册发现、执行网关、MCP、A2A 与网络安全。 模型只负责提出调用;宿主负责发现、校验、授权、执行、重试、审计和返回结果。
核心原理与问题解析
工具返回应该是文本还是结构化数据?
程序继续处理时优先短小结构化数据,保留 status、data、error 和引用;用户展示可在最后格式化。直接回长文本会增加 Token、解析不稳并隐藏错误。
继续想: 二进制结果怎么返回?;大结果如何分页?
工具错误怎样分类?
至少分 validation、permission、not_found、conflict、temporary、rate_limit、timeout 和 unknown_result。分类决定修参数、停止、重试、对账还是转人工。
继续想: 异常堆栈应给模型吗?;unknown_result 为什么特殊?
工程落地检查
- Schema 清楚表达必填、枚举与互斥
- 读写工具分权并标记副作用
- call_id、幂等键和超时贯穿链路
- 第三方工具输出一律视为不可信
- 协议互通之外仍做认证、授权和审计
常见误区
- 把 Function Calling 误解成模型直接执行
- 把 MCP 当成安全边界
- 为方便把全部工具和高权限一次暴露
对应面试题
U03 工具返回应该是文本还是结构化数据? · U04 工具错误怎样分类?
延伸资料
Model Context Protocol · A2A Protocol · OpenAI Function Calling