教程
Google Agent Plugins 2026 是什麼?Skills、MCP Server、Plugin 與 JSON Schema 如何組成下一代 AI Agent 工具生態?
技能寫好了,MCP 也通了,換一個 Coding Agent 卻要再包一層。2026 年真正缺的不是工具,是能一起走的箱子。
2026 年 8 月 6 日,Google 在 Developers Blog 宣佈加入 Agent Plugins 技術指導委員會,並把自家產品接到這份開放規範。9 月 10 日,Google Cloud Developer Plugin 上線:把認證、項目、gcloud 護欄和 Developer Knowledge MCP 打成一份可安裝包,給 Antigravity、Claude Code、Codex、Cursor 用。很多人把它聽成「Google 又發明了一套工具協議」。不是。Agent Skills 已經規定技能怎麼寫,MCP 已經規定工具怎麼調。缺的是把兩者裝進同一個目錄、換客戶端也不用分叉的箱子。箱子的合同是兩份閉集 JSON:plugin.json 與 mcp.json。站內 MCP 是什麼 講協議本身,MCP 與 JSON Schema 講 inputSchema。本文只講四層怎麼拼:Plugin、Skills、MCP Server、JSON Schema。規範原文見 Agent Plugins 1.0.0。
不是又一個 MCP 教程:Plugin 是箱子
先把層次釘死。Skill 是給模型看的說明書:何時用、怎麼走、旁邊有哪些腳本和參考。MCP Server 是給運行時看的手:tools/list 暴露工具,tools/call 執行,參數是 JSON。Plugin 兩樣都不重新發明。它規定:根目錄必須有 plugin.json;技能只從 skills/ 的直接子目錄發現;MCP 只從根上的 mcp.json 讀。v1 只承認這兩種組件。命令、子 Agent、hooks 若要帶上,放進反向域名目錄,比如 com.example.client/——別的客戶端可以無視。
Google 自己也寫明:不是每個技能都該升級成插件。只發一臺 MCP、只給一個客戶端,繼續用客戶端原生配置更簡單。單份 SKILL.md 也不需要箱子。Plugin 值錢的時候,是幾樣東西必須一起走:查詢發票的 MCP,加上把結果寫成周報的 Skill,再加上一份不能寫進另一份文件的發現合同。換 Cursor、Claude Code 或 Antigravity,你不該再維護兩套目錄佈局和兩套 Manifest 方言。
規範故意不管安裝、分發、權限、沙箱和信任。那些是 IDE、CLI 和企業平臺各自的義務,硬寫成可移植字段只會立刻分叉。Agent Plugins 只做包裝格式。發現可以走別的層(Google 提到的 Agentic Resource Discovery、AI Catalog),執行仍走 MCP 與 Agent Skills。採用其中一層,並不強迫你買下一層。記住這句:箱子可移植,安裝體驗不必可移植。
| 一層 | 它是什麼 | 合同在哪 |
|---|---|---|
| Plugin | 可分發目錄:把該一起走的組件打成一包 | plugin.json(閉集字段) |
| Skill | 可複用的工作流說明、腳本與參考資料 | skills/<name>/SKILL.md |
| MCP Server | 工具、資源的運行時與傳輸 | 根目錄 mcp.json + MCP 協議 |
| JSON Schema | Manifest、MCP 配置、工具入參的形狀說明書 | 官方 plugin.schema.json / mcp.schema.json,以及 inputSchema |
plugin.json:閉集 Manifest 與 JSON Schema
客戶端必須先讀根上的 plugin.json,再發現組件。它必須是 JSON 對象,且 Schema 是閉集:只允許 $schema、name、version、description、author、homepage、repository、license、keywords、extensions。多出來的頂層字段,客戶端必須報告並忽略,但不能因此拒絕插件。真正致命的是缺必填、類型錯、或 name 違規——那種情況整包不加載。1.0.0 的 $schema 必須是 https://agent-plugins.org/schemas/1.0.0/plugin.schema.json。客戶端用它選本地校驗規則,加載時不得去網上拉 Schema。
name 不是隨便起的展示名。長度 1–64,只能小寫字母、數字、連字符和點,首尾必須是字母或數字,禁止 -- 和 ..。My-Plugin、-start 都不合法。版本推薦 SemVer,但客戶端不能只因爲版本字符串「看起來不像 SemVer」就拒載。作者對象只允許 name / email / url。客戶端私貨放 extensions.com.example.client,不要發明第五個頂層鍵去塞 hooks。
注意 Manifest 不能做的事:不能改組件路徑,不能把技能或 MCP 內聯進來。沒有「發現路徑」可配,也沒有優先級可學。有 skills/ 就加載技能;沒有就跳過,不算錯誤。下面是一份比「只有 name」稍完整、但仍合法的 Manifest。先確認能 parse,再按官方 Schema 覈字段。
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
"name": "reports-plugin",
"version": "1.0.0",
"description": "Query invoices and write the weekly finance summary",
"license": "Apache-2.0",
"keywords": ["finance", "reports", "mcp"],
"homepage": "https://example.com/plugins/reports",
"repository": "https://github.com/example/reports-plugin"
}
Skills:固定目錄裏的 SKILL.md
技能格式不由 Agent Plugins 重寫,而以 Agent Skills 規範爲準:frontmatter、正文、以及 scripts/、references/、assets/。Plugins 只規定怎麼發現。固定位置是 skills/。每個直接子目錄裏有一份名爲恰好 SKILL.md 的普通文件,算一項技能。客戶端不得往更深層遞歸找技能——你把第二份技能藏在 skills/deploy/extra/SKILL.md,它不會被看見。
某一項技能不合格,客戶端必須跳過它,繼續加載其他技能和其他組件類型,並應報告哪一項壞了。這和「一個 MCP 起不來就整包作廢」相反。Google 的判斷是:獨立組件獨立失敗。週報 Skill 壞了,發票 MCP 仍該能連;反過來也一樣。這對 Coding Agent 很重要:你不會因爲文檔技能的 frontmatter 寫錯,就失去 gcloud 護欄。
Skill 解決的是上下文,不是傳輸。它告訴模型「先核項目、再談 billing、不要把密鑰提交進 git」;真正改雲資源的,仍是 MCP 工具或本地腳本。把整本手冊糊進系統提示,窗口會被喫光。Skill 按需加載,正是 Google Cloud 那篇 Developer Plugin 文強調的:單獨裝技能很快變亂,相關技能和 MCP 該捆在一起。插件是那根繩子,不是另一套 Tool Calling。
mcp.json:MCP Server 怎麼被發現,JSON Schema 管哪一層
MCP 的線協議仍是 MCP 自己的事:初始化、tools/list、tools/call、無狀態 HTTP。Agent Plugins 只規定到哪去連。配置必須在根目錄 mcp.json,不得寫進 plugin.json,也不得換一個核心路徑。文件頂層只能有 $schema 和 mcpServers。1.0.0 的 $schema 必須是 https://agent-plugins.org/schemas/1.0.0/mcp.schema.json,且必須和 Manifest 聲明的規範版本一致;對不上,只停用該插件的 MCP,技能繼續加載。
每個 server 必須帶顯式 type。客戶端不得從對象長什麼樣去猜傳輸。stdio 要 command(單個可執行文件 token,不是 shell 字符串)加可選的 args / env / cwd;插件內可執行文件必須用 ./ 開頭的相對路徑。streamable-http 與可選的遺留 sse 要絕對 URL。非迴環地址必須 HTTPS。規範明確:headers 裏不要塞密鑰;OAuth 與憑據是客戶端的事,不是可移植字段。某一條 server 無效、傳輸不支持、握手失敗,都只跳過那一條。
JSON Schema 在這裏出現三次,別揉成一份文件。第一份是包裝合同:plugin.schema.json 與 mcp.schema.json,管插件能不能被發現。第二份是工具入參:MCP inputSchema,管模型吐出的 arguments 像不像。第三份纔是你業務 API 的 OpenAPI / 結構化輸出。第一份壞了,客戶端進不了箱子;第二份壞了,tools/call 會在運行時被拒。校驗鏈見上文 MCP Schema 文。下面是一份同時帶本地 stdio 和遠程 Streamable HTTP 的 mcp.json。
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/mcp.schema.json",
"mcpServers": {
"invoice-tools": {
"type": "stdio",
"command": "./bin/invoice-mcp",
"args": ["--data", "${PLUGIN_DATA}/invoices"],
"cwd": "${PLUGIN_ROOT}"
},
"docs": {
"type": "streamable-http",
"url": "https://docs.example.com/mcp"
}
}
}
{
"name": "searchInvoices",
"description": "Query invoices by date range and status",
"inputSchema": {
"type": "object",
"properties": {
"startDate": { "type": "string", "format": "date" },
"endDate": { "type": "string", "format": "date" },
"status": { "type": "string", "enum": ["draft", "sent", "paid"] }
},
"required": ["startDate", "endDate"]
}
}
Google 2026 在發什麼:Developer Plugin、Agents CLI、Data Agent Kit
把 Google 的兩則公告疊在一起看。8 月:加入 TSC(Amazon、Cursor、Microsoft、OpenAI、Vercel 已是 Core Maintainer),並開始在自有產品裏支持這份格式。9 月:在 google/skills 發佈旗艦包 google-cloud-developer。它不是「又一個 gcloud 封裝」,而是基礎層插件:認證與授權、項目、gcloud 操作護欄,外加 Developer Knowledge MCP,讓 Agent 能接地官方文檔,而不是背一年前的博客。安裝走各客戶端的 marketplace / CLI,密鑰用環境變量,不寫進 mcp.json 的 headers——這正好符合規範把密鑰排除在可移植合同之外。
同一生態裏還有兩條線。Agents CLI 把 ADK 的搭建、評測、部署、可觀測、發佈打成技能包,讓 Antigravity、Gemini CLI、Claude Code、Cursor 在「如何在 Google Cloud 上做 Agent」這件事上變專家。Data Agent Kit 則把 BigQuery、Spanner、Cloud SQL 等數據面的技能和 MCP 收成可移植插件。兩邊以前都能發技能;現在用的是不屬於 Google 私有的目錄佈局。你寫的發票插件,和 Google 的雲插件,走同一份 Schema。
和 A2A 不要混。Plugin 解決的是「同一個 Agent 如何獲得一組技能和工具」;A2A Agent Card 解決的是「另一個 Agent 如何被發現、被委託」。箱子裏的 MCP 仍是向下的手;橫向同事仍是 Agent Card 與 Task。分層見 A2A vs MCP。若有人把整顆遠程 Agent 塞進 mcp.json 當一個 tool,多輪澄清和異步回調會立刻撐破函數調用的形狀。
| Google 在發的東西 | 箱子裏有什麼 | 你用它做什麼 |
|---|---|---|
google-cloud-developer | 雲基礎技能 + Developer Knowledge MCP | 讓任意兼容客戶端會走 GCP 認證與文檔 |
| Agents CLI 插件 | ADK 生命週期技能(搭建 / 評測 / 部署) | 讓 Coding Agent 會在 Cloud 上做 Agent 工程 |
| Data Agent Kit | BigQuery、Spanner、Cloud SQL 等數據面技能與 MCP | 讓數據管道和查詢跟着 Agent 走,而不是鎖在一個 IDE |
落地校驗:用 JSONVue 核兩份契約
發佈插件之前,至少留四份夾具:合法 plugin.json、故意多一個頂層字段的 Manifest、合法 mcp.json、command 寫成 ../bin/escape 的非法項。第一份必須通過官方 Schema。第二份按規範應被報告並忽略多餘字段,插件仍加載——你的 CI 若把它當致命錯誤,比客戶端更嚴,要自己知道。第三份核 type 與路徑。第四份必須失敗:相對路徑逃出插件根是硬錯誤。
再留一份工具 inputSchema,和一次真實的 tools/call arguments。包裝合同過了,不代表模型填對了日期格式。兩份 Schema 不要寫進同一個文件做「通用校驗」:一份管發現,一份管調用。Google 的 Developer Knowledge MCP 用 API Key,那是客戶端運行時的事;你在倉庫裏校驗的是不含密鑰的 mcp.json。
瀏覽器裏即可完成:JSON 格式化看兩份 Manifest 能否 parse;JSON Schema 校驗核 $schema、name、mcpServers;JSON Diff對比「倉庫裏的 mcp.json」和客戶端原生配置導出;數據不離開本機。延伸閱讀:MCP 與 JSON Schema、MCP 是什麼、以及 A2A 與 MCP 的分工。
常見問題 FAQ
Agent Plugins 是 Google 的專有格式嗎?
不是。1.0.0 由開放 TSC 發佈,Core Maintainer 包括 Amazon、Cursor、Microsoft、OpenAI、Vercel;Google 在 2026 年 8 月加入。Google Cloud Developer Plugin 是遵守該規範的一份包,不是規範本身。你的插件不必託管在 google/skills 才能叫 Agent Plugin。
只有一個 Skill,要不要做成 Plugin?
通常不要。Google 原文寫過:單技能、單 MCP、單客戶端,用原生安裝更簡單。當你有兩樣以上必須一起分發——例如「查數的 MCP + 寫週報的 Skill」——再裝箱。過早裝箱只會多一份 Manifest 要維護。
plugin.json 和 Gemini CLI 的 gemini-extension.json 是一回事嗎?
不是。Gemini CLI 仍有自己的擴展清單,MCP 可以寫在 gemini-extension.json 裏。Agent Plugins 把 MCP 趕到根上的 mcp.json,Manifest 閉集且不能內聯組件。客戶端負責把可移植格式映射成自己的原生配置。在 JSONVue 裏對比兩份文件,比猜測字段別名更不容易 drift。
校驗 plugin.json 能不能代替校驗 inputSchema?
不能。Manifest Schema 只回答「這包能不能被發現」。工具入參 Schema 回答「這一跳 arguments 合不合法」。前者過了,後者仍可能缺 startDate。兩份合同,兩次校驗;不要共用一個「隨便 parse」的函數。
總結與下一步
Google Agent Plugins 在 2026 年可以收成一句:開放包裝格式,把已經可移植的 Skills 與 MCP Server 放進固定目錄;Google 用它來發 Cloud Developer Plugin、Agents CLI 和 Data Agent Kit,而不是再發明第四種工具協議。
落地順序:先讓 plugin.json 能 parse、name 合法、$schema 釘在 1.0.0;再決定要不要 skills/ 和 mcp.json;然後用官方 Schema 核包裝合同,用另一份 Schema 核工具入參。用 JSONVue 把夾具留在本地。協議細節讀 MCP 文;跨 Agent 委託讀 A2A 文。