AI Agent 工程实践(07):AI Agent 为什么需要 Skills,而不是 Prompt?
发布时间:2026-07-11
标签:AI Agent|LLM|Skills|Prompt|概念辨析|工程实践
系列导航
上一篇:AI Agent 工程实践(06):Knowledge 如何演化成 Rules?
下一篇:AI Agent 工程实践(08):Workflow——什么时候应该拆成 Multi-Agent?
本文是 [AI Agent 工程实践] 系列的第 07 篇。
带新人第一次写 Agent,我让他"把审查逻辑写进系统"。
他回了我一个 2000 字的 system prompt——把每一步该做什么全写进去了。
我问他:"那下次要做测试呢?再写 2000 字?"
他愣了:"Prompt 不就是 Agent 吗?"
那一刻我意识到,太多人把 Prompt 和 Agent 画了等号。他们以为"会写 prompt"就等于"会做 Agent"。
其实 Prompt 只是 Agent 最小的一个零件。真正的 Agent,是 Prompt、Skill、Rule、Workflow、Memory 共同组装出来的——而 Skill,是其中最容易被人忽略、却最该被重视的那块。
本文你将学到
✓ 为什么"Prompt = Agent"是个危险误解
✓ Prompt / Skill / Rule / Workflow / Memory / Agent 六个概念各自的边界
✓ Skill 和 Prompt、Rule、Workflow 到底差在哪
✓ 什么时候该用 Prompt,什么时候该抽成 Skill
适合阅读
✓ 刚接触 Agent 开发、被一堆名词绕晕的新人
✓ 用 Claude Code / Cursor / Coze / Dify 但混淆概念的人
✓ 想系统理解 AI Engineering OS 各层"分别是什么"的人
问题背景
前 6 篇把系统的每一层都拆开了讲。但还有一个更基础的混乱没解决:这些名词到底指什么、边界在哪。
我看到的现象是,新人(包括半年前的我)习惯用一个词概括一切:
- 把 system prompt 当 Agent
- 把"很长的 prompt"当 Skill
- 把"一堆规则"当 Workflow
- 把"存了点东西"当 Memory
这种混淆不是文字游戏——它直接导致架构设计错误:该抽 Skill 的塞进 Prompt,该固化成 Rule 的写在 Workflow 里,该持久化的放进会话变量。
一句话:分不清概念,就搭不对系统。 这一篇把六个最容易混的概念,一次性厘清。
错误尝试
第一次:一切靠 Prompt
最初我做 Agent,所有能力都塞进一个超长 system prompt:审查逻辑、测试规范、风格要求……全写进去。
结果:和第 02 篇说的一样——prompt 爆炸、不同任务互相干扰、关键约束被淹没。把"所有能力"压进"一句话里",等于没有能力分层。
第二次:以为 Skill = 更长的 Prompt
吸取教训,那我把 prompt "封装"成 Skill——其实就是把那段 2000 字单独存成文件,调用时整段塞回去。
结果:本质没变。它只是"更长的 prompt",没有触发条件、没有输入输出契约、不能被其它 Skill 组合、不能按需加载。它没理解 Skill 是"可复用能力单元",而不是"更长的文字"。
两次尝试指向同一个教训:Prompt 是一次性指令,Skill 是可复用能力——把前者当后者,就是把"一句话"当"一家公司"。
关键观察
我把六个概念按"解决的问题"做了一次归位,差异立刻清晰:
| 概念 | 它解决什么 | 生命周期 | 粒度 | 例子 |
|---|---|---|---|---|
| Prompt | 这次怎么干(一次性指令) | 单次对话 | 一句话/一段 | "把这个函改成异步" |
| Rule | 必须/不得做什么(约束) | 跨任务常驻 | 约束 | "修改前先 Read 原内容" |
| Skill | 能做什么(可复用能力) | 按需加载 | 能力单元 | "代码审查 skill" |
| Workflow | 多步怎么编排(流程) | 任务级 | 流程 | "需求→设计→实现→测试" |
| Memory | 记住什么(状态) | 会话/长期 | 数据 | 用户偏好、项目约定 |
| Agent | 谁在执行(主体) | 系统级 | 角色 | Claude Code / Hermes |

