Appearance
你花了两个小时精心设计了一份 Prompt,Agent 跑起来了,效果不错。第二天重新开一个会话,它又开始乱来——删错文件、无视你的命名规范、在不该调工具的地方调了工具。
这不是模型的问题。是你把应该「架构」的事情,全部压在了「提示词」上。
全景架构:5层 + 2个外部系统
Claude Code 给出了一套系统性答案:5层 Agent Development Kit,每一层解决一个 LLM 本身解决不了的问题,而且 4层跟 Prompt 没有任何关系。
CLAUDE.md 设定规则 → Skills 提供专业知识 → Hooks 保障质量 → Subagents 分发任务 → Plugins 分发给团队两侧的外部系统各有职责:
| 外部系统 | 职责 |
|---|---|
| MCP Servers | 扩展工具边界,接入 GitHub、数据库、第三方 API |
| Agent Teams | 多 Agent 横向协作,并行执行、消息传递 |
Layer 1:CLAUDE.md 记忆层
核心问题
大多数工程师用 Claude Code 的第一反应是把规则加进 Prompt。加着加着,上下文窗口溢出,Agent 开始"选择性失忆"——它不是故意不听你的,而是 token 太多,早期的指令被稀释了。
核心问题:你把常驻知识当成了一次性输入。
CLAUDE.md 的职责
让 Agent 在每次会话开始时自动加载你的规则,无需重复输入。
两个作用域
| 作用域 | 路径 | 说明 |
|---|---|---|
| 全局 | ~/.claude/CLAUDE.md | 所有项目生效 |
| 项目 | .claude/CLAUDE.md | 仅当前项目生效 |
个人的编码习惯和偏好放全局,团队共识和项目约定放项目级,互不干扰。
完整示例
markdown
# 架构规则
- 所有对外服务必须通过 API Gateway,禁止直连数据库
- 敏感配置必须从环境变量读取,禁止硬编码
# 代码规范
- 遵循 TypeScript 风格指南
- 文件命名:小写下划线(user_service.ts)
- 提交前必须运行 lint 和 test
# 工作流程
1. 理解需求 → 2. 写测试 → 3. 实现代码 → 4. 代码审查Layer 2:Skills 专业能力层
核心问题
Agent 遇到专业领域的问题,通用模型往往给出通用答案。但你的团队有自己沉淀的最佳实践,这些知识不应该每次重新教。
Skills 的职责
Skills 让 Agent 掌握团队私有知识,按需加载。
常见 Skills 类型
| 类型 | 功能 |
|---|---|
| 代码生成 | 生成符合团队规范的代码 |
| 质量检查 | 检查代码是否符合规范 |
| 文档生成 | 生成 API 文档、README |
| 测试辅助 | 生成测试用例 |
安装方式
bash
# 安装官方 Skill
/install skill-name
# 查看已安装 Skills
/skills listLayer 3:Hooks 质量保障层
核心问题
Agent 写完代码就走了,你发现问题时已经过了好几个步骤。质量保障靠人肉检查,效率太低。
Hooks 的职责
在关键节点自动拦截,确保质量。
Hooks 类型
| 钩子 | 时机 | 作用 |
|---|---|---|
| Pre-Task | 任务开始前 | 确认任务范围、预防问题 |
| Post-Task | 任务完成后 | 检查结果、更新上下文 |
| Pre-Tool-Use | 工具调用前 | 确认是否该用这个工具 |
| Post-Tool-Use | 工具调用后 | 检查工具输出 |
配置示例
javascript
// hooks/pre-task.js
export default {
name: 'confirm-task-scope',
async beforeTask(task, context) {
// 确认任务范围
if (task.description.length < 20) {
return '任务描述太模糊,请补充细节'
}
}
}Layer 4:Subagents 任务分发层
核心问题
一个 Agent 处理所有任务,容易变成"万金油"——什么都做,什么都不精。
Subagents 的职责
把任务分发给专业 Agent,各司其职。
工作流程
主 Agent
├── Subagent-A(负责代码生成)
├── Subagent-B(负责代码审查)
└── Subagent-C(负责测试)配置示例
javascript
// .claude/subagents/reader.js
export default {
name: 'code-reader',
description: '阅读并理解代码库结构',
systemPrompt: '你是代码分析专家,专注于理解大型代码库'
}Layer 5:Plugins 团队协作层
核心问题
多个 Agent 之间如何协作?各自为政效率低,信息不同步。
Plugins 的职责
把专业 Agent 整合成团队,协同工作。
团队协作模式
| 模式 | 说明 |
|---|---|
| 串行 | Agent-A → Agent-B → Agent-C |
| 并行 | Agent-A // Agent-B // Agent-C |
| 混合 | 并行执行后汇总给主 Agent |
MCP Servers:工具扩展
核心价值
MCP(Model Context Protocol)让 Agent 接入外部工具。
常用 MCP 服务
| MCP | 功能 |
|---|---|
| GitHub | 操作 GitHub API |
| PostgreSQL | 数据库操作 |
| Slack | 消息通知 |
| Custom | 自定义 API |
安装方式
bash
# 安装 MCP
/claude mcp install githubAgent Teams:横向协作
核心价值
多个 Agent 并行执行,效率翻倍。
协作机制
主 Agent(调度)
├── Worker-A(执行子任务1)
├── Worker-B(执行子任务2)
└── Worker-C(执行子任务3)消息传递
Agent 之间可以传递消息,共享上下文:
javascript
// Worker-A 发送消息
await context.sendMessage('worker-b', {
type: 'task-complete',
result: { files: ['a.ts', 'b.ts'] }
})为什么 4 层跟 Prompt 无关
| Layer | 跟 Prompt 有关? |
|---|---|
| Layer 1: CLAUDE.md | ❌ 配置文件 |
| Layer 2: Skills | ❌ 知识库 |
| Layer 3: Hooks | ❌ 拦截机制 |
| Layer 4: Subagents | ❌ 任务分发 |
| Layer 5: Plugins | ❌ 团队协作 |
Prompt 只负责「说什么」,架构负责「怎么做到」。
总结
Agent 失控的根源不是 Prompt 太差,而是架构缺失。
Claude Code 的 5 层 Agent Development Kit 提供了一套系统性解决方案:
| 层级 | 职责 | 类比 |
|---|---|---|
| CLAUDE.md | 常驻规则 | 宪法 |
| Skills | 专业知识 | 专业技能 |
| Hooks | 质量保障 | 质检员 |
| Subagents | 任务分发 | 包工头 |
| Plugins | 团队协作 | 公司架构 |
从「堆 Prompt」到「建架构」,这是 AI 时代的工程化思维。
