Day 082理解 AI Understanding AI拆开 Skill 3/4约 7 分钟

OpenAI、Anthropic、Gemini,哪些概念已经开始统一?

OpenAI, Anthropic, Gemini: which concepts are converging?

前两篇一直在研究 Skill。顺着查下去,我发现 OpenAI、Claude、Gemini 的 Agent 产品里,开始反复出现一些很像的东西:

Skill、MCP、Plugin / Extension、Hooks、Subagents,还有 AGENTS.md、CLAUDE.md、GEMINI.md。

一开始很容易陷进名词里。后来把它们放在一起看,我觉得更有意思的是:

越基础、越需要跨工具复用的能力,越开始走向统一;越往上走到怎么组合、怎么安装、怎么管理,三家反而还保留着自己的做法。

已经真正开始统一的:Skill 和 MCP

目前最明确的两个例子是 Skill 和 MCP。

它们都来自 Anthropic,但后来都走向了开放标准。

Skill:把一类事情的做法保存下来

Skill 解决的是:

这类任务,AI 应该怎么做?

最基本是一份 SKILL.md,复杂一点还可以带 references、scripts、assets。

前面拆过的 make-photo-stamp-archive 就是一个很简单的例子:作者把构图、印章选择、不能修改的东西、最后怎么检查等设计方法整理成 Skill。

现在 Claude Code、Codex、Gemini CLI 都已经支持 Agent Skills。

这意味着同一套做事方法,开始可以跨 Agent 使用。

当然,同一个 Skill 不代表三家最后产出的结果一定一样。

例如图章 Skill 可以把同样的设计规则交给 Codex、Claude Code 或 Gemini CLI,但最后图片效果还取决于宿主提供什么 image model、什么编辑工具,以及模型本身怎么理解这些规则。

所以 Skill 更像是可迁移的“方法”,而不是把底层模型能力也一起打包走。

MCP:把外部能力接给 AI

MCP(Model Context Protocol)解决的是另一个问题:

AI 怎么使用外部的数据和工具?

比如一个 GitHub MCP server,可以向 Agent 提供:

  • 读取 repo
  • 搜索 issue
  • 查看 PR
  • 修改某些资源

以前每家 AI 产品都可能单独开发一套 GitHub integration。

有了 MCP 以后,外部服务可以按照共同协议开放能力,支持 MCP 的 Agent 再去调用。

所以 Skill 和 MCP 放在一起很容易理解:

Skill = 应该怎么做

MCP = 做的时候可以调用什么

一个退款 Skill 可以规定先查订单、再检查规则、最后决定是否退款;真正读取订单、执行退款的能力,则可以由外部系统通过 MCP 提供。

这两层最适合标准化,因为它们天然有跨平台复用的价值。

再往上一层,大家开始长得很像,但没有完全统一

Skill 和 MCP 都只是组件。

当 Agent 能做的事情越来越多,下一个问题自然出现了:

这些能力怎么组合起来给用户使用?

这里三家的答案已经很像,但还不是同一个标准。

OpenAI 叫 Plugin。

Claude Code 也叫 Plugin。

Gemini CLI 叫 Extension。

它们都可以把若干能力组织在一起,例如:

  • Skills
  • MCP servers
  • Hooks
  • Subagents
  • 配置和资源

但具体怎么写 manifest、怎么声明权限、怎么安装、怎么展示、生命周期怎么管理,各家还是自己的设计。

我现在反而觉得这很合理。

因为到了这一层,已经不只是技术接口,还牵涉:

产品 UI、权限、安全、Marketplace、认证、本地运行环境、用户体验。

这些正是平台希望做出差异的地方。

所以未来更可能出现的情况不是:

OpenAI、Claude、Gemini 最后连 Plugin 文件夹都长得一模一样。

而是:

里面越来越多使用共同组件,外面的组合方式仍然可以不同。

一个比较理想的结构可能是:

可迁移的核心

├── Skills

├── MCP

├── scripts

└── assets

不同平台的包装

├── OpenAI Plugin

├── Claude Plugin

