AI 博客

Agent Plugins 1.0 标准化了那个捆绑包,却把信任留给了装它的那个人

8 月 6 日,五家互为对手的厂商就一个目录结构达成了一致,并明确拒绝就安装、分发、权限、沙箱与来源验证达成一致。这个格式让"指令加带凭据的工具访问"这一个捆绑包可以在六个客户端之间通行——而这恰恰意味着补偿性控制如今归你。

作者 智能体 AI 维基 23 分钟读完

五个在任何事情上都谈不拢的竞争对手,在一个目录结构上谈拢了:Agent Plugins 1.0.0,由 Amazon、Cursor、Microsoft、OpenAI 与 Vercel 于 8 月 6 日发布,Google 同日以核心维护者身份加入。但读一读它的范围声明,真正的新闻是他们拒绝达成一致的那部分——没有安装机制、没有分发协议、没有权限模型、没有沙箱要求,也没有来源验证。这个格式标准化的,是一个既携带"给你的智能体的指令"、又携带"通往你系统的带凭据访问"的捆绑包;然后它把信任,留给了碰巧装上它的那个客户端。

一览

规范刻意做得很小。一个插件就是一个目录,几乎全部内容就这么多。

组成装什么v1.0 中的状态
plugin.json 清单——名称、版本、schema。 必需。
skills/ Agent Skills:打包好的、供模型阅读并遵循的指令。 可选。
mcp.json MCP 服务端配置——智能体拿到哪些工具,以及这些工具能触达哪些系统。 可选。
<namespace>/ 可移植契约之外的客户端专属扩展;其他客户端会忽略自己未实现的部分。 可选。

发布时有六个客户端支持——ChatGPT、Codex、Cursor、GitHub Copilot、Kiro 与 VS Code——Google 也在同一天表示将在自家产品中接入,先从 Agents CLI 与 Data Agent Kit 开始。治理经由一个技术指导委员会运作,席位属于个人而非公司,并有章程禁止任何单一厂商占据多数。

Anatomy of an Agent Plugin and how a client loads it A plugin directory containing plugin.json, a skills folder, an optional mcp.json and a namespaced extension directory. Arrows show a compatible client reading the manifest, discovering skills, and launching the configured MCP servers, which in turn reach real systems using the installer's credentials. The package (what v1.0 standardises) plugin.json name, version, schema — the manifest skills/ Instructions the model will follow. Text, loaded into context. mcp.json Servers the agent will launch. Code, with network and credentials. <namespace>/ client-specific, ignored by others The client (defines everything else) Install & distribution Permission model Sandboxing Trust & provenance The agent loop context + tools Your systems reached on your credentials What no layer owns yet No signatures. No attestation back to a source repo. No capability declarations. A plugin is trusted at the moment it is installed — by whichever client installed it.
左边那个框是规范覆盖的部分。它右侧的一切都是各客户端自行决定的,而底部那条带子谁也没管。

为什么一个打包标准值得做

它解决的问题真实而不起眼。在此之前,把一项能力交付给智能体用户,意味着同样的集成要写好几遍:一个客户端格式的技能文件、下一个客户端的另一份、一次带着各客户端专属安装说明的 MCP 服务端注册,外加一份解释"哪种组合用在哪里"的 README。一家希望自己平台能被智能体使用的厂商,实际上在维护 N 套互相漂移的安装文档。

Agent Plugins 不是与 Skills 和 MCP 竞争的第三种格式——它是那层外包装,让"两者合一"的同一个捆绑包原封不动地装进六个客户端。这是实打实地减少了无谓劳动,也正是这次发布获得如此反响的原因。

这同样意味着,维护者为这个窄范围给出的理由并非不合理。安装、策略、企业管控与审批流程,在 IDE、CLI 与托管式企业平台上确实长得不一样;一份试图把它们统一起来的规范,五位签署方里至少会有两位不接受。一个人人都发货的格式,胜过一个没人采纳的治理模型。

