目录
-
- [1. 引言:一串被新名词割裂的认知](#1. 引言:一串被新名词割裂的认知)
- [2. LLM:一颗强大的"大脑"](#2. LLM:一颗强大的"大脑")
-
- [2.1 LLM 的本质](#2.1 LLM 的本质)
- [2.2 LLM 的三个关键局限](#2.2 LLM 的三个关键局限)
- [3. Agent:给大脑接上"身体"](#3. Agent:给大脑接上"身体")
-
- [3.1 什么是 Agent](#3.1 什么是 Agent)
- [3.2 核心机制:ReAct 循环](#3.2 核心机制:ReAct 循环)
- [4. Skill:把能力封装成"技能包"](#4. Skill:把能力封装成"技能包")
-
- [4.1 什么是 Skill](#4.1 什么是 Skill)
- [4.2 一个 Skill 的示例](#4.2 一个 Skill 的示例)
- [4.3 Skill 解决了什么](#4.3 Skill 解决了什么)
- [5. 三者如何串联:一张完整的认知地图](#5. 三者如何串联:一张完整的认知地图)
- [6. 从概念到实践:一个完整的最小示例](#6. 从概念到实践:一个完整的最小示例)
- [7. 小结](#7. 小结)
1. 引言:一串被新名词割裂的认知
过去两年,AI 领域的新词层出不穷:先是 LLM(大语言模型) ,然后是 Agent(智能体) ,再到现在频繁出现的 Skill(技能)。很多同学每学一个概念都觉得"懂了",但把三个词放在一起时,反而说不清它们之间到底什么关系。
这篇文章想做的事情很简单:用一条主线把 LLM、Agent、Skill 串起来,讲清楚每个概念解决什么问题、为什么会出现下一个概念、以及它们如何协同工作。读完你会获得一张可以长期使用的认知地图,而不是三个孤立的术语。
文章按照"为什么会出现下一个概念"的顺序展开,建议这样阅读:
- 第 2 章先认识 LLM:它擅长什么,又缺什么;
- 第 3 章看 Agent 如何补齐 LLM 的短板,让大脑拥有身体;
- 第 4 章学习 Skill 如何把能力封装起来,让 Agent 更稳定、可复用;
- 第 5 章用一张图把三者关系串成完整的认知地图;
- 第 6 章用一个最小示例,把概念落到可运行的代码里。
这里有一条隐藏的逻辑链:前者推动后者出现,后者弥补前者短板。抓住这条因果链,远比记住三个名词更有价值。
2. LLM:一颗强大的"大脑"
2.1 LLM 的本质
LLM(Large Language Model,大语言模型)本质上是一个在海量文本上训练的概率模型 :给定上文,预测下一个 token。Token 是模型处理文本的最小单位,可以近似理解为一个字、一个词或一个子词;所谓"大",既指参数量大,也指训练数据规模大。
它的核心能力可以概括为三类:
- 语言理解:总结、翻译、分类、抽取信息;
- 语言生成:写作、对话、改写、代码补全;
- 上下文学习(In-Context Learning):不做梯度更新,仅靠 prompt 里的示例就能完成新任务。
一个容易困惑的问题是:"预测下一个词"这种看起来机械的任务,为什么能产生智能? 原因是,自然语言本身携带了人类的大量知识与推理结构;模型为了更准确地预测下一个 token,被迫学会了语法、事实、逻辑乃至一定程度的常识。这也是为什么同一个模型既能写诗,也能写代码。
这三类能力共同构成了 LLM 的价值基础。但理解 LLM 不能只看它能做什么,更要看它缺什么。
2.2 LLM 的三个关键局限
先看一张对比表:
| 局限 | 具体表现 | 典型场景 |
|---|---|---|
| 知识静态 | 训练数据有截止时间,无法获取最新信息 | 问"今天股价多少"只能编造 |
| 无行动能力 | 只能输出文本,不能操作外部世界 | 不能真正帮你订机票、查数据库 |
| 推理受限 | 复杂多步任务容易出错、幻觉 | 多位数运算、长链路规划 |
这三点值得分别展开理解:
知识静态 :LLM 的"知识"来自训练它时的那批数据。如果数据截止到某一天,那它就无法可靠回答之后发生的事情。业界用 RAG(检索增强生成) 等方式来补这个短板,其核心思路就是"让模型现用现查",而不是把所有知识都塞进参数里。
无行动能力:LLM 只会输出一串文本,"帮你订机票"这件事它无法真正完成。它最多只能告诉你"我建议你打开 App 自己下单"。要让它真的操作外部世界,就必须给它接入工具、API 或代码执行环境------这正好是 Agent 要做的事。
推理受限:模型在单次生成里"一次成文",对于需要多步推导的问题很容易在中途出错。例如长链路的数学运算或项目规划,如果不让模型分步思考、反复验证,它的错误会不断累积。这也需要一套"思考---执行---观察"的机制来约束它。
这三个局限并不是 LLM 的失败,而是它作为一种"纯文本预测器"的天然边界。它们正好是 Agent 出现的直接原因。
3. Agent:给大脑接上"身体"
3.1 什么是 Agent
Agent(智能体)可以理解为:把 LLM 作为核心决策器,再给它加上感知、记忆、工具调用和行动能力,形成一个可以自主完成任务的系统。
一个完整的 Agent 通常包含四个组件:
- 大脑(LLM):负责理解、推理、决策;
- 工具(Tools):搜索引擎、代码执行器、数据库、API 等外部能力;
- 记忆(Memory):短期上下文 + 长期知识存储;
- 规划(Planning):把大任务拆解成可执行的步骤。
这里最容易混淆的是记忆 和规划,可以再多说两句:
- 记忆通常分三层:当前对话的上下文(短期记忆)、跨会话的用户偏好与事实(长期记忆)、以及工具执行过程中产生的中间结果(工作记忆)。没有记忆的 Agent 会"失忆",每次都从零开始。
- 规划是 Agent 的核心价值之一:人类下指令往往只说目标,不列步骤。Agent 需要自己把"写一份行业报告"拆成"搜索资料---提炼观点---生成大纲---写正文---检查修改"等子任务,再逐个执行。
它们之间的关系如下:
#mermaid-svg-OJqkhKlfcR1arzOA{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-OJqkhKlfcR1arzOA .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-OJqkhKlfcR1arzOA .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-OJqkhKlfcR1arzOA .error-icon{fill:#552222;}#mermaid-svg-OJqkhKlfcR1arzOA .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-OJqkhKlfcR1arzOA .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-OJqkhKlfcR1arzOA .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-OJqkhKlfcR1arzOA .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-OJqkhKlfcR1arzOA .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-OJqkhKlfcR1arzOA .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-OJqkhKlfcR1arzOA .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-OJqkhKlfcR1arzOA .marker{fill:#333333;stroke:#333333;}#mermaid-svg-OJqkhKlfcR1arzOA .marker.cross{stroke:#333333;}#mermaid-svg-OJqkhKlfcR1arzOA svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-OJqkhKlfcR1arzOA p{margin:0;}#mermaid-svg-OJqkhKlfcR1arzOA .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-OJqkhKlfcR1arzOA .cluster-label text{fill:#333;}#mermaid-svg-OJqkhKlfcR1arzOA .cluster-label span{color:#333;}#mermaid-svg-OJqkhKlfcR1arzOA .cluster-label span p{background-color:transparent;}#mermaid-svg-OJqkhKlfcR1arzOA .label text,#mermaid-svg-OJqkhKlfcR1arzOA span{fill:#333;color:#333;}#mermaid-svg-OJqkhKlfcR1arzOA .node rect,#mermaid-svg-OJqkhKlfcR1arzOA .node circle,#mermaid-svg-OJqkhKlfcR1arzOA .node ellipse,#mermaid-svg-OJqkhKlfcR1arzOA .node polygon,#mermaid-svg-OJqkhKlfcR1arzOA .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-OJqkhKlfcR1arzOA .rough-node .label text,#mermaid-svg-OJqkhKlfcR1arzOA .node .label text,#mermaid-svg-OJqkhKlfcR1arzOA .image-shape .label,#mermaid-svg-OJqkhKlfcR1arzOA .icon-shape .label{text-anchor:middle;}#mermaid-svg-OJqkhKlfcR1arzOA .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-OJqkhKlfcR1arzOA .rough-node .label,#mermaid-svg-OJqkhKlfcR1arzOA .node .label,#mermaid-svg-OJqkhKlfcR1arzOA .image-shape .label,#mermaid-svg-OJqkhKlfcR1arzOA .icon-shape .label{text-align:center;}#mermaid-svg-OJqkhKlfcR1arzOA .node.clickable{cursor:pointer;}#mermaid-svg-OJqkhKlfcR1arzOA .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-OJqkhKlfcR1arzOA .arrowheadPath{fill:#333333;}#mermaid-svg-OJqkhKlfcR1arzOA .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-OJqkhKlfcR1arzOA .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-OJqkhKlfcR1arzOA .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-OJqkhKlfcR1arzOA .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-OJqkhKlfcR1arzOA .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-OJqkhKlfcR1arzOA .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-OJqkhKlfcR1arzOA .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-OJqkhKlfcR1arzOA .cluster text{fill:#333;}#mermaid-svg-OJqkhKlfcR1arzOA .cluster span{color:#333;}#mermaid-svg-OJqkhKlfcR1arzOA div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-OJqkhKlfcR1arzOA .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-OJqkhKlfcR1arzOA rect.text{fill:none;stroke-width:0;}#mermaid-svg-OJqkhKlfcR1arzOA .icon-shape,#mermaid-svg-OJqkhKlfcR1arzOA .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-OJqkhKlfcR1arzOA .icon-shape p,#mermaid-svg-OJqkhKlfcR1arzOA .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-OJqkhKlfcR1arzOA .icon-shape .label rect,#mermaid-svg-OJqkhKlfcR1arzOA .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-OJqkhKlfcR1arzOA .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-OJqkhKlfcR1arzOA .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-OJqkhKlfcR1arzOA :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 用户任务
Agent
LLM 大脑
理解与决策
规划
拆解步骤
工具调用
执行行动
记忆
记录结果
返回结果
可以看到,Agent 不是"另一个更聪明的模型",而是一套以 LLM 为中心的工程系统。模型负责"聪明",工程负责"能干活"。
3.2 核心机制:ReAct 循环
Agent 最常见的运行模式是 ReAct(Reasoning + Acting),即"思考一步、行动一步、观察结果、再思考"的循环。这个循环可以拆成四个阶段:
- Thought(思考):LLM 分析当前任务和已知信息,决定下一步做什么;
- Action(行动):LLM 选择一个工具并给出调用参数;
- Observation(观察):工具执行后,把结果写回上下文;
- 重复直到完成:如果结果足够回答,就生成最终答案;否则带着新的观察继续思考。
这个机制解决了 LLM "一次成文"不可靠的问题:它把复杂任务变成一连串小步骤,每一步都有新的信息输入来修正方向。下面是一个精简的 Python 示例:
python
class SimpleAgent:
def __init__(self, llm, tools):
self.llm = llm
self.tools = tools # {"search": search_func, "calc": calc_func}
self.history = []
def run(self, task):
self.history.append({"role": "user", "content": task})
for _ in range(10): # 最多循环 10 轮
response = self.llm.chat(self.history)
action = self.parse_action(response)
if action["type"] == "final_answer":
return action["content"]
tool_name = action["tool"]
result = self.tools[tool_name](action["input"])
self.history.append({"role": "assistant", "content": response})
self.history.append({"role": "tool", "content": str(result)})
return "达到最大循环次数"
在这个例子里,history 就是 Agent 的"工作记忆",每一步的工具结果都会被追加进去,保证 LLM 在下一轮思考时能看到最新信息。真实框架中的循环还会加入超时、错误重试、人工确认等保护机制。
Agent 的价值在于:它把 LLM 从"只会说"变成了"能做"。但 Agent 本身也有问题------每个 Agent 的能力往往是一次性的、难以复用。于是 Skill 登场了。
4. Skill:把能力封装成"技能包"
4.1 什么是 Skill
Skill(技能)是对某一类可复用能力的标准化封装。可以把它类比为编程里的"函数"或"库":把实现细节藏起来,只暴露清晰的输入输出接口,让 Agent 按需调用。
Skill 和普通 API 的区别在于:它不是简单的"输入---输出"函数,而是带有语义描述的能力单元。描述的作用是让 LLM 判断"什么时候该用这个技能、应该传什么参数"------这一点对 Agent 至关重要,因为 Agent 是在运行时才动态决定调用哪些工具的。
一个 Skill 通常包含以下要素:
- 名称与描述:告诉 Agent 这个技能是干什么的、什么时候用;
- 输入参数:明确定义需要什么数据;
- 执行逻辑:具体的实现过程;
- 输出格式:返回什么样的结果。
好的 Skill 设计还遵循两个原则:单一职责 (一个 Skill 只做好一件事)和描述清晰(让 LLM 不看代码也能正确调用)。这两点会直接影响 Agent 的执行成功率。
4.2 一个 Skill 的示例
以"查询天气"为例,一个典型的 Skill 定义如下:
python
class WeatherSkill:
name = "get_weather"
description = "查询指定城市的实时天气,需要城市名称作为输入"
def __init__(self, api_key):
self.api_key = api_key
def run(self, city: str) -> dict:
# 调用天气 API 并返回结果
response = call_weather_api(self.api_key, city)
return {
"city": city,
"temperature": response["temp"],
"condition": response["condition"]
}
def to_tool_schema(self):
return {
"name": self.name,
"description": self.description,
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string", "description": "城市名"}
},
"required": ["city"]
}
}
这个例子里有两个关键点值得注意:
description直接告诉 LLM 技能的用途和输入要求,是 LLM 决定是否调用的依据;to_tool_schema()把技能转成标准化的工具定义,供 Agent 框架注册和调用。
也就是说,Skill 的核心不只是"能执行",更是"被模型正确理解并正确调用"。这两件事合在一起,才让它成为一个合格的可复用能力单元。
4.3 Skill 解决了什么
Skill 的出现主要解决了三个层次的问题:
- 可复用:一次封装,多个 Agent 或多个场景共用;
- 可组合:多个 Skill 可以串成更复杂的工作流;
- 可管理:权限、版本、质量可以统一治理。
举个例子:同一个"数据库查询" Skill,今天可以被"客服问答 Agent"使用,明天也可以被"数据分析 Agent"使用。如果之后需要升级数据库版本,只需要更新这个 Skill,所有依赖它的 Agent 都能同时受益。这种"一次维护、多处复用"的能力,正是 Agent 规模化落地的关键。
5. 三者如何串联:一张完整的认知地图
现在我们把三个概念放到同一张图里看:
#mermaid-svg-w9252uW5U8e8AWNX{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-w9252uW5U8e8AWNX .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-w9252uW5U8e8AWNX .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-w9252uW5U8e8AWNX .error-icon{fill:#552222;}#mermaid-svg-w9252uW5U8e8AWNX .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-w9252uW5U8e8AWNX .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-w9252uW5U8e8AWNX .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-w9252uW5U8e8AWNX .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-w9252uW5U8e8AWNX .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-w9252uW5U8e8AWNX .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-w9252uW5U8e8AWNX .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-w9252uW5U8e8AWNX .marker{fill:#333333;stroke:#333333;}#mermaid-svg-w9252uW5U8e8AWNX .marker.cross{stroke:#333333;}#mermaid-svg-w9252uW5U8e8AWNX svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-w9252uW5U8e8AWNX p{margin:0;}#mermaid-svg-w9252uW5U8e8AWNX .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-w9252uW5U8e8AWNX .cluster-label text{fill:#333;}#mermaid-svg-w9252uW5U8e8AWNX .cluster-label span{color:#333;}#mermaid-svg-w9252uW5U8e8AWNX .cluster-label span p{background-color:transparent;}#mermaid-svg-w9252uW5U8e8AWNX .label text,#mermaid-svg-w9252uW5U8e8AWNX span{fill:#333;color:#333;}#mermaid-svg-w9252uW5U8e8AWNX .node rect,#mermaid-svg-w9252uW5U8e8AWNX .node circle,#mermaid-svg-w9252uW5U8e8AWNX .node ellipse,#mermaid-svg-w9252uW5U8e8AWNX .node polygon,#mermaid-svg-w9252uW5U8e8AWNX .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-w9252uW5U8e8AWNX .rough-node .label text,#mermaid-svg-w9252uW5U8e8AWNX .node .label text,#mermaid-svg-w9252uW5U8e8AWNX .image-shape .label,#mermaid-svg-w9252uW5U8e8AWNX .icon-shape .label{text-anchor:middle;}#mermaid-svg-w9252uW5U8e8AWNX .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-w9252uW5U8e8AWNX .rough-node .label,#mermaid-svg-w9252uW5U8e8AWNX .node .label,#mermaid-svg-w9252uW5U8e8AWNX .image-shape .label,#mermaid-svg-w9252uW5U8e8AWNX .icon-shape .label{text-align:center;}#mermaid-svg-w9252uW5U8e8AWNX .node.clickable{cursor:pointer;}#mermaid-svg-w9252uW5U8e8AWNX .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-w9252uW5U8e8AWNX .arrowheadPath{fill:#333333;}#mermaid-svg-w9252uW5U8e8AWNX .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-w9252uW5U8e8AWNX .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-w9252uW5U8e8AWNX .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-w9252uW5U8e8AWNX .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-w9252uW5U8e8AWNX .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-w9252uW5U8e8AWNX .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-w9252uW5U8e8AWNX .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-w9252uW5U8e8AWNX .cluster text{fill:#333;}#mermaid-svg-w9252uW5U8e8AWNX .cluster span{color:#333;}#mermaid-svg-w9252uW5U8e8AWNX div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-w9252uW5U8e8AWNX .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-w9252uW5U8e8AWNX rect.text{fill:none;stroke-width:0;}#mermaid-svg-w9252uW5U8e8AWNX .icon-shape,#mermaid-svg-w9252uW5U8e8AWNX .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-w9252uW5U8e8AWNX .icon-shape p,#mermaid-svg-w9252uW5U8e8AWNX .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-w9252uW5U8e8AWNX .icon-shape .label rect,#mermaid-svg-w9252uW5U8e8AWNX .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-w9252uW5U8e8AWNX .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-w9252uW5U8e8AWNX .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-w9252uW5U8e8AWNX :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 返回结果
Skill 层(技能包)
搜索技能
数据库技能
代码执行技能
Agent 层(身体)
规划拆解
工具调用
记忆管理
LLM 层(大脑)
语言理解
推理决策
文本生成
一句话总结三者关系:
- LLM 提供最底层的智能,是"大脑";
- Agent 把 LLM 的智能组织成"能完成任务的系统",是"身体 + 决策流程";
- Skill 把 Agent 需要的能力做成"可插拔的模块",是"工具箱里的螺丝刀"。
为了更直观地理解,可以想象一个真实场景:用户问"帮我查一下北京明天天气,然后告诉我适不适合跑步"。
- LLM 负责理解这句话的意图,并判断"需要先查天气";
- Agent 负责规划:先调用天气 Skill,再根据结果给出建议;
- Skill 执行真正的天气查询,返回温度、风力和天气状况。
整个过程里,LLM 出智慧,Agent 出流程,Skill 出能力。三者分工不同,但缺一不可。
6. 从概念到实践:一个完整的最小示例
下面用一个"帮你查资料并总结"的场景,展示三者如何协作:
python
# 1. 定义 Skill(可复用能力)
class SearchSkill:
name = "web_search"
description = "搜索网页并返回相关结果摘要"
def run(self, query: str) -> str:
results = search_engine(query)
return summarize_results(results)
# 2. 组装 Agent(决策与行动)
agent = SimpleAgent(
llm=ChatLLM(model="gpt-4o"),
tools=[SearchSkill(), CodeRunnerSkill(), DBQuerySkill()]
)
# 3. 执行任务(LLM 在内部完成推理)
answer = agent.run("调研 2026 年 AI Agent 框架的现状,并给出对比")
print(answer)
这个例子的执行流程可以拆成三步:
- 定义 Skill :
SearchSkill封装了"搜索 + 摘要"的完整逻辑,并提供清晰的名称与描述; - 组装 Agent :把多个 Skill 注册给
SimpleAgent,由 LLM 在运行时决定调用哪个; - 执行任务:用户只给出目标,Agent 内部借助 ReAct 循环不断调用 Skill,直到生成最终答案。
在这个例子里:底层智能来自 LLM,决策流程由 Agent 组织,具体能力由 Skill 提供。三者各司其职,缺一不可。如果再给这个例子加上"把搜索到的资料存到知识库"这一步,你就能直观体会到 Skill 可组合、可复用的价值------新增一个"入库" Skill,Agent 的能力就能立刻扩展。
7. 小结
理解 AI 底层概念,关键在于看到它们之间的因果关系:
- 因为 LLM 有"无行动能力"的局限,所以需要 Agent;
- 因为 Agent 的能力"难以复用和治理",所以需要 Skill;
- 因为 Skill 让能力标准化,Agent 才能规模化地解决真实问题。
下次再看到新术语时,不妨问自己一个问题:它补上了前一个概念的什么短板? 这个思考习惯,会让你在快速演进的 AI 领域始终保持清醒。
如果再往前走一步,你还可以关注三个延伸方向:
- 多 Agent 协作:当单个 Agent 不够用时,多个 Agent 如何分工协调;
- Skill 生态:如何设计一套可共享、可交易的 Skill 标准,让能力像软件包一样流通;
- 评估与安全:当 Agent 拥有行动能力后,如何确保它不被误用、如何评估它的可靠性。
这些话题,都是"LLM → Agent → Skill"这条主线自然延伸出来的下一站。掌握今天这张地图,你就能更从容地继续往前走。