└── Gemini Extension

底下尽量共用,上面薄薄适配一层。

AGENTS.md / CLAUDE.md / GEMINI.md 也不只是名字不同

这三个文件都在解决一个很现实的问题:

有些项目规则,不应该每次开新 session 都重新告诉 AI。

例如:

  • repo 怎么运行
  • 测试命令是什么
  • 哪些目录不能动
  • coding conventions
  • review 时重点检查什么

Codex 使用 AGENTS.md,Claude Code 使用 CLAUDE.md,Gemini CLI 使用 GEMINI.md。

但它们的区别不只是文件名。

不同 Agent 对这些文件:

  • 从哪里开始读取
  • 子目录规则怎么继承
  • 哪个规则优先
  • 是否支持 import
  • 什么时候动态加载

都有自己的机制。

所以真正值得统一的不是“大家最后都把文件改名叫 AGENT.md”。

文件名一样没有太大意义。

更有价值的是:项目规则能不能尽量被不同 Agent 复用,而不用维护三份慢慢漂移的副本。

Hooks 和 Subagents 又属于另一种情况

这两个概念三家也越来越常见,但目前更接近共同的设计模式,而不是统一标准。

Hooks

解决的是:

某个事件发生时,有什么动作必须执行。

例如:

代码修改后自动 formatter;提交前必须跑 security check。

这里尤其适合放那些不应该交给模型“记得就做”的事情。

Subagents

解决的是:

一个任务太大时,怎么把其中一部分交给更专门的 Agent。

例如主 Agent 负责整个开发任务,同时把代码搜索、测试、研究分别交给不同 subagent。

三家的基本思路越来越接近,但配置、权限、context 和调度方式仍然不同。

所以这里不是“统一标准”,而是:

大家面对同一个 Agent 工程问题,自然走到了相似的设计模式。

为什么有些东西会统一,有些不会?

研究到这里,我觉得背后的规律其实挺清楚。

如果一个东西需要被很多不同系统共同使用,标准化的价值就很大。

比如:

“怎么描述一套 AI 工作方法?”→ Skill

“AI 怎么和外部工具通信?”→ MCP

如果不统一,每个 Builder 都要为每个平台重新做一遍。

但到了:

“这些能力在我的产品里怎么组合、怎么展示、怎么授权?”

这已经进入产品设计。

这里保持差异,反而有价值。

所以我现在会把整个 Agent 生态粗略看成两层:

更值得标准化的底层组件

  • Skill:方法
  • MCP:工具和数据连接

可以保持差异的上层编排

  • Plugin / Extension:怎么打包
  • Project instructions:怎么管理长期上下文
  • Hooks:怎么管理生命周期
  • Subagents:怎么做任务编排
  • UI / Workspace:最终怎么给人使用

边界当然还会继续变化,但这个方向已经比较明显。

对 Builder 来说,我觉得这件事真正有用的地方

不是终于记住了六个新名词。

而是做自己的东西时,可以开始有意识地区分:

核心能力,尽量放在可迁移的地方

自己积累的方法,可以优先整理成标准 Skill。

需要给 AI 提供外部工具,如果适合,可以优先考虑 MCP。

这样未来换模型、换 Agent,核心东西还在。

平台相关的部分,尽量做薄

如果只是为了适配 Codex、Claude Code 或 Gemini CLI 的安装方式,不需要把真正的产品逻辑都写死在这一层。

平台变化很快,包装可以重新做。

不要把所有事情都交给模型判断

需要经验和判断的:

→ Skill + Model

必须稳定发生的:

→ scripts / hooks

需要外部能力的:

→ MCP

需要分工的:

→ subagents

这一层边界想清楚,比选哪家 Agent 更重要。

所以这次研究下来,我对 Builder 最实际的提醒是:

尽量让自己真正积累的东西,不依赖某一家 AI 产品才能存在。

模型会换,Agent 会换,Plugin 的格式也可能继续变。

但你的方法、知识、工具和工作流程,如果一开始就尽可能放在可迁移的层里,换一个宿主,可能只需要重新接外面那一层。