pie title 新人把"Prompt"误当的概念占比
"以为 Prompt=Agent" : 40
"以为长 Prompt=Skill" : 30
"以为规则堆=Workflow" : 20
"其它" : 10
Prompt 是一次性指令,Skill 是可复用能力——把前者当后者,就是把"一句话"当"一家公司"。
六个概念不是同义词,是不同层级的零件,各自有边界、有生命周期、有职责。
定位真正原因
混淆的根源,是没看清每个概念的生命周期和复用粒度:
- Prompt 活在"一次对话",用完即弃,解决"这次"
- Rule 常驻"所有任务",被动生效,解决"必须"
- Skill 按需"加载复用",主动调用,解决"这类"
- Workflow 编排"多个步骤",解决"流程"
- Memory 存"状态",解决"记得住"
- Agent 是"主体",把以上全部组装并执行
它们是组装关系,不是替代关系。 Agent 不是其中任何一个,而是承载所有、执行任务的那个"壳"。
最终方案:六个概念的分层与边界
逐个讲清边界,重点是 Skill 和另外三个的区别。
Skill vs Prompt:一次性 vs 可复用
这是最大的误区。核心差异三处:
| 维度 | Prompt | Skill |
|---|---|---|
| 复用 | 一次性,用完即弃 | 跨任务复用 |
| 结构 | 自由文本 | 有 trigger / 输入 / 步骤 / 输出契约 |
| 组合 | 不可组合 | 可被 Workflow 或其它 Skill 调用 |
Prompt 是"这次怎么干",Skill 是"这类怎么干"。当你发现同一段 prompt 要写第二次,那就是该抽成 Skill 的信号。
Skill vs Rule:能力 vs 约束
很多人把 Skill 和 Rule 混为一谈,但它们方向相反:
- Rule 是"必须/不得"——被动约束,Agent 不调用它,它也在生效(如 core 常驻)
- Skill 是"能够"——主动能力,Agent 需要时调用它(如代码审查)
Rule 回答"红线在哪",Skill 回答"工具箱里有什么"。一个限制你,一个赋能你。
Skill vs Workflow:单能力 vs 多步编排
- Skill = 单一能力单元(做一件事做好)
- Workflow = 多个 Skill/工具按序编排(做一串事)
Workflow 是 Skill 的"编排者",不是 Skill 的"加长版"。一个代码审查 Skill 不能被拉长成"需求到上线"的 Workflow——那是编排,不是能力。
Memory 与 Agent:数据 vs 主体
- Memory 是数据层(03 篇讲过),存状态,不产生行为
- Agent 是执行主体,加载 Rule、调用 Skill、跑 Workflow、读 Memory,最终产出
Agent 不是任何一个零件,它是把所有零件组装起来并执行的那个角色。
实际收益(厘清概念后)
| 指标 | 全靠 Prompt | 概念厘清后(各归其位) |
|---|---|---|
| 同类任务开发成本 | 每次重写 prompt | 复用 Skill,零重写 |
| 约束可靠性 | 靠 prompt 里"求它" | Rule 常驻强制 |
| 多步任务 | 人工拼接 | Workflow 自动编排 |
| 系统可维护性 | 一团 prompt | 各层职责清晰 |
为主观估算,非严格 A/B Test,但反映了"概念清晰"对架构正确性的直接影响。
架构图 / 流程图
六个概念的层级与组装关系

关键点:Prompt 在链最外(一次性触发),Rule/Skill/Workflow/Memory 是 Agent 内部的零件,Agent 是组装它们的主体。Prompt 不是 Agent,而是激活 Agent 的那一下。
何时该抽 Skill(决策流转)

