一句话总结
一个完整的Context = System Prompt + RAG + Tool描述 + Memory + Metadata,五层叠加,缺一不可。
就像盖房子需要地基、框架、装修、家具、电器,AI的上下文也需要五层组件协同工作。
为什么需要分层?
上一篇我们知道了Context Engineering是”给AI看什么材料”。但具体要给AI看哪些材料?
答案是五层:
`
┌─────────────────────────────────────┐
│ 第5层:Metadata(元数据) │ ← 时间、用户、环境
├─────────────────────────────────────┤
│ 第4层:Memory(记忆) │ ← 短期/长期记忆
├─────────────────────────────────────┤
│ 第3层:Tool Descriptions(工具描述) │ ← 函数/工具定义
├─────────────────────────────────────┤
│ 第2层:RAG(检索增强) │ ← 外部知识库
├─────────────────────────────────────┤
│ 第1层:System Prompt(系统提示) │ ← 角色、规则、格式
└─────────────────────────────────────┘
`
每一层都有自己的作用,就像洋葱一样,一层一层包裹。
第1层:System Prompt(系统提示)
是什么?
告诉AI”你是谁”、”你要做什么”、”你要遵守什么规则”。
包含什么?
- 角色定义:你是一位资深技术博主
- 行为约束:不要使用emoji
- 输出格式:用Markdown格式输出
- 边界条件:不要编造信息
示例
`
你是一位资深技术博主,公众号”攀岩者”的作者。
你的写作风格是:
- 亲切专业,像一位耐心的老师
- 善用类比和举例
- 结构清晰,重点加粗
- 长度约2500字
约束:
- 不要使用emoji(标题禁止)
- 必须有配图说明
- 必须包含”地铁深读”板块
`
最佳实践
- 放在最前面:System Prompt通常在上下文最前面,模型会优先关注
- 明确边界:告诉AI什么能做,什么不能做
- 结构化:用列表、标题组织,避免一大段文字
第2层:RAG(检索增强生成)
是什么?
从外部知识库动态检索相关信息,注入到上下文中。
为什么需要?
- AI的知识有截止日期
- AI不知道你的私有数据
- AI可能”幻觉”编造信息
工作流程
`
用户问题 → 检索相关文档 → 注入上下文 → AI基于文档回答
`
示例
用户问:”你们公司的退货政策是什么?”
RAG检索到:
`
【公司退货政策v2.1】
- 7天无理由退货
- 15天内质量问题免费换货
- 退货运费由买家承担
`
AI基于这个文档回答,而不是凭空编造。
最佳实践
- 语义分块:按语义切分文档,保持上下文完整性
- 混合检索:向量检索 + 关键词检索,提高召回率
- 重排序:先粗检索(top-20),再精排(top-5)
- Token感知:根据剩余token预算动态调整检索数量
- 来源标注:为检索结果添加来源,帮助AI判断可信度
第3层:Tool Descriptions(工具描述)
是什么?
告诉AI有哪些工具可用,怎么调用。
为什么重要?
- 工具描述不清 → AI选错工具
- 参数说明不明 → AI传错参数
- 使用时机不明确 → AI在不该用时用了
示例
`json
{
“name”: “search_files”,
“description”: “在指定目录中搜索文件内容,支持正则表达式”,
“parameters”: {
“query”: {“type”: “string”, “description”: “搜索关键词或正则”},
“path”: {“type”: “string”, “description”: “搜索目录,默认当前目录”}
},
“when_to_use”: “需要查找文件内容、定位代码位置时”,
“when_not_to_use”: “需要读取完整文件时,应使用read_file”
}
`
最佳实践
- 名称清晰:动词+名词,如
search_files、create_document - 描述准确:一句话说明功能,避免歧义
- 参数完整:类型、含义、默认值都要说明
- 使用时机:何时该用、何时不该用
- 提供示例:1-2个调用示例
第4层:Memory(记忆)
是什么?
AI的”记忆”系统,包括短期记忆(当前对话)和长期记忆(跨会话)。
记忆分层
| 层级 | 类型 | 生命周期 | 例子 |
|---|
|——|——|———-|——|
| Working Memory | 当前对话上下文 | 会话级 | 刚才说了什么 |
|---|---|---|---|
| Episodic Memory | 具体事件记录 | 持久化 | 上次帮用户写了什么文章 |
| Semantic Memory | 抽象知识 | 持久化 | 用户喜欢什么风格 |
| Procedural Memory | 模式和教训 | 持久化 | 什么方法有效,什么会失败 |
示例
`
Working Memory: 用户刚才说”写一篇关于AI的文章”
Episodic Memory: 上次帮用户写了Day40的早课,主题是AI搜索
Semantic Memory: 用户喜欢亲切专业的风格,不要emoji
Procedural Memory: 用户对排版要求很高,要用standard模板
`
最佳实践
- 分层存储:不同类型的记忆用不同的存储策略
- 智能检索:根据当前任务检索相关记忆
- 衰减机制:不常用的记忆逐渐衰减
- 反思机制:定期将经验提炼为教训
第5层:Metadata(元数据)
是什么?
关于上下文的”上下文”,包括时间、用户信息、环境变量等。
包含什么?
- 时间信息:今天日期、当前时间
- 用户信息:用户ID、偏好、历史行为
- 环境信息:操作系统、网络状态、可用资源
- 任务信息:任务类型、优先级、截止时间
示例
`
当前时间: 2026-06-27 10:00:00
用户: climbing(技术总监,19年IT经验)
环境: Linux (Arch Linux), 15G内存
任务: 写公众号文章(早课,Day 2)
`
为什么重要?
- AI需要知道”今天几号”才能写日期
- AI需要知道”用户是谁”才能调整风格
- AI需要知道”环境是什么”才能选择合适的工具
五层如何协作?
一个完整的上下文组装过程:
`
- 加载System Prompt(角色、规则、格式)
- 执行RAG检索(从知识库找相关文档)
- 加载Tool描述(告诉AI有哪些工具)
- 检索Memory(找相关记忆和历史)
- 注入Metadata(时间、用户、环境)
- 拼接用户输入(当前问题)
- 发送给LLM
`
Token预算分配示例
| 层级 | Token预算 | 占比 |
|---|
|——|———–|——|
| System Prompt | 2,000 | 5% |
|---|---|---|
| RAG结果 | 15,000 | 37% |
| Tool描述 | 5,000 | 12% |
| Memory | 8,000 | 20% |
| Metadata | 1,000 | 2% |
| 对话历史 | 8,000 | 20% |
| 留给输出 | 1,000 | 4% |
| 总计 | 40,000 | 100% |
🚇 地铁深读:实际案例分析
案例:Hermes Agent的六层架构
Hermes Agent(我运行的系统)就是一个完整的Context Engineering实践:
`
Hermes的上下文组装:
├── System Prompt(角色定义、技能列表、用户画像)
├── Skills(技能描述和使用指南)
├── Tools(工具描述和参数说明)
├── Memory(用户偏好、历史教训、环境信息)
├── Session History(当前对话历史)
└── Metadata(时间、平台、模型信息)
`
每次用户发消息,Hermes都会:
- 加载System Prompt(包含用户画像、技能列表)
- 根据任务选择相关Skills
- 加载Tools描述
- 检索相关Memory
- 拼接对话历史
- 注入Metadata
- 发送给LLM
这就是Context Engineering的实际应用。
今日小结
| 层级 | 核心作用 | 关键技术 |
|---|
|——|———-|———-|
| System Prompt | 角色和规则 | 角色定义、行为约束、输出格式 |
|---|---|---|
| RAG | 外部知识 | 向量检索、混合检索、重排序 |
| Tool | 工具能力 | 工具描述、参数说明、使用时机 |
| Memory | 历史经验 | 分层存储、智能检索、衰减机制 |
| Metadata | 环境信息 | 时间、用户、环境、任务 |
一句话记住: 五层叠加,缺一不可,就像盖房子需要地基、框架、装修、家具、电器。
下期预告
AI PRO·Context Day 3 RAG深度解析:从检索到生成的完整链路
我们将深入解析RAG的每一个环节:分块、嵌入、检索、重排序、注入,看看如何让AI”看到”最相关的知识。
*攀岩者 | 技术总监 | 19年IT全栈实战*
*每天分享AI学习笔记,陪你从零基础到AI达人*
发表回复