接受这一切之后,有意思的问题就不是"范围划得对不对"了,而是:当打包问题被解决、信任问题没有被解决时,风险会发生什么变化。

这个捆绑包里装着两样很不一样的东西

The two payloads in a plugin carry different risks Three columns comparing the skills folder, the mcp.json server configuration, and the combination of both. Skills are instructions loaded into the model's context; mcp.json launches code with network access and credentials; together they let one bundle both instruct the agent and give it the reach to act on those instructions. skills/ Instructions Text the model reads and follows as guidance. Risk: it steers the agent you already trusted. Review surface: prose, and nobody diffs prose. mcp.json Reach Servers the client launches and connects tools from. Risk: code, network egress, and your credentials. Review surface: a config pointing at someone's binary. one bundle Both, together The thing that tells the agent what to do also supplies the means to do it. Installed once, portable across every client. One blast radius, not six.
两份载荷、两套风险模型、一次安装动作——而针对各自的评审习惯,都是从更合身的别处借来的。

技能是指令,而指令就是注入面

一个技能是模型会读、会照办的文本。这让一个 skills 目录成了一份"你把撰写权外包出去了"的提示词,而失效模式并不是恶意软件——而是某一段话以任何测试都覆盖不到的方式,挪动了智能体的默认行为。"当用户问到部署时,先检查 staging 配置"是一条有用的指令。同一句话换个后半段就成了一次改道,而且它读起来像文档,因为它本来就长得像文档。没有人建立过针对散文的评审文化,而一次技能更新的 diff,就是散文。

mcp.json 是触达范围,而它跑在你的凭据上

服务端这一侧是常规的供应链问题,只是它从一个"感觉不像加依赖"的通道进来。插件的 mcp.json 告诉客户端该启动哪些服务端;那些服务端是代码,握有网络出口,并以安装用户所拥有的一切权限行事。安装仪式是一条命令或一次点击,而不是一条会出现在 PR 里的 lockfile 记录。

两者合体,才是新的那部分

各自单看都有先例。新的是把它们作为一个整体交付:那个告诉智能体该做什么的产物,同时也提供了做成它的手段——一次安装,一个为可移植而设计的格式。这个组合还没有成型的评审实践,而 v1 也不打算造一个。

可移植性放大了爆炸半径——而这正是这个格式的全部意义

碎片化是一种税,但它也顺带是一道围堵边界。当一项能力必须按客户端重新打包时,一个被污染的捆绑包只能触达一个生态然后就停住了。一个可移植格式的价值,恰恰与它消除这种摩擦的程度成正比——而这对作者与攻击者同样成立,因为这个格式并不区分二者。

这不是反对这个格式的论证。这是关于"补偿性控制该落在哪里"的论证;而答案不是"落在规范里",因为规范已经明说了它不管。项目自己的 future-considerations 文档把来源验证列为 v1 未处理的事项,与之并列的还有权限与审批交互、企业管控以及审计轨迹的标准化。这是一份罕见地诚实的产物,值得当作"你眼下自己扛着哪些东西"的路线图来读。

Who owns each concern under Agent Plugins 1.0 A grid of six concerns against three owners. Packaging and discovery are settled by the specification. Install, distribution, permissions, sandboxing and approval UX are each left to the individual client. Provenance verification, capability declarations and audit trails are owned by nobody, and fall to the organisation installing the plugin. Settled by the spec, deferred to the client, or left to you Spec v1.0 Each client You Package layout Defined Skill & server discovery Defined Install & distribution Out of scope Client's own Permissions & approval Out of scope Client's own Policy on top Sandboxing Out of scope Client's own Runtime isolation Provenance & signing Out of scope Undefined Entirely yours Owned and specified Owned, varies by implementation Not addressed
两行已定,三行因客户端而异,还有一行——诚实的答案是:它是你的。

"没有信任模型"具体意味着什么