图片多样性:用了 Mermaid 的 pie / flowchart / stateDiagram 三种;发文时可再补一张 ProcessOn/draw.io 版的概念关系图,提升 CSDN 图片多样性得分。
代码或配置示例
Skill 的真实结构(对比 Prompt)
Skill 之所以不是"长 prompt",因为它有结构——带触发条件、输入输出契约、可复用:
# skills/code-review/SKILL.md
name: code-review
trigger:
task_type: ["review", "refactor"] # 什么时候该被调用
input:
- diff: "待审查的代码变更"
output:
- issues: "问题列表(描述+反例+建议)"
steps: # 能力如何被执行,不是一段自由文本
- 识别设计问题
- 检查正确性
- 给出改进建议
对比一个 Prompt——它只有"指令",没有 trigger / 契约 / steps:
# 纯 Prompt(一次性)
"请审查下面的代码,指出设计问题、正确性问题,并给改进建议。"
同样是"审查",Skill 能被 Router 自动加载、能被 Workflow 编排、有输入输出契约;Prompt 不能。这就是"一句话"和"一家公司"的差距。
抽 Skill 的判定(伪代码)
def should_extract_skill(prompt_log: list[str]) -> bool:
"""出现≥2次相似 prompt,就该抽成 Skill"""
similar = group_similar(prompt_log) # 归并相似指令
for cluster in similar:
if len(cluster) >= 2: # 第二次出现即触发
return True
return False
逻辑极简,但说的是铁律:当你要写第二遍同样的 prompt,就是抽 Skill 的时候。
设计权衡
| 候选方案 | 优点 | 缺点 | 为什么不选 |
|---|---|---|---|
| 全靠 Prompt | 零结构、上手快 | 不可复用、易膨胀、难维护 | 规模一大必崩 |
| 长 Prompt 当 Skill | 封装感 | 本质还是一次性文本 | 没触发/契约/组合,空有壳 |
| 规则堆当 Workflow | 看似流程化 | 缺编排语义、不可调用 | 混淆约束与流程 |
| 六概念各归其位 | 复用高、约束可靠、可维护 | 需先厘清概念成本 | 选择理由:正确的边界才能长出正确的系统 |
不是所有都该抽 Skill。 一次性的临时任务,纯 Prompt 就够了——抽成 Skill 反而是过度工程。判断标准就一条:同样的需求会不会出现第二次。 会,就抽;不会,就 Prompt。
总结
✅ Prompt ≠ Agent。Prompt 只是激活 Agent 的那一下一次性指令,Agent 是组装所有零件的 execute 主体。
✅ 六个概念是不同层级的零件:Prompt(一次性)/ Rule(约束)/ Skill(能力)/ Workflow(编排)/ Memory(状态)/ Agent(主体)。
✅ Skill 区别于 Prompt:可复用、有触发/契约/步骤、能被组合;区别于 Rule:能力而非约束;区别于 Workflow:单能力而非多步编排。
✅ 抽 Skill 的信号只有一个:同样的 prompt 要写第二遍。
✅ 概念清晰了,架构才不会错——分不清零件,就组装不出机器。
参考资料
- Anthropic — Claude Skills 官方文档([待补链接])→ Skill 的标准结构与触发机制,本文 Skill 定义的直接依据
- 第 02 篇:为什么 Rules 要分层 → Rule 与 Skill 的边界(约束 vs 能力),本文对比的来源
- 第 03 篇:Memory 设计 → Memory 作为数据层、不产生行为的界定
- 第 05 篇:Rule Router → Skill/Rule 如何被 Router 按需加载,概念在工程里如何运转
- Coze / Dify 工作流文档 → Workflow 编排多步能力的参考实现
系列导航
上一篇:AI Agent 工程实践(06):Knowledge 如何演化成 Rules?
下一篇:AI Agent 工程实践(08):Workflow——什么时候应该拆成 Multi-Agent?
本文是 [AI Agent 工程实践] 系列的第 07 篇。
更多推荐

所有评论(0)