🧩 AI Agent 四层架构:Instructions、Prompts、Skills、Tools 关系梳理

🧩 AI Agent 四层架构:Instructions、Prompts、Skills、Tools 关系梳理

"CLAUDE.md 是什么?跟 .github/prompts 有什么区别?Skills 又是什么?"

当我第一次尝试配置 GitHub Copilot 和 Claude Code 时,面对这些散落在不同目录的配置文件,一度非常困惑。官方文档各讲各的,很少有人把它们放在一起对比。

直到我把自己的博客项目完整配置了一遍,才终于理清了这四个概念的关系。今天把这个梳理过程记录下来,希望能帮到同样困惑的你。

先看全景:四层架构

在动手配置之前,先建立一个整体认知。我把 AI Agent 的"知识体系"分为四层:

┌─────────────────────────────────────────────────────────────────────────┐
│                           用户请求                                       │
│                    "帮我写一篇关于 MCP 的博客"                            │
└─────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────┐
│  📋 INSTRUCTIONS (项目上下文)                                            │
│  • 每次请求自动加载 • 告诉 AI:项目结构、命令、约定                        │
└─────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────┐
│  📝 PROMPTS (任务模板)                                                   │
│  • 手动调用 • 告诉 AI:这个任务怎么做、输出格式                            │
└─────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────┐
│  🎯 SKILLS (能力模块)                                                    │
│  • AI 自动识别 • 包含:知识 + 流程 + 工具使用指南                          │
└─────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────┐
│  🔧 TOOLS (执行能力)                                                     │
│  • AI 按需调用 • 实际执行:读写文件、运行命令、调用 API                     │
└─────────────────────────────────────────────────────────────────────────┘

用一个类比来理解:

层级类比作用
Instructions员工入职手册了解公司基本情况
Prompts工作 SOP 流程具体任务怎么做
Skills专业技能认证我擅长什么领域
Tools工具箱锤子、螺丝刀等执行工具

第一层:Instructions — 项目的"入职手册"

是什么?

Instructions 是项目级的上下文信息,告诉 AI:

  • 这是什么项目?
  • 用什么技术栈?
  • 有哪些常用命令?
  • 代码/文件组织有什么约定?

在哪里配置?

工具配置文件加载方式
Claude CodeCLAUDE.md(项目根目录)自动加载
GitHub Copilot.github/copilot-instructions.mdsettings.json自动加载
Cursor.cursorrules自动加载

我的配置示例

我的博客项目 CLAUDE.md 长这样:

# CLAUDE.md

## Project Overview
Personal website/portfolio built with **Zola** (Rust-based static site generator).

## Commands
- `zola serve` — 本地开发服务器
- `zola build` — 构建静态站点

## Content Conventions
- Blog posts: `content/blog/YYYYMMDD-{slug}/index.md`
- Images for posts go in the same directory as `index.md`

关键特点

  • 每次请求都会加载:无论你问什么,这些内容都会被注入到 System Prompt
  • Token 消耗:内容越多,每次请求消耗的 token 越多
  • 建议精简:只放真正全局需要的信息

小技巧:让 Copilot 复用 CLAUDE.md

如果你同时用 Claude Code 和 GitHub Copilot,不想维护两份文件,可以在 .vscode/settings.json 中配置:

{
  "github.copilot.chat.codeGeneration.instructions": [
    { "file": "CLAUDE.md" }
  ]
}

这样 Copilot 也会读取 CLAUDE.md,一处维护,两边生效。

第二层:Prompts — 任务的"SOP 流程"

是什么?

Prompts 是任务级的模板,当你需要执行特定任务时调用。比如:

  • 写博客有固定格式要求
  • 写专利有特定结构
  • 代码审查有标准流程

在哪里配置?