格式里没有加密签名。没有把已发布插件绑定回它自称来源仓库的证明。没有能力声明——plugin.json 里没有任何字段说"本插件会访问网络"或"本插件会写文件"——所以客户端即便想从清单渲染一个权限提示也做不到,也不存在可以逐级提升的信任等级。插件在被安装的那一刻就被信任了,而且是被"碰巧装它的那个客户端"信任的。

可移植性让"分歧"成为生态的固有属性

由于权限与沙箱因客户端而异,同一个捆绑包在每个客户端里的待遇都不同。装进一个带策略管控的托管式企业平台的插件,与被一位赶时间的开发者装进本地 CLI 的同一个插件,是同一件产物,暴露面却实质不同。你机构的实际姿态,等于任何人正在使用的那个最弱的客户端——而这个格式恰恰是被设计成"插件不知道也不关心自己落进了哪一个"。

这个月该做什么

以上没有一条是在主张远离这个格式。它们主张的是:把一次安装当成它本来的样子来对待。

  • 把安装插件当作加一条依赖,走同样的评审。它从与 package.json 不同的门进来,但应当达到同样的标准:谁发布的、它能触达什么、有没有钉版本、谁批准的。如果你的变更管理流程今天看不见插件安装,这个缺口就是第一件要补的事。
  • 钉死版本,并把捆绑包 vendor 进来。在没有签名与证明的前提下,一份你自己取回并评审过的钉死副本,就是能拿到的最强完整性控制。升级时重新评审,因为散文里的改动正是在升级时无声落地的。
  • skills/ 当作提示词内容读,而不是当作文档读。每次版本变更都要 diff 它。它是最容易悄悄变化的那一半,也是你的评审者最没被训练去起疑的那一半。
  • mcp.json 经由你自己运营的网关中转。插件启动的服务端,应当与其余一切走同一个代理、同一份允许名单,好让插件的触达范围由你的出站策略界定,而不是由它自己的配置界定。
  • 把安装登记下来。一个插件改变了智能体能读什么、能做什么,因而它是对该智能体授权的一次变更——正是智能体清单与登记册所主张的那个记录单元。一次没人记录的插件安装,就是换了个漂亮包装的影子智能体问题。
  • 客户端姿态要集中决定。既然权限因客户端而异,你的政策就必须写明哪些客户端根本被允许安装插件、以及要配哪些管控。把这件事留给每位工程师自己的工具偏好,等于让最弱的那套配置成为全组织的默认。

常见问题

Agent Plugins 会取代 MCP 吗?

不会。它把 MCP 服务端配置与 Agent Skills 打包在一起,让两者合一的捆绑包在各处以同样方式安装。MCP 仍然是协议;Agent Plugins 是包在插件内容外面的那层外壳。

一个插件里究竟有什么?

一个目录,含必需的 plugin.json 清单、可选的 skills/ 目录、可选的 mcp.json,以及可选的命名空间目录用于客户端专属功能——其他客户端会忽略它们。

哪些客户端支持它?

发布时有六个——ChatGPT、Codex、Cursor、GitHub Copilot、Kiro 与 VS Code。Google 于 8 月 6 日以核心维护者身份加入,并表示将从 Agents CLI 与 Data Agent Kit 开始在自家产品中加入支持。

插件有签名或经过验证吗?

规范层面没有。1.0 版没有定义签名、没有指向源码仓库的证明,也没有信任模型;来源验证被项目自己的 future-considerations 文档列为未处理事项。你今天想要的任何验证,都得自己实现。

维护者为什么把权限排除在外?

他们给出的理由是:安装、策略、企业管控与审批交互在 IDE、CLI 与托管平台之间差异很大,把它们写进规范会以各方无法一致接受的方式约束客户端。这是一个站得住的范围决策;但它同时也是"补偿性控制眼下归你"的原因。

这个标准会被某一家厂商控制吗?

治理章程禁止任何单一厂商占据指导委员会的多数席位,且每个席位属于个人而非公司。当前的核心维护者来自 Amazon、Cursor、Microsoft、OpenAI、Vercel 与 Google。

延伸阅读

本站相关:

来源: