在 AI Agent(智能体)的生态演进中,"Skill(技能)"是连接大模型大脑与现实世界执行端的桥梁。虽然三者都叫 Skill,但在 Anthropic (Claude)、Google 以及 Solon AI 的体系中,其底层哲学、表现形式与落地逻辑却截然不同。
以下是对这三种"能力观"的深度分析。
1. Claude Code Skills:文档即能力 (Doc-as-Power)
Claude Code 是针对开发场景深度优化的 Agent,其 Skills 设计遵循的是**"教化式"**逻辑。
- 核心定义: 它是通过 Markdown 文档 描述的。
- 封装形式: 一个包含
SKILL.md的独立文件夹。 - 业务域表达: 通过 Markdown 文档 进行语义隔离。文档内定义了业务规则、操作模式及约束。
- 核心哲学: 文档即能力。开发者不需要编写复杂的逻辑代码,而是编写"规则书"。模型通过阅读 MD 文件中的 YAML 元数据和正文,将这些规则动态注入到它的推理上下文中,从而获得在该业务域内的行为准则。
- 执行逻辑: 这种能力是 外挂式 的。Claude 作为一个推理引擎,并不直接持有工具的二进制代码。它通过理解文档发出"我想调用这个工具"的指令,真正的执行是由宿主环境(如本地终端、CLI 工具)根据指令去操作。
- 渐进式加载:Claude 不会一开始就读完所有 SKILL.md,而是根据描述进行检索,这正是"文档即能力"的高级表现------节约上下文(Context Window)。
- 应用场景: 自动化编程与运维。 当你需要 AI 帮你重构代码或扫描文件系统时,你只需要给它一份 Markdown 描述,告诉它哪些命令是安全的,它就能像一个熟练的初级程序员一样开始工作。
Claude Code 运维技能简单示例:server_ops/SKILL.md
# Server Operations Skill
## 描述
用于监控服务器状态及重启服务的核心运维工具。
## 注意事项
1. **非必要不重启**:仅在服务状态为 `CRITICAL` 且重试无效时执行重启。
2. **审计要求**:所有操作必须记录目标服务器 IP。
## 工具定义
* `get_status(ip)`: 获取服务器 CPU/内存及服务状态。
* `restart_service(ip, svc_name)`: 重启指定服务。**高风险:需用户确认**。
## 业务规范
- 执行 `restart_service` 前必须先调用 `get_status` 确认故障。
- 如果 CPU 占用 > 90%,优先报告异常而非重启。
2. Google A2A Skills:能力的名片 (Capability-as-Identity)
Google 在 Agent-to-Agent (A2A) 协作协议中,将 Skills 定义为一种 "外交式" 的声明。
- 核心定义: 它是表述自己的可执行能力,但 不能直接执行。
- 封装形式: 称为 Agent Card 的 JSON 元数据描述。
- 业务域表达: 通过 **名片/元数据 **对外宣称自己。它描述了自己"是谁"以及"能处理哪些业务域"。
- 核心哲学: 名片即入口,但不能直接执行。Google A2A 的 Skill 是一种"能力宣誓"。它告诉别的 Agent:"我这里有库存管理的能力"。当你(调用方)需要执行任务时,必须通过网络协议向我发起"任务委派(Task Delegation)"。
- 执行逻辑: 这是一种 发现协议(Discovery Protocol)。名片本身不包含执行逻辑。一个 Agent 向另一个 Agent 亮出名片后,调用者需要跨越网络、遵循协议向对方发起请求,由对方在远端闭环执行。
- 应用场景: 跨平台/跨组织协作。 比如你的个人助理 Agent 需要订餐,它会自动查阅"黄页",发现某个餐厅 Agent 亮出了"订座 Skill"的名片,于是两者发起对话完成协作。这解决了在大规模 AI 网络中"谁能干什么"的社会化问题。
"MCP"与"A2A"的微妙联系
"A2A 与 MCP (Model Context Protocol) 互补:MCP 解决的是模型与工具的本地连接,而 A2A 解决的是模型与远程 Agent 的外交辞令。" 这样能帮助读者理清这两套都由 Google 深度参与的协议之间的位置。
Google A2A 机票代理技能示例(Java 描述版)
java
// 使用官方 SDK 构建 Agent Card
AgentCard agentCard = AgentCard.builder()
.name("FlightBookingAgent")
.description("专业机票代理,支持搜索航班与订票任务委派")
.skill(Skill.builder()
.name("search_flight")
.description("根据日期和目的地搜索航班")
.inputSchema(Schema.builder()
.type(Type.OBJECT)
.property("destination", Schema.ofString("目的城市"))
.required("destination")
.build())
.build())
.build();
3. Solon AI Skills:代码即能力 (Code-as-Power)
Solon AI 作为深耕 Java 生态的工程化框架,其 Skills 体系回归到了**"原生式"**的组件化设计。
- 核心定义: 它是通过 代码描述的(即一个类)。
- 封装形式: 一个 Java 类 (Skill 类)。
- 业务域表达: 通过 **代码实体 (Class) ** 封装整个业务域。一个 Skill 类就是一个领域服务(Domain Service)的 AI 适配层。它不仅有指令描述,还有直接操作数据库、调用微服务的原生能力。
- 核心哲学: 代码即能力。模型不仅仅是"读到"了说明书,而是直接"持有"了这个能力的引用。这种封装是强类型的、原子化的,且具备完整的生命周期管理(如 onAttach)。
- 执行逻辑: 这种能力是 原子化 注入的。模型不仅仅是"知道"这个技能,而是通过框架的 IoC(控制反转)直接**"持有"**了这个类。它驻留在当前应用的 JVM 进程中,模型调用技能就像是在调用本地函数,零延迟、强类型。
- 动态按需加载:在对话开始前,框架会像安检员一样快速扫描所有注册的 Skill。只有当用户意图、权限或当前上下文与该 Skill 匹配时,它才会被"激活"并挂载到模型上
- 应用场景: 企业级业务集成。 比如构建一个企业内部的"智能财务助理",它需要直接调用 ERP 系统的接口、操作数据库并遵循本地的安全审计逻辑。Solon AI 的 Skill 让 AI 真正成为了业务代码的一部分。
"强类型"特点
不同于其他方案在运行时才拼凑参数,Solon AI 的 Skill 在编译阶段就由 Java 类型系统(Type System)守护,这为企业级 AI 应用提供了极其珍贵的'确定性'。
Solon AI Skill 简单示例:库存业务域封装
通过 InventorySkill 类,我们将"查询、锁定、核销"这一组库存业务域操作,封装成一个具备"指令增强"和"工具集合"的能力单元。
java
/**
* 库存业务域技能:封装了完整的仓配逻辑
*/
@Component
public class InventorySkill extends AbsSkill {
@Override
public String name() {
return "inventory_domain_expert";
}
@Override
public String description() {
return "负责库存查询、锁定与核销。拥有对 WMS 系统的直接访问权限。";
}
@Override
public String getInstruction(Prompt prompt) {
// 动态指令注入:为 AI 划定该业务域的操作红线
return "### 库存操作规范\n" +
"1. 涉及库存核销前,必须先调用 search 确认余量。\n" +
"2. 所有锁定操作必须包含 order_id,否则将触发审计失败。\n" +
"3. 若库存低于 5 件,请主动提醒用户补充。";
}
@ToolMapping(description = "根据 SKU ID 查询实时库存")
public int search(@Param("sku_id") String skuId) {
// 原生代码执行能力:直接调用 Service 层
return inventoryService.getAvailableStock(skuId);
}
@ToolMapping(description = "锁定库存以防止超卖")
public boolean lock(@Param("sku_id") String skuId, @Param("count") int count) {
return inventoryService.lockStock(skuId, count);
}
......
}
深度对比总结
| 维度 | Claude Code Skills | Google A2A Skills | Solon AI Skills |
|---|---|---|---|
| 载体 | Markdown / 文本文档 | JSON Schema / 元数据 | Java 类 (代码实体) |
| 隐喻 | 工具说明书 | 职业名片 | 原生插件/肌肉 |
| 使用者 | 宿主环境 (CLI/OS) | 远端 Agent / 外部服务 | 当前 JVM 进程 |
| 核心优势 | 极高的灵活性、零门槛扩展 | 强大的生态互操作性、解耦 | 极致的工程确定性、高性能 |
| 核心哲学 | 教化:让模型变聪明 | 外交:让模型懂协作 | 工程:让模型进系统 |
结语
- Claude Code 的 Skills 解决了"人如何告诉 AI 怎么干活"的问题。
- Google A2A 的 Skills 解决了"AI 如何在森林里找专家"的问题。
- Solon AI 的 Skills 解决了"AI 如何在业务系统里作为核心逻辑稳定运行"的问题。