同一个 AI 技能(Skill)、同一个 MCP 服务,以前想同时在 Cursor、Codex、GitHub Copilot 里用,你得为每家客户端重新打一次包——目录结构、清单文件、配置写法全不一样,改一处还得挨个改三遍。2026 年 8 月 6 日,OpenAI 联合微软、亚马逊、Cursor(Anysphere)、Vercel 发布了 Agent Plugins 1.0.0 开放标准,谷歌当天也加入核心维护。从此:打一份包,装进所有兼容客户端——这就是 AI 插件生态的「USB-C 接口」时刻。
先搞懂:Agent Plugins 到底统一了什么?
一个 AI 插件通常由两样东西组成:Agent Skills(给模型的可复用指令和资源)和 MCP Server(连接外部工具和服务的接口)。它们本身就能跨客户端复用,真正卡住你的是最外层——每家客户端的打包方式不一样。Agent Plugins 把外面这层「包装盒」统一了:
| 层级 | 管什么 | 谁来定 |
|---|---|---|
| MCP | 客户端怎么连工具服务 | Anthropic 提出的协议 |
| Agent Skills | 可复用的指令和资源 | 各平台技能规范 |
| Agent Plugins | 把上面两者装进同一个包、跨客户端分发 | 本次五方联合标准 |
一句话记住:MCP 管「连接」,Skill 管「指令」,Agent Plugins 管「打包」。它不是 MCP 的竞争对手,而是站在 MCP 之上的一层「包装规范」。统一的是包装盒,里面的智能体没动。
Step 1:认识一个插件包的固定结构
my-plugin/
├── plugin.json ← 清单文件(只有 2 个必填字段)
├── skills/ ← 技能目录(可选,放 Agent Skills)
└── mcp.json ← MCP 配置(可选,声明 MCP Server)
规则就三条:根目录必须有 plugin.json;技能全放 skills/;MCP 配置写在 mcp.json。客户端只支持其中一种组件类型时,可以忽略另一种——技能坏了不会拖垮同包的 MCP,各自独立检查。
Step 2:写 plugin.json 清单
{
"schema": "https://agent-plugins.org/schemas/plugin.json",
"name": "weekly-report-assistant"
}
schema 指向规范的 JSON Schema 地址(声明「我遵守这个标准」),name 是插件名(建议用英文短横线命名,如 weekly-report-assistant)。这就是全部必填内容——想加描述、版本、作者等元信息,按规范里的可选字段补充即可。
注意命名规范:name 会被多个客户端用来做目录名和标识,保持小写英文 + 短横线,别用中文和空格,否则在 Linux/macOS 上安装容易出幺蛾子。
Step 3:把技能放进 skills/
如果你已经在 Cursor、Codex 或 Claude Code 里写过 Agent Skill,它的结构(如 SKILL.md 主文件 + 参考资料/脚本目录)可以直接平移到 skills/ 下,无需重写:
my-plugin/
├── plugin.json
├── skills/
│ └── weekly-report/ ← 技能名目录
│ ├── SKILL.md ← 技能主文件(指令)
│ └── templates/ ← 配套资源
└── mcp.json
Step 4:用 mcp.json 声明 MCP Server
如果你想让插件里带一个连数据库、查接口的 MCP 服务,把它在 mcp.json 里声明出来:
{
"mcpServers": {
"sales-db": {
"command": "npx",
"args": ["-y", "@yourorg/sales-db-mcp"],
"env": {
"DB_URL": "${DB_URL}"
}
}
}
}
结构和你在别处配 MCP 的写法一致:command 指定启动方式,args 传参数,env 放环境变量。这样「技能 + 工具」就被打包成一个整体分发了。
环境变量请占位:不要把真实密钥写死在 mcp.json 里——1.0 标准还没有密钥注入机制(列为未来工作),各家客户端会用自己方式填充环境变量。用 ${VAR} 占位,让客户端从自身凭据体系注入。
Step 5:装进兼容客户端并验证
目前官方兼容列表包含:VS Code、Cursor、GitHub Copilot、ChatGPT、Codex、Amazon Kiro。谷歌也已宣布在 Agents CLI 和 Data Agent Kit 中采用。具体安装方式各家略有差异,但通常就是「把插件文件夹放进客户端指定的插件目录」:
# 示例:把插件包放进行业常见的插件目录约定
~/.agent-plugins/
└── weekly-report-assistant/ ← 整个文件夹拷进来即可
├── plugin.json
├── skills/
└── mcp.json
Step 6:了解 1.0 的边界,别踩坑
| 1.0 已定义 | 1.0 未定义(未来工作) |
|---|---|
| 目录结构、清单格式 | 权限模型、沙箱隔离 |
| 技能/MCP 组件发现 | 数字签名、来源验证 |
| 跨客户端打包分发 | 密钥注入、企业白名单、审计日志 |
| 每客户端私有扩展目录 | hooks、斜杠命令等专有能力 |
三点实操提醒:① 安装市场插件前务必看清来源和作者——插件里的 MCP Server 会在你本机执行代码;② 各家对 stdio / StreamableHTTP 等传输方式支持不完全一致,跨端跑不动时先查传输兼容;③ 规范正文还标着「工作草案(Working Draft)」,别把 1.0.0 当成最终盖章版,留意后续版本更新。
常见问题速查
| 你遇到的现象 | 大概率原因 & 解决 |
|---|---|
| 客户端不识别我的插件 | plugin.json 位置不对(必须根目录)或 name 不合规 |
| 技能生效但 MCP 连不上 | 环境变量未填充 / 客户端不支持该传输方式 |
| 换客户端后行为不一致 | 1.0 只管打包,运行由各客户端负责,属正常现象 |
| Anthropic 的 Claude Code 能用吗 | Claude Code 原生是 .claude-plugin 格式,但多家客户端做了兼容层,部分可互认 |
| 和旧插件格式冲突吗 | Codex 现用 .codex-plugin/plugin.json,与开放规范并存,两边都会识别 |