Coding Agent 的基本架构
在架构上,大多数 Coding Agent 都遵循类似的模式:Coding Agent 的能力,很大程度上来自于它的扩展组件。Coding Agent 的能力不仅取决于模型本身,很大程度上也来自于 扩展组件层 —— 即如何为 Agent 提供上下文信息、可复用能力模块以及外部工具连接。 在不同工具中,这些组件的名称和实现方式可能有所不同,但整体结构高度相似。为了更清晰地说明这一层级,下文将以 Claude Code 的 Agentic 生态为参考,介绍 Coding Agent 常见的几类扩展组件。
Claude Code 的扩展组件
Claude Code 的扩展组件可以嵌入到 Agentic Loop 的不同阶段,从而增强系统能力。主要扩展组件包括:CLAUDE.md
CLAUDE.md
为 Coding Agent 提供每次会话都会加载的持久化上下文
Skills
Skills
提供可复用的知识、指令和工作流程
MCP(Model Context Protocol)
MCP(Model Context Protocol)
用于连接外部服务与工具系统
Subagents
Subagents
在独立上下文中运行子 Agent,并返回执行结果摘要
Agent Teams
Agent Teams
协调多个独立会话进行并行协作
Hooks
Hooks
在 Agent 循环之外执行确定性的自动化脚本
Plugins
Plugins
与 Marketplace 用于打包并分发上述扩展能力
/deploy 的命令直接调用某个 Skill;在某些情况下,Coding Agent 也会在任务相关时自动加载对应 Skill。
根据需求选择组件
Claude Code 提供的扩展能力覆盖多种使用场景:从每次会话都会加载的上下文信息,到按需调用的能力模块,再到在特定事件触发的自动化流程。不同扩展组件的定位及适用场景如下表所示。Plugins
Plugin(插件) 是 Claude Code 的能力打包机制。一个插件可以同时包含 Skills、Hooks、Subagents 和 MCP Servers。 Plugins 中的 Skills 会使用 命名空间(例如/my-plugin:review),从而避免不同插件之间的命令冲突。
当您希望在多个仓库复用同一套配置并将能力分发给其他开发者时,可以通过 Plugin 与 Marketplace 来实现。
如何区分这些组件
部分扩展组件在功能上看起来相似,但它们解决的问题不同。下面对几种常见组合进行说明。- Skills vs Subagent
- CLAUDE.md vs Skills
- CLAUDE.md vs Rules vs Skills
- MCP vs Skill
定位不同:
- Skills:可复用的知识或流程
- Subagent:在独立上下文中执行任务的子 Agent
Skills 可以分为两类:
- Reference Skills 提供参考知识,例如 API 规范或开发指南。
- Action Skills 触发具体任务,例如
/deploy。
扩展组件的层级关系
扩展组件可以在多个层级定义,例如:- CLAUDE.md
- Skills 与 Subagents
- MCP Servers
- Hooks
采用 叠加(additive) 模式:所有层级的 CLAUDE.md 文件都会被加载,并合并到对话的上下文中。当规则发生冲突时,通常是 更具体的规则优先生效。
组合使用扩展组件
在实际项目中,通常会组合使用多个扩展组件。例如:上下文成本
每一种扩展能力都会占用 模型的上下文窗口。 如果加载过多内容,可能导致:- 模型忽略关键信息
- Skills 触发不准确
- Coding Agent 无法正确遵循项目规则
不同扩展组件的上下文成本
默认情况下,Skill 的描述会在会话开始时加载,以便 Coding Agent 判断是否需要使用该 Skill。
如果希望 Skill 仅在手动调用时加载,可以在
frontmatter 中设置:disable-model-invocation: true,这样 Coding Agent 在会话中不会看到该 Skill,只有在显式调用时才会加载,从而将上下文成本降为零。