工具配置位置调用方式
GitHub Copilot.github/prompts/*.prompt.md#文件名
Claude Code不直接支持,用 Skills 替代

我的配置示例

.github/prompts/
├── BlogWriter.prompt.md      # 写博客
├── PatentWriter.prompt.md    # 写专利
├── PaperWriter.prompt.md     # 写论文
└── BlogToWechat.prompt.md    # 博客转微信格式

BlogWriter.prompt.md 片段:

---
agent: 'agent'
---
你是 Polly 的博文写作助手...

<CONTENT_STRUCTURE>
* 开篇吸引:以引人入胜的问题、案例或现象开始
* 明确主题:在开头部分清晰表达核心议题
* 内容层次:使用清晰的标题组织内容
...
</CONTENT_STRUCTURE>

调用方式

在 Copilot Chat 中输入 #BlogWriter,就会加载这个模板:

你:#BlogWriter 帮我写一篇关于 MCP Server 的博客

Copilot 收到:
├── Instructions(CLAUDE.md)     ← 自动加载
├── BlogWriter.prompt.md 全文    ← #触发加载
└── 你的问题

关键特点

  • 手动触发:只在需要时加载,不浪费 token
  • 任务专用:每个 prompt 针对一种任务类型
  • 平台限定:目前主要是 GitHub Copilot 支持这种语法

第三层:Skills — 专业的"技能认证"

是什么?

Skills 是 Claude Code 特有的概念,比 Prompts 更进一步:

  • 不只是文字模板,还可以包含参考资料、脚本、工具使用指南
  • AI 会根据用户意图自动识别并调用合适的 skill
  • 类似于"专家模块"——写博客找博客专家,写代码找代码专家

在哪里配置?

.claude/skills/
├── blog-writer/
│   ├── SKILL.md              # 技能定义
│   ├── references/           # 参考资料
│   │   └── common-tags.md    # 常用标签
│   └── scripts/              # 辅助脚本
│       └── generate_cover.py # 封面图生成
├── blog-dev/
│   └── SKILL.md              # 博客开发技能
└── brainstorming/
    └── SKILL.md              # 头脑风暴技能

我的配置示例

blog-writer/SKILL.md 片段:

---
name: blog-writer
description: Polly 个人博客写作助手。Triggers on keywords 
like "写博文", "blog post", "写一篇", "发布文章".
---

# Blog Writer

## 核心原则
1. **第一人称叙述**: 始终使用"我"进行叙述
2. **语言匹配**: 根据用户输入语言选择中文或英文
3. **技术准确**: 代码、工具名称必须准确

## 写作工作流
### Phase 1: 理解需求
### Phase 2: 生成大纲
### Phase 3: 撰写正文
### Phase 4: 生成完整文件
### Phase 5: 生成封面图(可选)

触发方式

当我说"帮我写一篇博客"时,Claude Code 会:

  1. 扫描 .claude/skills/ 目录
  2. 匹配到 blog-writer 的触发词
  3. 自动读取 SKILL.md 及相关资源
  4. 按 skill 定义的流程执行

Skills vs Prompts 对比

维度PromptsSkills
平台GitHub CopilotClaude Code
触发手动 #名称AI 自动识别
内容单个 .md 文件目录结构(可含脚本、资料)
智能度被动模板主动能力模块

它们是不同平台的类似概念,不是一起使用的关系。

第四层:Tools — 实际的"工具箱"

是什么?

前三层都是"告诉 AI 怎么想",而 Tools 是"让 AI 能做事":

  • 读写文件
  • 执行终端命令
  • 调用外部 API
  • 操作数据库

常见的 Tools

类型示例来源
内置工具文件读写、终端执行、代码搜索AI 工具自带
MCP Tools翻译服务、数据库操作、自定义 APIMCP Server 提供
VS Code API编辑器操作、调试控制扩展提供

MCP Tools 示例

我开发的翻译 MCP Server 提供了这些 Tools:

@mcp.tool()
async def translate_document(file_path: str, target_lang: str):
    """翻译整篇文档"""
    ...

@mcp.tool()
async def extract_terminology(file_path: str):
    """提取术语表"""
    ...

当 AI 需要翻译文档时,会自动调用这些 tools。

Tools 与其他层的关系

Instructions → 告诉 AI 项目背景
Prompts/Skills → 告诉 AI 任务流程
Tools → 让 AI 实际执行操作

Tools 是执行层,前三层是知识层。

平台差异:Claude Code vs GitHub Copilot

理解完四层架构后,再看两个主流工具的差异就清晰了:

特性Claude CodeGitHub Copilot
InstructionsCLAUDE.mdsettings.json 配置
Prompts❌ 不支持.github/prompts/
Skills.claude/skills/❌ 不支持
ToolsMCP ToolsVS Code 内置 + MCP
自动识别能力✅ 强(会自动选 skill)⚠️ 弱(需手动 #调用)

我的配置策略

同时使用两个工具时,我的策略是:

  1. Instructions 共用CLAUDE.md 通过 settings.json 给 Copilot 用
  2. 任务模板分开:Copilot 用 prompts,Claude 用 skills
  3. Tools 共用:MCP Server 两边都能调用

文件结构:

/
├── CLAUDE.md                    # 共用
├── .vscode/settings.json        # 让 Copilot 读 CLAUDE.md
├── .github/prompts/             # Copilot 专用
│   ├── BlogWriter.prompt.md
│   └── ...
├── .claude/skills/              # Claude Code 专用
│   ├── blog-writer/
│   └── ...
└── Master-Translator-MCP-Server/  # MCP Tools,两边共用

实际工作流示例

场景:写一篇博客

用 GitHub Copilot:

我:#BlogWriter 帮我写一篇关于 MCP 的博客

System Prompt 包含:
├── CLAUDE.md (Instructions)      ← 自动
├── BlogWriter.prompt.md          ← #触发
└── 我的问题

用 Claude Code:

我:帮我写一篇关于 MCP 的博客

System Prompt 包含:
├── CLAUDE.md (Instructions)      ← 自动
├── blog-writer/SKILL.md          ← 自动识别
└── 我的问题

效果类似,但 Claude Code 不需要手动指定 #BlogWriter

一张表格总结

InstructionsPromptsSkillsTools
是什么项目上下文任务模板能力模块执行工具
类比入职手册SOP 流程技能认证工具箱
位置CLAUDE.md.github/prompts/.claude/skills/MCP Server
加载方式自动手动 #自动识别按需调用
Token 消耗每次都消耗调用时消耗调用时消耗不消耗
Copilot
Claude Code

写在最后

理清这四层架构后,配置 AI 助手就不再是"试错",而是有章可循:

  1. 全局信息放 Instructions——项目结构、命令、约定
  2. 任务流程放 Prompts/Skills——写博客、写专利的具体步骤
  3. 复杂能力做成 Tools——翻译服务、图像生成等

配置的核心原则是:让 AI 在需要的时候获取需要的信息,而不是一股脑全塞给它。

如果你也在配置自己的 AI 工作流,希望这篇梳理能帮到你。有问题欢迎在评论区讨论!

留言与讨论