技能打包成标准文件夹,一次写好到处能跑
Agent Plugins 1.0.0 以工作草案形式发布。它是开放、厂商中立的打包标准。Google 加入了技术指导委员会,成为核心维护者。
这个标准补的是分发这一环。Agent Skills 按需加载:任务匹配时,模型才拉取指令文件夹,上下文窗口不会为无关信息占地方。但分发没人管。需要工具的技能是两个工件:指令在 SKILL.md,工具在 MCP 服务器,中间没有绑定。绑定写在 README 里:复制这段,添加那段 JSON,每个客户端一段不同配置。客户端各自发明捆绑格式,结果作者为每家重写一遍。
Agent Plugins 标准化的是盒子,里面的组件本就可移植。如果写过 ADK 技能,目录结构就是 skills/<name>/SKILL.md。scripts、references、assets 都在下面,跟插件要求一致。迁移只需在根目录加一个 manifest 文件,两个必填字段。这就是全部最低要求。
名称限 1 到 64 个字符。小写字母数字、连字符、句点,字母数字开头结尾,不含 -- 或 ...。发布时 schema 封闭,只允许十个顶级字段。version 应为 SemVer,license 应为 SPDX,格式错了客户端也不拒绝。但 JSON 类型错误是致命的:可选字段里数字顶替字符串,整包被拒。只有两种违规不致命——未知顶级字段、非对象的 extensions 值。它们会被报告、被忽略,插件照常加载。
发现规则只深入一层,客户端不递归。如果此前用分类文件夹分组技能,打包那一刻技能就消失,没有错误提示。
mcp.json 只有两个顶级键,每个服务器显式声明传输方式。三种传输,所需字段不同。command 是单个可执行令牌,不经过 shell 解析。裸名称走平台搜索规则,./ 开头的是插件相对路径。占位符扩展不碰它。两个占位符是 stdio 子进程的环境变量:PLUGIN_ROOT 和 PLUGIN_DATA。前者在插件更新时清空,后者是写内容的地方。扩展只作用于 args、env 值和 cwd,单次传递,不嵌套。headers 人人可读,禁止放凭据。1.0.0 没有可移植 OAuth 或凭据引用字段,认证归客户端管。
失败分三个级别,弄清是哪一级,调试就完成大半。MCP 服务器起不来,技能照样加载。条目无效或传输方式不被支持,客户端必须跳过继续。缺 mcp.json 不是错误。位置形式错了,该组件类型失效,其余照常。这就是捆绑和包格式的区别:捆绑全有或全无,包格式允许部分降级。
hooks、commands、subagents、rules 不在 v1,太客户端特定。规范给每个客户端一个自有命名空间。可以放在根目录反向域目录里,也可以作为 manifest 的 extensions 键,或两者兼有。客户端忽略不认识的命名空间,可移植核心因此保持可移植。但如果每家都依赖自己的命名空间而不用核心,插件会再碎片化一次。v2 辩论中要盯住这件事。
两个 Google 产品今天以插件形式发布。Agents CLI 打包了智能体构建、评测、部署、可观测性、发布方面的专家技能。Data Agent Kit 带来 Spanner、Cloud SQL、AlloyDB 插件,还有覆盖 BigQuery 的入门包。Antigravity CLI 装插件是一条命令。其他客户端仍有各自的安装程序,这是规范在弥合的差距。兼容客户端清单在 agent-plugins.org 保持更新。
一致性允许部分实现。客户端必须支持 stdio 和 streamable-http 至少一个,最好都支持;sse 可选。现代传输在今天列出的客户端上都安全,但承诺兼容前,应在第二个客户端实测。不是所有东西都需要插件。不带工具的技能,作为技能即可;一个服务器服务一个客户端,普通 MCP 配置更简单。指令和工具必须同时到达多个地方时,才做插件。
构建一个有效插件大约一分钟。从转换一个真实技能开始。确认 skills/ 下没有深层嵌套。写 mcp.json。捆绑二进制用 ./ 路径,随包资产用 ${PLUGIN_ROOT},写入内容用 ${PLUGIN_DATA}。在第二个客户端确认实际加载了什么,而不是以为该加载什么。跑通后补 version、license、repository、keywords。装一下 Agents CLI 和 Data Agent Kit,再读一遍规范。
实践中失败几乎都是静默的。嵌套太深的目录永远不会被发现,客户端无错可报。SKILL.md 无效,规范说应该报告,试过的客户端没有。目前没有标准验证器。linter 和一致性测试套件只是设想,未承诺。眼下检查插件的方式,是加载到真实客户端读诊断。
凭据是第一个缺口。插件不能嵌入秘密,也没有可移植字段引用它们。需要认证的网关,仍要逐客户端设置。文件夹移动了,认证留在原地。第二个缺口是命名冲突。Claude Code 用 .claude-plugin/plugin.json 和 .mcp.json,Antigravity 用 mcp_config.json。这些格式放在可移植布局旁边,不进去。过渡期里仓库会同时携带两者。调试一个从未被加载的插件前,先确认客户端读的是哪一个。
ADK 的 Skills 支持仍是实验性的——Python v1.25.0,TypeScript v0.6.1,Go v1.2.0。Agent Plugins 1.0.0 自身也还只是工作草案。两个 Google 产品已经用它分发技能了。