第十四章 Skill:为什么 Agent 可以拥有专业技能?
目录
零基础认识大语言模型(LLM)工作原理目录 - GuZhenYin - 博客园
本章导读
上一章,我们介绍了 Memory。
Memory 解决的是:AI 如何记住信息。
但是,仅仅拥有记忆,还不足以让 AI 成为真正的专业助手。
例如,一个刚毕业的程序员,即使记住了很多知识,也未必能够独立完成复杂的软件开发。
原因在于:知识(Knowledge)并不等于技能(Skill)。
同样,对于 Agent 来说,仅仅拥有大模型、Memory 和 Tool,还不足以解决复杂的专业任务。
它还需要具备一种更高层次的能力------Skill(技能)。
14.1 从知识到技能
举个生活中的例子
假设有两个人
第一位:刚刚考过驾照。
他知道:
- 红灯停车;
- 绿灯通行;
- 如何倒车;
- 如何并线。
这些都是知识。
第二位:是一位开了十年的出租车司机。
面对复杂路况,他却知道:
什么时候提前变道;
什么时候绕开拥堵;
什么时候选择另一条路线。
这些就是技能。
可以发现:技能,并不是简单地拥有更多知识,而是知道如何综合运用这些知识去完成目标。
对于 AI 来说,也是一样。
LLM 拥有大量知识。
但是,
如何完成 Java Code Review?
如何分析数据库性能?
如何完成需求拆解?
这些并不是模型天然就会的。
它们需要被组织起来。
14.2 Skill 到底是什么?
很多文章把 Skill 理解成:一个 Prompt。
这是早期 Agent 框架的做法。
例如:
你是一位 Java 专家......
请按照以下格式回答......
然后保存起来,以后重复使用。
这就是早期所谓的 Skill。
但是今天来看,这种定义已经过时了。
在最新的现代 Agent 中,一个 Skill 通常包含:
Skill
├── Role(角色)
├── Prompt(提示词)
├── Tool(工具)
├── Workflow(执行流程)
├── Memory(知识)
└── Output(输出规范)
也就是说Skill 成为了一种完成特定任务的能力封装,而不是一段提示词。
14.3 为什么需要 Skill?
来看一个例子。
用户输入:帮我 Review 这段 Java 代码。
如果没有 Skill。
模型只能根据当前 Prompt 回答。
而Java Review Skill:
则可能会自动完成:
读取代码
↓
分析代码规范
↓
检查空指针
↓
检查 SQL
↓
检查事务
↓
检查异常处理
↓
生成 Review 报告
用户看到的还是一句话。
但是Agent 已经调用了一整套能力。
14.4 Skill 与 Tool 有什么区别?
这是很多同学也容易混淆的问题。
Tool回答的是:我能做什么?
例如:
- 查询数据库;
- 执行 Python;
- 打开浏览器。
Skill回答的是:为了完成某件事情,我应该怎么做?
例如:
Code Review。
它可能需要:
- Git Tool;
- File Tool;
- Search Tool;
- Terminal Tool;
多个 Tool。
因此Skill不是 Tool。
而是Tool 的组织者。
14.5 Skill 与 Workflow 又有什么区别?
Workflow强调流程。
例如:审批->报销->通知
每一步都提前定义。
Skill则强调能力。
例如,SQL 优化、代码开发、需求分析。
很多步骤其实需要模型自己决定。
因此Workflow解决的是流程固定 问题**。**
Skill则解决的是专业能力复用 问题**。**
14.6 Skill 为什么越来越重要?
随着 Tool 数量越来越多,一个新的问题出现了。
假设一个Agent 拥有300个tool
那么,模型的每一次推理。
是不是都要阅读 300 个 Tool Description(工具说明)?
答案当然是:不是。
因为如果这样,Prompt 会越来越长。
推理就会越来越慢。
准确率则会越来越低。
于是,现代 Agent 开始采用Skill 作为能力入口。
例如:Java Skill。
里面再包含几十个 Tool。
模型不用知道全部 Tool。
只需要知道有Java Skill。
14.7 新一代 Skill:渐进式披露(Progressive Disclosure)
这是近期 Skill 设计最大的变化。
早期 Agent 的做法是:
启动时,把所有 Prompt,所有 Tool全部发送给模型。
例如:
Prompt+300 个 Tool+全部说明
↓
LLM
这样虽然简单,但有三个明显问题:
第一,上下文窗口被大量占用。很多 Token 都花在了工具说明上,而不是用户真正的问题。
第二,模型选择工具的难度越来越高。当几十甚至上百个工具同时出现时,模型容易误选,推理成本也随之增加。
第三,新增一个 Skill,就需要修改总 Prompt。系统规模越大,维护越困难。
因此,新一代 Agent 普遍采用了渐进式披露(Progressive Disclosure)。
它的思想非常简单:第一次,只告诉模型"有哪些能力";真正需要时,再展开具体细节。
例如:
最开始,模型看到的只是:
可用 Skill:
- Java 开发
- Python 数据分析
- 数据库运维
- 文档写作
如果模型判断:当前任务属于 Java 开发。
Runtime 才会继续加载:
Java Skill
↓
Prompt
↓
Workflow
↓
Tool List
↓
Memory
最后才开始真正执行。
整个过程如下:
用户请求
↓
LLM 判断需要哪个 Skill
↓
加载该 Skill
↓
继续推理
↓
如果需要 Tool
↓
继续加载 Tool 描述
↓
执行 Tool
↓
继续推理
请注意,这里有一个关键思想:不是所有能力都需要提前暴露给模型,而是在需要的时候逐步揭示。
这就是所谓的"渐进式披露"。
14.8 为什么渐进式披露如此重要?
如果把 Agent 比作一位工程师。
传统方式相当于我们每天上班,就要先阅读500 页员工手册,然后才开始工作。
但是渐进式披露则更像,
我如果需要写 SQL。
才打开数据库文档。
需要写 Java。
才打开 Java 文档。
这样工作效率更高。
模型其实也是一样。
14.9 OpenClaw 与 Claude Code 的 Skill 思想
虽然不同产品实现方式不同,但近年来都逐渐体现出相同的设计趋势:
- Skill 不再只是 Prompt;
- Skill 成为能力的组织单元;
- 按需加载,而不是一次性加载全部能力;
- 通过 Runtime 动态决定需要暴露哪些能力。
以 OpenClaw 为例,一个 Skill 可以组织 Prompt、Tool、Memory 等资源;而在 Claude Code 一类面向开发的 Agent 中,也会根据当前开发任务动态加载不同能力,而不是把所有开发规则一次性交给模型。
这说明,Skill 正在从"提示词模板"演变为 Agent 的能力管理机制。
14.10 一个相对完整的 Agent 架构
到这里,我们终于可以把前几章串起来了。
用户目标
│
▼
Agent Runtime
│
┌───────────┼───────────┐
▼ ▼ ▼
Memory Workflow Skill Router
│
选择合适的 Skill
│
▼
Skill
┌──────┼──────┐
▼ ▼ ▼
Prompt Tool Memory
│
▼
LLM
我们可以看到,Skill 并不是替代 Prompt、Tool 或 Memory,而是把它们组织成一个可复用、可管理、可按需加载的能力模块。
本章总结
这一章,我们回答了五个关键问题:
- Skill 是什么?
- 它不是一段 Prompt,而是一种完成特定任务的能力封装。
- Skill 与 Tool 的区别?
- Tool 提供单一能力,Skill 组织多个能力完成目标。
- Skill 与 Workflow 的区别?
- Workflow 管流程,Skill 管专业能力。
- 什么是渐进式披露(Progressive Disclosure)?
- 不一次性暴露所有能力,而是在运行过程中按需加载 Skill、Prompt 和 Tool。
- 为什么这是新一代 Agent 的趋势?
- 它减少上下文占用、降低模型决策复杂度、提高系统可扩展性,也是大型 Agent 系统走向工程化的重要标志。