96SEO 2026-05-04 07:46 19
在上一次关于基础概念的探讨结束后我故意留了一个扣子——Command、Agent以及Skill这三者,乍一kan似乎dou只是封装好的提示词,甚至douNeng把工作流给包进去,那它们到底有啥本质区别?今天这篇文章,咱们就把这个扣子给解开。

说实话,刚开始接触这套体系的时候,我也挺懵的。这三者的名字长得像双胞胎一样,连配置文件里的Frontmatter字段dou有大量重叠——比如dou有namedescriptionallowed-toolsmodel这些配置。Ru果你只给我kan一个文件的内容,我大概率也分不清这到底是个Command还是个Skill。geng让人头大的是关于它们的触发时机、上下文隔离机制以及状态持久化这些关键行为,官方文档是散落在各处的,你想在一个地方把它们的对比关系理清楚,简直像是在Zuo拼图游戏。
为了把这事说透,我把内容分成了这么几个板块。Ru果你对历史演进不感兴趣,Ke以直接跳到后面kan干货。但我个人强烈建议你kankan演化路径,因为一旦你理解了它们是怎么一步步“长”出来的,这三者的定位瞬间就会变得无比清晰——它们不是拍脑门拍出来的概念,而是为了解决真实痛点不断迭代的结果。
一、 演化史:从“别名”到“员工”再到“工具书” 1. Zui初的朴素愿望:Slash Commands把时间拨回到Claude Code刚起步的时候,那时候的 机制非常简单,只有Slash Commands。
那时候的想法hen纯粹:就是为了复用。不想重复打字?那就写个.md文件,把提示词放进去,然后用/name触发。这玩意儿跟TextExpander或者Shell里的alias没啥本质区别,就是个宏替换。
graph LR
U --> C
C --> P
P --> Cla
Commands解决的问题非常直白:别让我重复敲键盘。但好用是好用,短板hen快就暴露出来了。它太轻了轻到无法处理复杂的逻辑,而且所有的操作dou在主对话里进行,一旦任务复杂,主界面就被垃圾信息填满了。
2. 引入“员工”:Subagents的诞生Boris Cherny在hen多公开场合dou反复强调过一个观点:千万别让一个复杂的任务把主对话给污染了。
为了解决这个问题,Subagents横空出世。Subagents的设计哲学非常硬核:
它把每一个Subagentdoukan作是一个拥有独立人格、独立上下文环境、甚至独立工具权限的“虚拟员工”。
graph TB
Main -.派遣任务.-> Agent
Agent -.只返回结果.-> Main
Agent --> T
Agent --> M
Agent --> S
这个设计解决了hen多痛点,比如上下文隔离、权限控制等等。但是新的问题又来了:Subagents太重了。这就好比你只是想问一句“现在几点了?”,结果却专门为此雇佣了一个全职员工,这成本完全不对等。
3. 轻量级复用:Skills的登场Anthropic团队在内部使用Claude Code时发现,现实场景中大量的需求其实是这样的:
“我希望Claude在Zuo某件事的时候,Neng按照特定的方法来但这事儿压根儿没必要专门起一个Agent。”
比如写代码时的某种规范、或者某个特定的API调用格式。这些dou是可复用的知识片段,而不是一个独立的任务。于是Skills应运而生。
SkillsZui核心的创新点在于“渐进式揭露”。一个Skill不再是一个单薄的文件,而是一个目录。SKILL.md里只放“什么时候用、怎么用”的摘要,而具体的参考资料、脚本、案例全dou扔在子目录里只有真正用到的时候才会去读取。
graph TD
A
B
C
D
A -.用到时读.-> B
A -.用到时跑.-> C
A -.用到时kan.-> D
二、 为什么不把它们合并成一个?
kan到这里你可Neng会跟我当初有一样的疑问:为什么不设计一个统一的“Extension”类型,然后用几个布尔字段来控制开关?这样代码多整洁啊。
但答案hen扎心:这三者的心智模型完全不同,强行合并只会让学习成本指数级上升。
你Ke以把它们想象成:按钮、工具、员工。这三个词你一听就知道用法完全不一样。但Ru果把它们合并成一个叫“Extension”的抽象概念,然后让你去配置字段来区分它到底是按钮还是员工,那你每次用的时候dou得在脑子里转个弯——“这玩意儿现在到底是按钮还是员工?”
这其实是编程语言设计里那个经典的“正交性 vs 简单性”的老问题。AnthropicZui终选择了保留三个清晰的心智模型,虽然概念多了点,但用户用起来心里不累。
三、 核心差异对比:一张表kan懂本质这部分可是全篇的精华,建议你截图保存。咱们不整虚的,直接上Zui本质的区别。
Zui核心的区别在于上下文。
graph TB
subgraph Main
direction LR
M1
M2
CMD
SKILL
end
AGT
Main -. 派遣任务 .-> AGT
AGT -. 只返回结果 .-> Main
style AGT fill:#faa,stroke:#f00
style CMD fill:#afa,stroke:#0a0
style SKILL fill:#aaf,stroke:#00f
这里其实有一个hen微妙的权衡:隔离性越强,Neng力越强,但开销也越大。
给你一条非常实用的经验:Ru果一个任务的中间推理过程特别长,比如得读十几个文件才NengZuo出判断,那就毫不犹豫地用Agent;Ru果只是简单的“套个模板”或者“按某个固定步骤处理一件事”,那Skill就绰绰有余了。
Claude的决策逻辑当你在输入框里敲字的时候,Claude内部其实是在Zuo一道选择题。
flowchart TD
User --> Check{Claude 决策}
Check --> C1
Check --> C2
Check --> C3
C1 -->|没| X1
C2 -->|time-skill 匹配| Y1
C3 -->|time-agent 匹配| Y2
Y1 --> Pick
Y2 --> Pick
Pick --> Use
style X1 fill:#fcc
style Y1 fill:#cfc
style Use fill:#ff9
这里有个默认的优先级逻辑:Claude倾向于用成本Zui低的方式解决问题。
另外只有Agent拥有持久化人格。这也是为什么像“code reviewer”这种需要长期积累风格偏好、记住你之前修改过什么代码的角色,Zui适合被封装成Agent。
四、 实战演练:同一个需求,三种解法咱们把“报时”这个需求分别用三种方式实现一遍,你立马就Neng明白其中的差异了。
当用户问“现在几点了?”的时候:
Command模式: 用户必须主动输入/time。这就像你按下一个按钮,机器才会动。
Skill模式: 用户直接问“几点了”,Claude检测到语义匹配,自动加载time-skill,在当前对话里直接返回结果。这就像你桌上放了一本手册,需要的时候翻一下。
Agent模式: 用户问“几点了”,Claude启动一个新的进程,拥有独立上下文,查完时间再汇报。这就像你派个秘书去查时间,他查完回来告诉你。
Ru果你把“查时间”这种小事硬搞成Agent,那纯属是拿高射炮打蚊子,浪费资源。
五、 选型指南:遇到需求该选谁?为了让你以后不再纠结,我画了个流程图,照着这个走准没错。
flowchart TD
Start --> Q1{用户主动输入 /slash
才触发吗?}
Q1 -->|是| CMD
Q1 -->|否| Q2{任务复杂度?}
Q2 -->|轻量 单一Neng力| Q3{需要隔离上下文?}
Q2 -->|复杂 多步自主| Q4{需要持久化记忆
或预加载知识?}
Q3 -->|否| SKILL
Q3 -->|是| SKILL_F
Q4 -->|否| AGT
Q4 -->|是| AGT_P
style CMD fill:#afa
style SKILL fill:#aaf
style SKILL_F fill:#aaf
style AGT fill:#faa
style AGT_P fill:#faa
实战四问法
实在记不住流程图?那就记住这四个问题,按顺序问自己:
谁触发? 是用户必须敲斜杠命令,还是AI自动识别?前者选Command。
任务多重? 是简单的一步操作,还是需要多步推理、自主决策?复杂的上Agent。
要不要记住东西? 需要跨对话保持状态吗?需要就上Agent的Memory功Neng。
会不会被 agent 调用? Ru果是作为工具包供其他Agent使用,那肯定是Skill。
六、 配置文件详解:同名不同义虽然三者的Frontmatter长得像,但hen多字段的含义是有微妙差别的。这里只列Zui小常用集,免得你被一堆配置吓跑。geng详细的字段解析咱们以后单聊。
1. Command 配置---
description: Do something useful
argument-hint:
allowed-tools: Read, Edit, Bash
model: sonnet
---
注意,Command里用的是allowed-tools,而且它主要是为了“少打字”和“固定工作流”。
---
name: my-agent
description: Use this agent PROACTIVELY when...
tools: Read, Write, Edit, Bash
disallowedTools: Bash
model: sonnet # haiku / sonnet / opus / inherit
maxTurns:
permissionMode: acceptEdits
memory: user # user / project / local
skills:
- my-skill
mcpServers:
- playwright
background: false
isolation: worktree
color: cyan
---
Agent的配置明显复杂得多,特别是memory和isolation这两个字段,是它作为“独立员工”的身份证。
---
name: my-skill
description: Do X when user asks for Y
argument-hint:
disable-model-invocation: false
user-invocable: true
allowed-tools: Read, Grep, Glob
model: sonnet
context: fork
agent: general-purpose
---
Skill里有个hen有意思的字段叫context: fork,这Neng让轻量级的Skill也拥有类似Agent的隔离Neng力,是个hen灵活的折中方案。
| 字段 | Command | Agent | Skill |
|---|---|---|---|
name |
文件名 | 必须显式声明 | 显式或文件夹名 |
description |
描述 | 触发匹配用,必写 | 触发匹配用,必写 |
allowed-tools |
允许的工具 | 用 tools 字段 |
允许的工具 |
model |
模型别名 | 模型别名或 inherit |
模型别名 |
单独用它们只是入门,真正的威力在于组合。Zui经典的玩法就是 Command → Agent → Skill 的三层编排。
咱们来拆解一个“Release Notes生成器”的例子,kankan它们是怎么配合的。
sequenceDiagram
actor User as 用户
participant CMD as /release-notes-crafter
participant AGT as release-notes-agent
participant PS as git-log-reader
participant GIT as 本地 git 仓库
participant SK as release-notes-formatter
User->CMD: /release-notes-crafter
CMD->User: since-tag? target-version?
User->CMD: v1.0, v1.1
rect rgb
Note over CMD,AGT: Agent 阶段 独立上下文
CMD->AGT: Agent 工具调用
AGT->PS: 读取预加载指令
PS-->AGT: git log 命令 + 分类规则
AGT->GIT: git log v1.0...HEAD
GIT-->AGT: 50 条 commit
AGT-->CMD: feat/fix/breaking 分桶
end
rect rgb
Note over CMD,SK: Skill 阶段 内联执行
CMD->SK: Skill 工具调用
SK->SK: 按模板排版 + 写文件
SK-->User: RELEASE_NOTES_v1.1.md
end
在这个例子里我们kan到了两种Skill的调用模式:
预加载模式: Agent启动时自动挂载的Skill,作为Agent的知识库存在。
内联调用模式: Command在主流程中临时调用的Skill,用完即走。
这两种模式虽然dou是Skill,但用法截然不同——这就是组合的奥义。
聊到这里Command、Agent、Skill这三者的差异和选型逻辑应该Yi经非常清晰了。
咱们简单复盘一下。这三者并不是三个并列竞争的功Neng,而是技术演化路径上的三个阶段Commands是为了解决“懒得打字”,Subagents是为了解决“任务隔离”,Skills是为了解决“轻量知识复用”。这三个心智模型各司其职——你只要记住按钮、员工、工具这三个词,在实际开发中基本就不会选错。
至于那个“选型四问”,geng是简单粗暴:谁触发?多重?要记忆吗?被谁调用? 只要你顺着这四个问题答一遍,心里自然就有答案了。
抽象的理论讲完了下一篇咱们得动真格的了去kankan具体在代码里怎么落地这些概念。
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback