Skip to content

2.2 七个本质区别

小王理解了速览,但需要深入——他需要从技术层面把每个区别拆开。

以下是七个根本差异,每一个都会直接影响你的架构决策。


区别 1:运行模型——被动注入 vs 主动规划

区别 1:运行模型
Skill:被动注入
Skill 被注入上下文后,AI 只是"参照"它——不会主动发起行动。就像员工拿到操作手册,照着做,但不会自己找新活干。

自主性级别:Level 0-2(被动、建议、半自动)
是否独立运行:否,必须嵌入宿主 AI 的上下文
Agent:主动规划
Agent 接收目标后,自主规划"怎么做"——决定下一步、选择工具、判断完成。就像实习生拿到任务,自己拆解执行。

自主性级别:Level 3-5(自主、高度自主、完全自主)
是否独立运行:是,拥有自己的执行循环和状态
实际影响:Skill 被激活后,AI 在当前对话中参照内容,但不会主动发起行动。Agent 被启动后,会自己规划下一步、调用工具,直到目标完成。

区别 2:决策方式——不做决策 vs 自主决策 ⚠️

区别 2:决策方式 ⚠️ 最影响应用场景的差异
Skill:不做决策
Skill 提供知识和流程,决策由宿主 AI 完成。判断逻辑是预定义的静态规则和步骤。

适应性:低——只覆盖编写时预见的场景
典型:Skill 写了"检查 SQL 注入",AI 就只检查 SQL 注入
Agent:自主决策
Agent 根据当前状态选择下一步行动。判断逻辑是动态的推理(ReAct、Plan-Execute 等)。

适应性:高——能应对未预见的情况
典型:Agent 发现代码用 ORM,自行调整检查策略
这是最影响应用场景的差异:Skill 只能覆盖"你写下来"的场景,遇到没写过的情况 AI 不知道怎么办。Agent 能自己判断"没见过但类似"的情况,自行调整策略。
Skill 遇到 ORM 代码
Skill 写了"检查 SQL 注入" → AI 检查 SQL 注入
代码用的是 ORM,不是原始 SQL
Skill 没写"检查 ORM 注入" → AI 跳过 ❌
Agent 遇到 ORM 代码
Agent 发现"这是 ORM 查询"
Agent 自行判断"ORM 也可能注入"
Agent 调整策略检查 ORM 注入 ✅

区别 3:执行模型——单次注入 vs 循环执行

区别 3:执行模型
Skill:单次注入
内容进入上下文后,AI 在当前对话中参照。没有"下一步"的概念——注入一次,持续生效。

执行主体:宿主 AI(Claude Code、Cursor 等)
上下文隔离:默认 inline;Claude Code 支持 context: fork
Agent:循环执行
每一步都是"思考→行动→观察→反思"的循环。每一步的输出影响下一步的决策。

执行主体:Agent 自身
上下文隔离:天然支持独立上下文运行
实际影响:Skill 注入一次后,AI 在后续对话中始终参照。Agent 的每一步都有"思考→行动→观察→反思"的循环,每步输出影响下步决策。

区别 4:状态管理——无状态 vs 有状态

区别 4:状态管理
Skill:无状态
每次调用都是全新注入。Skill 文件本身不存储任何运行时信息。没有记忆,也不保留上次执行结果。

跨会话:无——文件是静态的
适合:"每次都一样的标准流程"
Agent:有状态
Agent 维护任务进度、中间结果、对话历史。拥有四层记忆:工作记忆、短期记忆、长期记忆、用户记忆。

跨会话:可有——通过向量数据库实现长期记忆
适合:"需要记住上下文"的操作
实际影响:代码审查清单不会因为上次审查过而改变——Skill 适合。但"上次审查发现了 3 个问题,这次看看修了没"——Agent 更适合。

区别 5:范围与目标——任务特定 vs 目标导向

区别 5:范围与目标
Skill:任务特定
解决一个明确的操作场景。粒度细——"部署流程"、"代码审查清单"。

完成标准:清晰——步骤执行完毕即完成
类比:照着菜谱做一道菜
Agent:目标导向
解决一个开放性的目标。粒度粗——"修复所有 API 端点的错误处理"。

完成标准:模糊——需要 Agent 自己判断是否达成
类比:让厨师做一桌好菜
实际影响:Skill 有明确的"做完"标准——清单打完了就结束。Agent 的"做完"标准模糊——"修复所有错误"到底修到什么程度?这既给了灵活性,也带来了"不知道什么时候停"的风险。

区别 6:工具使用——间接指引 vs 直接编排

区别 6:工具使用
Skill:间接指引
Skill 不直接调用工具,它告诉 AI "可以/应该用什么工具"。不编排多工具的协作。

Claude Code 特性allowed-tools 预授权;!`command` 预处理注入实时数据
典型:Skill 说"用 GitHub CLI 创建 PR"
Agent:直接编排
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 可以在你没预期的时候自己跑起来。

控制粒度:细——审批工作流、检查点审查、中断恢复
安全控制:权限金字塔
实际影响:Skill 永远不会"自己跑起来"——除非你手动触发。Agent 可以自己跑起来,甚至在你没预期的时候。这意味着 Agent 的安全设计比 Skill 复杂得多。
Agent 权限金字塔
🚫 禁止层 — 永远不能做的事
如:删除生产数据库
🔐 审批层 — 需要人类明确批准
如:部署到生产环境
👁️ 确认层 — 执行前通知人类
如:修改配置文件
✅ 自主层 — Agent 可自由执行
如:读取文件、搜索代码

七个区别总结

#维度SkillAgent
1运行模型被动注入上下文主动规划执行
2决策方式不做决策 ⚠️自主决策
3执行模型单次注入循环执行
4状态管理状态状态(四层记忆)
5范围目标任务特定目标导向
6工具使用间接指引直接编排
7人类参与必须触发可选参与

本节核心要点

  • 运行模型:Skill 被动注入,Agent 主动规划——根本的行为差异
  • 决策方式:Skill 不决策,Agent 自主决策——最影响应用场景
  • 执行模型:Skill 单次注入,Agent 循环执行——执行节奏完全不同
  • 状态管理:Skill 无状态,Agent 有状态——上下文记忆的差距
  • 范围目标:Skill 任务特定,Agent 目标导向——适合的粒度不同
  • 工具使用:Skill 间接指引,Agent 直接编排——工具调用深度的差异
  • 人类参与:Skill 必须触发,Agent 可选参与——安全控制复杂度的差距

思考题:你的项目中,哪个差异最影响你的选型?如果任务同时需要确定性和适应性,你怎么平衡?


← 上一节:30 秒速览 | 目录 | 下一节:技术架构对比 →