如果你读过本系列前几篇——JSON Schema、Function Calling 与 MCP 的技术演进、Structured Output 落地指南、Agent 调用链上的 JSON 数据流——会发现一个共同点:无论模型厂商、无论协议层,描述「该传什么形状的数据」时,几乎都在用 JSON Schema(或其子集)。
于是一个自然的问题浮出水面:JSON Schema 会不会成为 AI Agent 的「标准 Contract」——就像 OpenAPI 之于 REST、Protobuf 之于 gRPC 那样,成为跨团队、跨 IDE、跨云厂商的默认握手语言?
本文从「Contract 到底指什么」出发,梳理 2026 年生态里的采纳现状、仍存在的裂缝,以及工程上该如何选型。结论先行:JSON Schema 已是 Agent I/O 边界的事实标准,但不会是唯一一层契约——传输、鉴权、编排仍由 MCP、OpenAPI、各 Agent SDK 承担。
Agent 里的「Contract」指什么
在软件工程里,Contract(契约)约定双方交换数据的形状、语义与错误处理方式。AI Agent 比普通 API 更复杂,因为「调用方」里多了一个非确定性的大模型——它可能漏字段、编参数、或在自然语言与结构化输出之间摇摆。
因此 Agent 栈里其实有多层契约,JSON Schema 主要落在payload 形状这一层:
| 层级 | 契约内容 | 典型技术 |
|---|---|---|
| 模型 ↔ Host | 工具列表、tool_calls 参数、结构化回复 | JSON Schema(parameters / response_format) |
| Host ↔ 工具提供者 | 工具发现、调用、结果回传 | MCP(inputSchema 为 JSON Schema)、OpenAPI 包装 |
| Host ↔ 业务系统 | 订单、工单、审批等领域对象 | JSON Schema + 领域校验规则 |
| Agent ↔ Agent | 任务委派、多 Agent 协作 | 新兴协议(A2A 等)+ Schema 描述消息体 |
| 传输与鉴权 | 谁可以调什么、凭证如何传递 | OAuth、mTLS、MCP 能力协商(非 Schema 职责) |
说「JSON Schema 成为标准 Contract」,在实践里通常指:凡是模型与程序之间、程序与工具之间要交换结构化 JSON 的地方,默认用 JSON Schema 描述。传输怎么连、谁有权限调——那是上一层协议的事。
JSON Schema 已占据的三条战线
1. Tool / Function Calling 参数
OpenAI、Google Gemini、Anthropic Claude 的 Tools API 均用 JSON Schema 描述 parameters(或等价字段)。模型读 description 理解语义,宿主用同一 Schema 校验 arguments 再执行——这与我们在数据流一文里拆解的链路一致。
{
"name": "create_ticket",
"description": "在工单系统创建一条记录",
"parameters": {
"type": "object",
"properties": {
"title": { "type": "string", "description": "工单标题" },
"priority": { "type": "string", "enum": ["low", "medium", "high"] }
},
"required": ["title"],
"additionalProperties": false
}
}
2. Structured Output(模型最终回复)
当业务不要自然语言、只要 JSON 时,各厂商的 Structured Output / JSON Schema 模式在解码阶段约束 token,使输出符合 Schema。详见Structured Output 指南;Gemini 侧可参考Gemini 结构化 JSON 教程。
3. MCP Tool 的 inputSchema
MCP 规范明确要求每个 Tool 提供 inputSchema,类型即 JSON Schema。Cursor、Claude Desktop 等 Host 把 MCP 工具映射为模型 API 的 Function Calling 格式时,Schema 往往原样透传或做轻微子集裁剪——这是「写一次 Schema,IDE 与云端模型共用」的基础。
三条战线覆盖 Agent 生命周期里几乎所有结构化 JSON 边界,这也是「标准 Contract」论点的核心证据。
竞品与替代方案
| 方案 | 优势 | 在 Agent 栈中的位置 |
|---|---|---|
| OpenAPI 3.x | HTTP 全栈描述、生态成熟、代码生成 | 描述 REST 后端;Agent 通过 MCP/OpenAPI-to-tools 适配器消费,而非模型直接读 OpenAPI |
| Protobuf / gRPC | 强类型、高性能、多语言 stub | 微服务内部 RPC;LLM 侧仍需 JSON 视图或 JSON Schema 桥接 |
| TypeScript + Zod / Pydantic | 开发者体验好、与代码类型一体 | 宿主运行时校验;常通过 zod-to-json-schema 等生成 Agent 契约 |
| 纯 Prompt 模板 | 零依赖、原型快 | 不可版本化、不可 fail-fast,生产 Agent 已很少单独依赖 |
| 厂商私有 DSL | 可针对自家模型优化 | 跨厂商迁移成本高,2024–2026 趋势是收敛到 JSON Schema 子集 |
关键洞察:没有一种格式能同时最优地服务「模型可读」与「高性能 RPC」。JSON Schema 赢的是「模型 ↔ 程序」这一环;OpenAPI 与 Protobuf 继续在各自领地存活,并通过转换层与 Agent 对接。
为何 JSON Schema 在赢
- 与 LLM 训练分布对齐:JSON 在预训练语料中海量存在,Schema 的
type、enum、description可被模型当作「软类型提示」。 - 人类与机器双可读:产品、后端、Prompt 工程师能同读一份 Schema,比二进制 Protobuf 更适合协作与 Code Review。
- 校验生态现成:ajv、jsonschema(Python)、各云 API 内置校验——Structured Output 之后仍建议二次校验语义与业务规则。
- 厂商收敛:2023 各家用自定义 tool 格式;2024–2026 主流 API 文档均以 JSON Schema 子集为 parameters / response 的规范表述。
- MCP 与 OpenAPI 的「向下兼容」:MCP 选用 JSON Schema 而非发明新 DSL,降低工具作者学习成本;OpenAPI 3 的 Schema 组件可直接复用。
尚未统一的部分
「事实标准」不等于「完全统一」。生产 Agent 仍需处理以下裂缝:
- Schema 方言:OpenAI
strict: true对additionalProperties、required全量覆盖要求严;Gemini、Anthropic 支持的组合类型、$ref深度各异。复杂 Schema 需按目标 API 做兼容性测试。 - Draft 版本:生态仍混用 draft-07、2019-09、2020-12;
$defsvsdefinitions等差异会导致生成工具踩坑。 - 语义 vs 语法:Schema 保证「有 priority 字段且为 string」,不保证「priority=high 是否符合 SLA 政策」——业务规则仍需代码或 JSON Logic 等扩展。
- 非 JSON 载荷:图片、音频、文件 URI 等多模态 Tool 结果,Schema 只描述元数据包装,不替代 Blob 存储契约。
- 编排与状态:多步 Agent、Human-in-the-loop、子 Agent 委派——JSON Schema 不描述状态机,LangGraph、Temporal 等另有一套 DSL。
这些限制说明:期待「一份 Schema 统治 Agent 全栈」不现实;期待「所有结构化 JSON 边界默认 Schema 化」则已基本成立。
2026 生态信号
| 信号 | 含义 |
|---|---|
| MCP Server 数量爆发 + registry 出现 | 工具作者批量产出 inputSchema,Schema 成为可分享、可索引的「工具名片」 |
| 各云 Structured Output GA | 「Prompt 里写 JSON 格式」让位于 API 级 Schema 约束 |
| Agent SDK 内置 Schema registry | LangChain、Vercel AI SDK 等支持从 Zod/Pydantic 一键导出 tools + response schema |
| 企业 Schema 治理 | 大型团队把 Agent 工具 Schema 纳入 Git、CI 校验,与 OpenAPI 变更同等对待 |
| A2A / 多 Agent 协议萌芽 | 消息信封用协议定义,payload 仍倾向 JSON + Schema |
若你正在评估技术债:现在投资 JSON Schema 技能与工具链,比在私有 JSON 格式上继续堆 Prompt 更安全——即便未来出现「Agent Schema 2027」之类的 profile,也大概率是 JSON Schema 的超集或子集 profile,而非全新语言。
会成为「唯一」标准吗?
分两层回答:
会(高置信)——作为 Agent结构化 I/O的默认 Contract:Tool 参数、Structured Output、MCP inputSchema、OpenAPI 组件中的 request/response body。新工具、新模型 API 若不提供 JSON Schema 描述,反而显得「不完整」。
不会(同样重要)——作为 Agent全栈唯一契约:传输(stdio/SSE/HTTP)、鉴权、工具发现、多 Agent 编排、SLA 与配额,仍由 MCP、OpenAPI、各平台策略覆盖。JSON Schema 是栈中的「类型层」,不是「网络层」或「治理层」。
┌──────────────────────────────────────────────────┐
│ 治理 / 鉴权 / 审计(OAuth, RBAC, 日志) │
├──────────────────────────────────────────────────┤
│ 编排 / 状态(Agent 框架, 工作流引擎) │
├──────────────────────────────────────────────────┤
│ 连接 / 发现(MCP, OpenAPI, gRPC 网关) │
├──────────────────────────────────────────────────┤
│ ★ JSON Schema:工具参数 · 结构化输出 · 消息体 ★ │
├──────────────────────────────────────────────────┤
│ 执行体(HTTP, DB, 文件, 浏览器自动化…) │
└──────────────────────────────────────────────────┘
落地建议
- 单一 Schema 源:用 Pydantic / Zod 定义领域模型,生成 JSON Schema 供 OpenAI、MCP、文档共用,避免三份定义漂移。
- 按目标 API 做子集:为 OpenAI strict、Gemini 各维护一份「兼容 Schema」或通过 CI 自动检测不支持的关键字。
- description 当 Prompt 写:
description直接影响模型是否误调用;与字段命名一样值得 Review。 - Structured Output + 服务端二次校验:解码约束降低语法错误,业务规则仍用同一 Schema + 自定义 validator。
- 版本化与变更日志:Schema 变更 = API 破坏性变更;Agent 客户端应 pin Schema 版本或做向后兼容。
- 本地先验:上线前用 JSON 工具箱校验 Schema 语法与样例 payload,减少联调轮次。
常见问题 FAQ
JSON Schema 和 OpenAPI 在 Agent 里是什么关系?
OpenAPI 描述 HTTP REST 服务的完整契约(路径、方法、鉴权);JSON Schema 常作为 OpenAPI 组件描述 request/response body。Agent 侧 Tool Calling 与 MCP 更直接消费 JSON Schema 子集;REST 服务仍用 OpenAPI,可通过 MCP Server 或适配层把 OpenAPI 映射为 Agent 工具。
各厂商支持的 JSON Schema 完全一样吗?
不完全一样。OpenAI strict mode、Gemini responseJsonSchema、Anthropic 等均支持 JSON Schema 子集,对 $ref、oneOf、additionalProperties 等特性支持程度不同。生产环境应针对目标 API 做兼容性测试,并避免过于复杂的 Schema。
能用 TypeScript / Zod 代替 JSON Schema 吗?
在纯 TypeScript 宿主内,Zod 等库更适合运行时校验与类型推导;但模型 API 与 MCP 协议层仍要求 JSON Schema(或可自动转换的子集)。常见做法是 Zod → JSON Schema 代码生成,单一 Schema 源驱动类型与 Agent 契约。
JSON Schema 能描述 Agent 之间的协作协议吗?
JSON Schema 擅长描述单次消息或工具调用的数据结构,不擅长描述多 Agent 编排、会话状态机或传输层。A2A、MCP 等协议在 Schema 之上定义发现、鉴权与消息信封;Schema 是 payload 层的形状约束。
没有 JSON Schema 的 Agent 还能用吗?
可以,小脚本或原型仍可用 Prompt 约定 JSON 格式。但缺少可校验契约时,解析失败、字段漂移与幻觉参数会在规模化时放大。Structured Output 与 Tool parameters 几乎都已默认走 Schema。
如何验证 Agent 用的 JSON Schema?
在 JSON 工具箱浏览器端本地校验 Schema 语法,并用样例 tool arguments 或模型输出做结构匹配,数据不上传服务器。
总结与下一步
JSON Schema 正在成为 AI Agent 结构化 I/O 的标准 Contract——不是理论预测,而是 OpenAI、Google、Anthropic、MCP 与主流 Agent SDK 共同铺就的事实轨道。它不会取代 OpenAPI 或 Protobuf 的全部职能,但在「模型与程序握手」这一环,替代方案的空间已急剧缩小。
下一步:选一条真实业务链路(例如「用户意图 → 结构化抽取 → 调工单 API」),用一份 JSON Schema 同时驱动 Structured Output 与 Tool parameters,并在 JSON 工具箱本地验通后再接入 MCP。系列阅读建议按演进顺序:技术演进总览 → Structured Output → 数据流 → 本文(Contract 判断)。