先行结论
- 2026 年不要按「GPT / Gemini / Claude 谁更强」选 AI Agent 技术栈,要按工具契约能不能跨模型复用来选。
- JSON Schema 才是真正的跨厂商合同;Function Calling 只是各家模型发出调用的口音。
- MCP 把 Schema 变成可发现的
tools/list与可执行的tools/call,否则 Schema 只是文档。 - GPT、Gemini、Claude 都适合当 Host 侧的推理引擎;长期跑 MCP Server、校验器与 worktree 的应是不会合盖的机器。
- 先冻结一份 Schema,再接 MCP,最后才换模型——顺序反了就会三套 tools 永远对不齐。
模型能力不是分水岭,JSON Schema + Function Calling + MCP 组成的工具契约才是分水岭。
0. 先行结论
如果你正在搭 2026 年的 AI Agent 技术栈,结论可以写死:GPT、Gemini、Claude 都是可替换的推理层;真正决定系统能不能交付的,是 Function Calling 发出的参数能否通过同一份 JSON Schema,以及这份 Schema 有没有被 MCP Server 暴露成稳定工具。先锁模型再补工具,是过去两年最贵的顺序错误。
1. 问题为什么存在:先选模型为什么会失败
工单里最常见的对话是「我们上了最新的 GPT / Claude / Gemini,Agent 还是不会干活」。原因很少是模型笨,而是三套工具定义各写各的:OpenAI 的 tools、Gemini 的 functionDeclarations、Claude 的 tools / tool_use,再加一份 MCP 的 inputSchema。表面上全叫 Function Calling,运行时却是四份互相漂移的合同。
旧方案失败得非常具体:产品把 Prompt 当流程、把模型当操作系统、把 MCP 当「再装一个插件」。结果是聊天很顺,tools/call 一碰路径、枚举、必填字段就 400。团队开始比较「哪家模型更听话」,却从不 diff Schema。这就是为什么「先选 GPT 还是 Claude」会把项目带进死胡同——模型解决不了契约分裂。
- Host 在 IDE 里,MCP Server 在笔记本上,合盖后 Function Calling 变成空转。
- 同一工具在 GPT 侧叫
repoPath,在 Claude 侧叫repo_path,JSON Schema 没有单一真相。 - Gemini 的函数声明漏了
additionalProperties: false,模型开始发明字段。 - MCP
tools/list返回的 Schema 与线上校验器不是同一 git SHA。
正确的拆法是:把「会不会推理」和「能不能安全执行」分开。推理可以换 GPT、Gemini 或 Claude;执行必须落在同一份 JSON Schema + 同一台常驻 MCP 进程上。部署机器怎么选,见 MCP Server 部署:Cloud Mac vs VPS vs 本地。
2. 五层分类:模型、Function Calling、JSON Schema、MCP、Host
禁止把这些词平铺成百科。2026 年可运行的 Agent 栈只有五层,缺一层就会在另一层假装补上。
2.1 推理层:GPT / Gemini / Claude
GPT(OpenAI)、Gemini(Google)、Claude(Anthropic)负责:读上下文、决定要不要调工具、生成符合 Schema 的参数、再把工具结果写进下一轮。它们不是文件系统,也不是 Git。选型看延迟、上下文窗口、价格与安全策略,不看谁更像操作系统。官方入口:OpenAI Function Calling、Gemini function calling、Claude tool use。
2.2 Function Calling:模型的口音,不是总线
Function Calling 是模型输出「我要调哪个函数、参数是什么」的协议。GPT 走 tool_calls,Claude 走 tool_use 块,Gemini 走 functionCall。口音不同,语义相同:一次受 Schema 约束的结构化调用。如果你为三家各写一套 handler,三个月后一定分叉。要把口音适配留在薄薄一层翻译器,业务逻辑只认规范化后的 JSON。
2.3 JSON Schema:跨厂商合同
JSON Schema 描述类型、必填、枚举、范围、additionalProperties。OpenAI 的 parameters、Claude 的 input_schema、MCP 的 inputSchema,本质上都应是同一份 Schema 的投影。合同要进 git、要有测试:用合法/非法 payload 打校验器,而不是用 Prompt 求模型「请遵守格式」。
2.4 MCP:把合同变成可发现、可执行的工具
Model Context Protocol 规定 Host 如何 tools/list、tools/call。MCP Server 才是吃磁盘、密钥、网络的进程。Cursor / Claude Code / 自建编排器都只是 MCP Client。没有 MCP,Schema 停在文档里;有 MCP 但 Server 跑在合盖笔记本上,Function Calling 仍然会在夜间集体死亡。Cursor 侧说明见 Cursor MCP。
2.5 Host:入口,不是能力本身
Host 是人点下去的地方:IDE、CLI Agent、Chat 应用。入口决定体验,不决定能否执行。把 Claude Code 当 Host、把 GPT 当备用模型,完全合理——只要它们打的是同一台 MCP 与同一份 Schema。并行 worktree 时 Host 更要和仓库同机,见 远程 Mac + worktree 短租。
3. GPT vs Gemini vs Claude vs MCP:五维对照
表头对所有行一致。注意:MCP 不是第四个模型,它是执行与发现层;把它和三家模型放一张表,是为了阻止「用模型替代总线」。
| 层/方案 | 入口 | 执行能力 | 上下文 | 成本 | 权限边界 |
|---|---|---|---|---|---|
| GPT Function Calling | API / ChatGPT / 兼容 IDE | 生成 tool_calls;本身不碰你的磁盘 | 对话 + 你塞进 messages 的材料 | 按 token;工具循环会放大账单 | 密钥在你的后端;模型只见到参数与返回摘要 |
| Gemini function calling | Gemini API / Studio / Vertex | 生成 functionCall;执行仍在你这边 | 多模态上下文强;工具字段仍要 Schema 管住 | 按 token / 项目配额 | GCP IAM + 你的工具沙箱 |
| Claude tool use | API / Claude Code / Console | 生成 tool_use;CLI Host 可接着跑 shell | 长会话与代码场景稳;仍非文件系统 | 按 token;Agent 循环同样烧钱 | 工具白名单 + 人审;MCP 侧再收一层 |
| JSON Schema | 校验器 / codegen / 单源文件 | 拒绝非法调用;不执行业务 | 无;它是合同不是记忆 | 几乎为零(测试成本) | 把危险字段从合同里删掉,比写长 Prompt 有效 |
| MCP Server | stdio / SSE / 远程 Host | 真正执行 Git、HTTP、DB、文件 | 仓库、密钥、本机状态 | 机器常驻成本(Cloud Mac / VPS) | 进程用户、路径白名单、网络出口 |
读表时记住一句非对称结论:三家模型比的是推理与口音,MCP 比的是执行边界。 你不能用「换 Claude」修好「MCP 跑在合盖笔记本」;也不能用「上 MCP」自动获得合法 JSON——还是要 Schema 测试。
4. 场景怎么选
按你的入口与执行需求选组合,而不是按评测榜选模型。
| 层/方案 | 入口 | 执行能力 | 上下文 | 成本 | 权限边界 |
|---|---|---|---|---|---|
| 个人 PoC,本周就要 demo | 本机 IDE + 一个模型 | stdio MCP,1~2 个 tools | 单个仓库 | API 账单为主 | 本机用户权限,勿接生产密钥 |
| 小团队日更代码 | Claude Code 或 Cursor 作 Host | MCP Git + 测试 runner | 多 worktree | Cloud Mac 日租验收再月租 | 工具白名单;禁止 Agent 直连生产 DB |
| 要切 GPT / Gemini / Claude | 自建编排 + 统一 tool gateway | 同一 Schema 投影到三家 Function Calling | 共享 MCP | 多一份翻译层,省三份工具分叉 | 网关鉴权;模型拿不到原始密钥 |
| iOS / Xcode / 签名 | CLI Agent 在 Mac 上 | 同机 MCP + xcodebuild | 证书、DerivedData、模拟器 | 独占 M4 比「Linux MCP + 另租 Mac」更省 | 钥匙串与签名只留在 Mac |
| 7×24 值班 Agent | 远程 Host + 常驻 MCP | launchd / compose 保活 | 夜间任务、webhook | 合盖笔记本=隐性故障 | 出站防火墙 + 审计日志 |
5. 推荐组合
允许叠加。下面三套都把 JSON Schema 单源放在 git,再生成各厂商 Function Calling 声明与 MCP inputSchema。
组合 A|个人:Cursor 或 Claude Code(Host) → 单一模型(先 Claude 或 GPT,可换) → 本机 stdio MCP(Git 只读) → Schema 文件 + 校验测试 合盖即停,只适合白天 PoC。 组合 B|交付团队(推荐):CLI Agent 作 Host → GPT / Claude 可切换(同一 gateway) → Cloud Mac 上 MCP Git Server + 测试工具 → Schema 单源 → 生成 OpenAI tools / Claude input_schema / MCP inputSchema → 48h 日租:合盖笔记本,确认 tools/call 仍成功 组合 C|多模型网关:自建 orchestrator → Gemini 做多模态入口,Claude/GPT 做代码工具循环 → 所有 functionCall / tool_use 先经 JSON Schema 校验再 MCP tools/call → MCP 与仓库同机;模型 API 在公网
代码侧的最小合同示例(投影到 OpenAI parameters、Claude input_schema、MCP inputSchema 时应保持字段名一致):
{
"name": "git_status",
"description": "Return git status for a worktree path",
"parameters": {
"type": "object",
"properties": {
"repo_path": { "type": "string", "minLength": 1 },
"porcelain": { "type": "boolean", "default": true }
},
"required": ["repo_path"],
"additionalProperties": false
}
}
6. 常见误区
- 误区 1:先定 GPT 还是 Claude,再补工具。顺序反了,三套 tools 会永久分叉。
- 误区 2:把 MCP 当成第四个模型。MCP 不推理,它执行;没有 Schema 的 MCP 只是未打表的 RPC。
- 误区 3:用 Prompt 代替 JSON Schema。
additionalProperties: false比「请不要编造字段」更管用。 - 误区 4:Function Calling 成功等于业务成功。模型可以生成合法 JSON 去删错目录——权限白名单在 MCP 进程,不在模型。
- 误区 5:本机 stdio 跑通就上生产。合盖、Wi‑Fi 切换、同事无法复用同一 MCP deployment,是 7×24 的天敌。
7. 落地步骤(7 步)
- 列出 Agent 真正要执行的 3 个动作(例如 git status、跑测试、读 issue),禁止一上来接 20 个 MCP tools。
- 为每个动作写一份 JSON Schema,放进 git;补合法/非法 fixture 测试。
- 实现一个 MCP Server,
inputSchema直接引用上述文件,不要手抄。 - 做一层厂商适配:把同一 Schema 投影成 OpenAI tools、Gemini functionDeclarations、Claude input_schema。
- 用一个 Host(Cursor 或 Claude Code)打通
tools/list→ Function Calling →tools/call→ 结果回灌。 - 把 MCP 迁到不会合盖的机器(Cloud Mac 或 VPS),笔记本只留 Host;合盖 8 小时再测。
- 第二家模型只接翻译层,禁止复制一份 tools。回归同一套 fixture。技能封装见 Agent Skills 2026 指南。
8. FAQ
Function Calling 和 MCP 是不是同一件事?
不是。Function Calling 是模型如何说出「要调工具」;MCP 是 Host 如何发现并执行工具。没有 MCP 也可以自己写 handler;没有 Function Calling,模型只能输出自然语言让你复制命令。
JSON Schema 要写到多严?
至少覆盖类型、required、enum、以及 additionalProperties: false。路径类字段要拒绝 ..。过严会增加适配成本,过松则把安全检查推回 Prompt——后者一定会漏。
GPT、Gemini、Claude 应该怎么分工?
按入口与模态:Gemini 适合带图像/视频的入口,Claude 适合长代码会话,GPT 适合已有 OpenAI 网关的团队。分工发生在 Host 路由,不发生在三套不同的 MCP Server。
可以只用 Chat Completions、不用 MCP 吗?
可以,适合单应用单模型。一旦出现第二家模型或第二个 Host(IDE + CLI),自建 handler 会复制成 N 套。MCP 的价值是工具进程只部署一次。
为什么还要把栈放到 Cloud Mac?
若工具链含 Xcode、钥匙串、iOS 模拟器,MCP 与 Agent 必须同机且常驻。Linux VPS 跑纯 Git/HTTP 可以;Apple 交付把 MCP 放 Linux、把构建放另一台 Mac,路径会再裂一次。
9. 总结
2026 的 AI Agent 技术栈不是「选一个最强模型」,而是一份 JSON Schema、一层 Function Calling 适配、一座 MCP Server、一个可替换的 GPT/Gemini/Claude 推理层。谁更强会变;合同与执行边界不会每周重写。
落地顺序固定:Schema → MCP → 一个 Host 打通 → 换模型。机器顺序同样固定:PoC 可以本地,交付就迁到 Cloud Mac 或 VPS。评测榜可以看,但不要用评测榜代替契约测试。