2.2 七个本质区别
小王理解了速览,但需要深入——他需要从技术层面把每个区别拆开。
以下是七个根本差异,每一个都会直接影响你的架构决策。
区别 1:运行模型——被动注入 vs 主动规划
区别 1:运行模型
Skill:被动注入
Skill 被注入上下文后,AI 只是"参照"它——不会主动发起行动。就像员工拿到操作手册,照着做,但不会自己找新活干。
自主性级别:Level 0-2(被动、建议、半自动)
是否独立运行:否,必须嵌入宿主 AI 的上下文
Skill 被注入上下文后,AI 只是"参照"它——不会主动发起行动。就像员工拿到操作手册,照着做,但不会自己找新活干。
自主性级别:Level 0-2(被动、建议、半自动)
是否独立运行:否,必须嵌入宿主 AI 的上下文
Agent:主动规划
Agent 接收目标后,自主规划"怎么做"——决定下一步、选择工具、判断完成。就像实习生拿到任务,自己拆解执行。
自主性级别:Level 3-5(自主、高度自主、完全自主)
是否独立运行:是,拥有自己的执行循环和状态
Agent 接收目标后,自主规划"怎么做"——决定下一步、选择工具、判断完成。就像实习生拿到任务,自己拆解执行。
自主性级别:Level 3-5(自主、高度自主、完全自主)
是否独立运行:是,拥有自己的执行循环和状态
实际影响:Skill 被激活后,AI 在当前对话中参照内容,但不会主动发起行动。Agent 被启动后,会自己规划下一步、调用工具,直到目标完成。
区别 2:决策方式——不做决策 vs 自主决策 ⚠️
区别 2:决策方式 ⚠️ 最影响应用场景的差异
Skill:不做决策
Skill 提供知识和流程,决策由宿主 AI 完成。判断逻辑是预定义的静态规则和步骤。
适应性:低——只覆盖编写时预见的场景
典型:Skill 写了"检查 SQL 注入",AI 就只检查 SQL 注入
Skill 提供知识和流程,决策由宿主 AI 完成。判断逻辑是预定义的静态规则和步骤。
适应性:低——只覆盖编写时预见的场景
典型:Skill 写了"检查 SQL 注入",AI 就只检查 SQL 注入
Agent:自主决策
Agent 根据当前状态选择下一步行动。判断逻辑是动态的推理(ReAct、Plan-Execute 等)。
适应性:高——能应对未预见的情况
典型:Agent 发现代码用 ORM,自行调整检查策略
Agent 根据当前状态选择下一步行动。判断逻辑是动态的推理(ReAct、Plan-Execute 等)。
适应性:高——能应对未预见的情况
典型:Agent 发现代码用 ORM,自行调整检查策略
这是最影响应用场景的差异:Skill 只能覆盖"你写下来"的场景,遇到没写过的情况 AI 不知道怎么办。Agent 能自己判断"没见过但类似"的情况,自行调整策略。
Skill 遇到 ORM 代码
Skill 写了"检查 SQL 注入" → AI 检查 SQL 注入
代码用的是 ORM,不是原始 SQL
Skill 没写"检查 ORM 注入" → AI 跳过 ❌
代码用的是 ORM,不是原始 SQL
Skill 没写"检查 ORM 注入" → AI 跳过 ❌
Agent 遇到 ORM 代码
Agent 发现"这是 ORM 查询"
Agent 自行判断"ORM 也可能注入"
Agent 调整策略检查 ORM 注入 ✅
Agent 自行判断"ORM 也可能注入"
Agent 调整策略检查 ORM 注入 ✅
区别 3:执行模型——单次注入 vs 循环执行
区别 3:执行模型
Skill:单次注入
内容进入上下文后,AI 在当前对话中参照。没有"下一步"的概念——注入一次,持续生效。
执行主体:宿主 AI(Claude Code、Cursor 等)
上下文隔离:默认 inline;Claude Code 支持
内容进入上下文后,AI 在当前对话中参照。没有"下一步"的概念——注入一次,持续生效。
执行主体:宿主 AI(Claude Code、Cursor 等)
上下文隔离:默认 inline;Claude Code 支持
context: forkAgent:循环执行
每一步都是"思考→行动→观察→反思"的循环。每一步的输出影响下一步的决策。
执行主体:Agent 自身
上下文隔离:天然支持独立上下文运行
每一步都是"思考→行动→观察→反思"的循环。每一步的输出影响下一步的决策。
执行主体:Agent 自身
上下文隔离:天然支持独立上下文运行
实际影响:Skill 注入一次后,AI 在后续对话中始终参照。Agent 的每一步都有"思考→行动→观察→反思"的循环,每步输出影响下步决策。
区别 4:状态管理——无状态 vs 有状态
区别 4:状态管理
Skill:无状态
每次调用都是全新注入。Skill 文件本身不存储任何运行时信息。没有记忆,也不保留上次执行结果。
跨会话:无——文件是静态的
适合:"每次都一样的标准流程"
每次调用都是全新注入。Skill 文件本身不存储任何运行时信息。没有记忆,也不保留上次执行结果。
跨会话:无——文件是静态的
适合:"每次都一样的标准流程"
Agent:有状态
Agent 维护任务进度、中间结果、对话历史。拥有四层记忆:工作记忆、短期记忆、长期记忆、用户记忆。
跨会话:可有——通过向量数据库实现长期记忆
适合:"需要记住上下文"的操作
Agent 维护任务进度、中间结果、对话历史。拥有四层记忆:工作记忆、短期记忆、长期记忆、用户记忆。
跨会话:可有——通过向量数据库实现长期记忆
适合:"需要记住上下文"的操作
实际影响:代码审查清单不会因为上次审查过而改变——Skill 适合。但"上次审查发现了 3 个问题,这次看看修了没"——Agent 更适合。
区别 5:范围与目标——任务特定 vs 目标导向
区别 5:范围与目标
Skill:任务特定
解决一个明确的操作场景。粒度细——"部署流程"、"代码审查清单"。
完成标准:清晰——步骤执行完毕即完成
类比:照着菜谱做一道菜
解决一个明确的操作场景。粒度细——"部署流程"、"代码审查清单"。
完成标准:清晰——步骤执行完毕即完成
类比:照着菜谱做一道菜
Agent:目标导向
解决一个开放性的目标。粒度粗——"修复所有 API 端点的错误处理"。
完成标准:模糊——需要 Agent 自己判断是否达成
类比:让厨师做一桌好菜
解决一个开放性的目标。粒度粗——"修复所有 API 端点的错误处理"。
完成标准:模糊——需要 Agent 自己判断是否达成
类比:让厨师做一桌好菜
实际影响:Skill 有明确的"做完"标准——清单打完了就结束。Agent 的"做完"标准模糊——"修复所有错误"到底修到什么程度?这既给了灵活性,也带来了"不知道什么时候停"的风险。
区别 6:工具使用——间接指引 vs 直接编排
区别 6:工具使用
Skill:间接指引
Skill 不直接调用工具,它告诉 AI "可以/应该用什么工具"。不编排多工具的协作。
Claude Code 特性:
典型:Skill 说"用 GitHub CLI 创建 PR"
Skill 不直接调用工具,它告诉 AI "可以/应该用什么工具"。不编排多工具的协作。
Claude Code 特性:
allowed-tools 预授权;!`command` 预处理注入实时数据典型:Skill 说"用 GitHub CLI 创建 PR"
Agent:直接编排
Agent 自主选择并调用工具。决定用哪些工具、以什么顺序调用——编排工具的协作。
天然支持:完整的工具调用链
典型:Agent 判断"代码改完→测试通过→现在创建 PR"
Agent 自主选择并调用工具。决定用哪些工具、以什么顺序调用——编排工具的协作。
天然支持:完整的工具调用链
典型:Agent 判断"代码改完→测试通过→现在创建 PR"
实际影响:Skill 可以说"用 GitHub CLI 创建 PR",但不会自己决定什么时候创建、创建什么内容。Agent 会自己判断"代码改完了→测试通过了→现在创建 PR"——它编排了工具的调用顺序和时机。
区别 7:人类参与——必须触发 vs 可选参与
区别 7:人类参与
Skill:必须触发
人类必须手动触发调用(
控制粒度:粗——调用或不调用
安全控制:
人类必须手动触发调用(
/command 或对话触发)。Skill 永远不会"自己跑起来"。控制粒度:粗——调用或不调用
安全控制:
disable-model-invocation: true 禁止自动触发 Agent:可选参与
Agent 可自主运行,关键节点可设 HITL(Human-in-the-Loop)。Agent 可以在你没预期的时候自己跑起来。
控制粒度:细——审批工作流、检查点审查、中断恢复
安全控制:权限金字塔
Agent 可自主运行,关键节点可设 HITL(Human-in-the-Loop)。Agent 可以在你没预期的时候自己跑起来。
控制粒度:细——审批工作流、检查点审查、中断恢复
安全控制:权限金字塔
实际影响:Skill 永远不会"自己跑起来"——除非你手动触发。Agent 可以自己跑起来,甚至在你没预期的时候。这意味着 Agent 的安全设计比 Skill 复杂得多。
Agent 权限金字塔
🚫 禁止层 — 永远不能做的事
如:删除生产数据库
🔐 审批层 — 需要人类明确批准
如:部署到生产环境
👁️ 确认层 — 执行前通知人类
如:修改配置文件
✅ 自主层 — Agent 可自由执行
如:读取文件、搜索代码
七个区别总结
| # | 维度 | Skill | Agent |
|---|---|---|---|
| 1 | 运行模型 | 被动注入上下文 | 主动规划执行 |
| 2 | 决策方式 | 不做决策 ⚠️ | 自主决策 |
| 3 | 执行模型 | 单次注入 | 循环执行 |
| 4 | 状态管理 | 无状态 | 有状态(四层记忆) |
| 5 | 范围目标 | 任务特定 | 目标导向 |
| 6 | 工具使用 | 间接指引 | 直接编排 |
| 7 | 人类参与 | 必须触发 | 可选参与 |
本节核心要点
- 运行模型:Skill 被动注入,Agent 主动规划——根本的行为差异
- 决策方式:Skill 不决策,Agent 自主决策——最影响应用场景
- 执行模型:Skill 单次注入,Agent 循环执行——执行节奏完全不同
- 状态管理:Skill 无状态,Agent 有状态——上下文记忆的差距
- 范围目标:Skill 任务特定,Agent 目标导向——适合的粒度不同
- 工具使用:Skill 间接指引,Agent 直接编排——工具调用深度的差异
- 人类参与:Skill 必须触发,Agent 可选参与——安全控制复杂度的差距
思考题:你的项目中,哪个差异最影响你的选型?如果任务同时需要确定性和适应性,你怎么平衡?