2026-05-18 · AI
32
AI · 2026-05-18

Plugin 这一层:我怎么看 Codex 和 Anthropic 的新打包方式

软件分发原本只有两种主流颗粒度:一个是代码包(npm/pip/Docker),一个是 SaaS 帐号。最近半个月,我观察到第三种颗粒度正在固化下来——Plugin。OpenAI 给 Codex 加了 Plugin marketplace,Anthropic 在 Claude Code 上把 Plugin 升级成一级系统。两家的实现路径不同,但形状惊人地像。

下面这篇是我自己学习、动手拼、并且观察这套东西怎么发布的过程。

先把术语理清楚

这一层概念很容易混。我的理解是这样的:

最容易被误解的点是:Plugin 不是 Skill 的升级版。它和 Skill 不是同一层的东西。Skill 是能力,Plugin 是装能力的盒子。装上一个 Plugin,等于一键拿到了知识、能力、数据接入、自主调度这四样的完整套件。

两家的 Plugin 长什么样

我把 Anthropic 的 claude-for-legal 仓库和 OpenAI Codex 的 Plugin 文档放在一起看了一遍,骨架几乎是镜像的。

Anthropic 这边一个 Plugin 长这样:

commercial-legal/
├── .claude-plugin/plugin.json   身份信息
├── .mcp.json                    数据层声明
├── CLAUDE.md                    知识层(团队 playbook 模板)
├── skills/                      能力层
│   ├── review/SKILL.md          路由 Skill,自动派发
│   ├── nda-review/SKILL.md
│   └── ...
├── agents/                      调度层(定时/事件驱动)
│   ├── renewal-watcher.md
│   └── deal-debrief.md
└── hooks/hooks.json             生命周期钩子

Codex 那边是这样:

my-plugin/
├── .codex-plugin/plugin.json
├── skills/                      Prompt 文件
├── .app.json                    App 连接器
├── .mcp.json                    MCP 服务器
└── assets/

不同点很少:Codex 把 App 连接器和 MCP 拆成了两个文件,Anthropic 都塞在 .mcp.json 里;Codex 在云端沙箱里跑(Seatbelt/Landlock/seccomp),Anthropic 跑在本地终端、用 hooks 做安全层。剩下的,身份、知识、能力、数据、调度,这五层两家完全对齐。

我个人觉得这种"结构同构、机制分歧"的状态很值得关注。它意味着 Plugin 形态已经稳定,剩下的是分发机制的竞争。

Anthropic 的几个细节我比较欣赏

第一个是配置路径与代码路径分离。Plugin 自己的 CLAUDE.md 是模板,用户配置写在 ~/.claude/plugins/config/<plugin>/CLAUDE.md。升级 Plugin 不会冲掉团队定制。这一条直接决定了 Plugin 能不能进企业环境。

第二个是 Router Skill 模式。用户只调用 /commercial-legal:review,路由 Skill 在 Plugin 内部识别文档类型(NDA、MSA、SaaS 协议),再派发给对应的专项 Skill。一个入口,多个实现。专项 Skill 标注 user-invocable: false,外部看不到,只能被路由调起来。

第三个是 Cold-start Interview。Plugin 首次安装时,由一个采访 Skill 引导用户填写 playbook、升级链、风格偏好,写入用户配置。后续所有 Skill 读取这份配置。这是 Plugin 区别于"复制粘贴几个 Markdown"的关键——它有自己的初始化协议。

第四个是 Scheduled Agent 必须显式声明工具白名单。比如 tools: ["Read", "Write", "mcp__ironclad__*", "mcp__*__slack_send_message"],再没有别的权限。每个 Skill / Agent 还必须写"What this does NOT do"。法律行业对安全的要求把这一层逼了出来。

怎么自己拼一个 Plugin

我自己照着这个骨架试着拼了一个内部用的 gs-deployment Plugin。流程是这样的:

第一步,Fork 一个参考骨架。Anthropic 的 claude-for-legal 是目前最完整的官方样例,直接 fork 比从头写省两天。

第二步,plugin.json 把身份钉死。版本号、作者、依赖列表。这一步看似形式,但后面 marketplace 装载、依赖解析、token 预算都依赖它。

第三步,Cold-start interview 优先于任何 Skill。我的习惯是先写采集脚本(客户环境、技术栈、网络拓扑、SLA),把团队上下文沉淀进 ~/.claude/plugins/config/。这一步省了,后续 Skill 就是空对空。

第四步,Skill 分层。一个 Plugin 里至少要分"路由 Skill / 工作 Skill / 诊断 Skill"。工作 Skill 不暴露,只能被路由调用。诊断 Skill 单独成组,发生故障时由 Agent 自动调起来。

第五步,MCP 不要散落在全局。Plugin 自己的 .mcp.json 写清楚要哪些外部系统。这样别人装 Plugin 时一目了然,不需要去翻全局配置。

第六步,Agent 写工具白名单 + 显式负面范围。这一条我刚开始嫌啰嗦,后来体会到必要性:Plugin 一旦被多个项目复用,没有白名单就是定时炸弹。

发布和分发:5 天里变了什么

我大约 5 天前写过一份 Plugin 模式的内部分析,当时下了一个保守判断:"Anthropic 还只有 GitHub 仓库,marketplace 估计要 3-6 个月"。结果不到一周,剧情完全变了。

Anthropic 这边:

OpenAI Codex 那边:

repo-scoped marketplace 这一档我之前完全没预料到。它本质上是"项目内私有分发",离"内部 SaaS"只剩一步。如果你选 Anthropic 栈想做等价的事,目前只能自己搭一个静态站 + manifest JSON 当 marketplace。

我自己的几个判断

Plugin 是 Agent 时代的"包"。npm 之于 JavaScript,pip 之于 Python,Plugin 之于 Agent。这一层一旦稳定,整个生态从手工坊进入工业化。

Domain Layer 还空着。Connector Layer(Slack/Figma/Linear/Notion 这类)已经被两家平台官方招安。Platform Layer(runtime、marketplace、沙箱)在 Anthropic 和 OpenAI 手里。真正没人占的是 Domain Layer——懂行业 know-how 的人把方法论封装成 Plugin 卖出去。Anthropic 用法律行业打了第一枪,金融合规、医疗临床、房地产、企业 IT 运维都还没有像样的玩家。

计量层会成为 Plugin 的第 5 层。原本我画的 Plugin 是四层(知识、能力、数据、调度)。Anthropic 把 token 估算挂进 marketplace 后,模型要补一层 metering——Plugin 装上后吃多少 context、多少钱,这是企业选型的下一个维度。早期没人在乎,晚期会变成技术债。

窗口期比想象中短。我 5 天前的判断是"3-6 个月垂直行业 Plugin 爆发"。现在我把这个数字改成"1-3 个月"。原因是 Connector Layer 已经被吃掉,Domain Layer 的窗口在 Platform 向上吞并的引力下持续收窄。

给团队的几个动作

如果你也在做内部工具集 / 内部 Skill 集,我建议尽早把它们重组成 Plugin 的形态。理由不是"赶时髦",而是 Plugin 把"团队知识 + 能力 + 数据接入 + 调度"绑成一个单元,安装即完整这件事,本身就降低了团队内的沟通成本。

具体可以做的几件事:

还在观察的几个信号

剩下的,等下次写。

— toy

目录 最新
← 左侧翻上一屏 · 右侧翻下一屏 · 中间唤出菜单