🧠 上下文工程(Context Engineering):AI 应用开发的新范式 ------ 从理论到实战全解析
摘要:2024-2025 年,AI 交互范式经历了从 Prompt Engineering 到 Context Engineering 的关键跃迁。本文将从演进历程、核心概念、结构化方法论、代码实战、RAG 高阶应用等维度,全面解析上下文工程的方方面面,助你构建更可靠、更精准的 AI 应用。
一、引言:为什么"完美提示词"正在失效?
如果你是从 2022 年就开始使用 ChatGPT 的老用户,你一定对下面这套"咒语模板"不陌生:
markdown
你是一个资深的前端工程师,拥有10年 React 开发经验。
请帮我实现一个 TodoList 组件,要求:
1. 使用 TypeScript
2. 支持添加、删除、标记完成
3. 使用 useState 管理状态
4. 样式使用 Tailwind CSS
请一步一步思考,先设计数据结构,再编写组件代码。
这是典型的 Prompt Engineering(提示词工程) 实践------通过角色设定、任务分解、格式约束,试图"驯服"大模型输出我们想要的结果。
但这套方法论正面临一个尴尬的现实:即使写出最完美的提示词,也可能得不到好结果。
为什么呢?核心原因有三个:
- LLM 是基于 Transformer 架构的概率预测模型------它本质上是根据预训练知识"猜测"下一个 token,而非真正"理解"你的需求。
- LLM 的预训练数据是通用、滞后的------它不知道你的项目架构、代码风格、业务背景,而这些恰恰是决定输出质量的关键。
- AI 本身在进化 ------GPT-5、Gemini 3、Claude 4.6 等新一代模型拥有更强的推理能力,会自动优化用户的提示词。你绞尽脑汁写的复杂 prompt,模型可能已经"心领神会"了。
这就引出了一个核心问题:如果提示词不再是决定 AI 输出质量的关键,那什么才是?
答案就是------上下文工程(Context Engineering)。
二、AI 交互范式的三次跃迁
在深入上下文工程之前,我们先站在历史的高度,俯瞰 AI 交互范式的整体演进:
scss
Prompt Engineering Context Engineering Harness Engineering
(2022-2023) → (2024-2025) → (2025-2026)
2.1 第一阶段:Prompt Engineering(2022-2023)
- 代表产品:ChatGPT、GitHub Copilot
- 核心思想:设计完美的提示词,给 LLM 下达精确指令
- 典型做法:角色设定 + 任务拆解 + 示例引导(Few-shot)
- 核心痛点:不确定性高,"正确的胡说八道"(幻觉)频发,依赖用户自身的 prompt 设计能力
- 底层模型:GPT-3.5 级别
这个阶段,AI 主要基于预训练数据直接生成回答,你给它什么 prompt,它就基于训练数据"猜"一个回答。由于没有额外的信息补充,LLM 只能凭"记忆"作答,准确性和可靠性都无法保证。
2.2 第二阶段:Context Engineering(2024-2025)
- 代表产品:Cursor、Claude Code、各种 RAG 应用
- 核心思想:在 LLM 回答前,先检索相关资料,补充到上下文中
- 典型做法:结构化上下文对象(背景 + 约束 + 输出要求)、RAG 检索增强生成
- 核心价值:更靠谱、更准确、可工程化
这个阶段的标志性转变是:不再直接利用 LLM 的预训练知识回答,而是在回答前先检索相关资料,加到 prompt 里。
Cursor 是这个阶段的典型代表------它"基于 VSCode 又干掉了 VSCode",将你的整个代码库作为上下文 (技术架构、代码风格、功能模块、依赖关系......),让 AI 理解项目全貌后再去生成代码。结果是:AI 做主力开发,人类做辅助审查。
2.3 第三阶段:Harness Engineering(2025-2026)
- 代表产品:Claude Code、Codex、Hermes(爱马仕)
- 核心思想:为 LLM 套上完整的工程化"挽具"(规则、护栏、记忆、工具链)
- 核心价值:确定性交付,类似传统软件的工程化水平
- 行业趋势:LLM 在 2025-2026 年走向成熟,企业全面拥抱 AI 数字化
这一阶段已经超越了"上下文"的范畴,进入更高维度的工程化体系搭建。本文不做展开,后续将有专文深入探讨。
三、上下文工程的核心理念
3.1 定义
上下文工程(Context Engineering)的本质,不是写一句提示词(prompt),而是为 AI 搭建一个包含"背景"和"约束"的结构化信息体系,目标是让 AI 准确、靠谱地完成任务。
这跟传统 Prompt Engineering 有根本性的思维差异:
| 维度 | Prompt Engineering | Context Engineering |
|---|---|---|
| 关注点 | 怎么说(how to ask) | 给什么信息(what to give) |
| 核心动作 | 设计措辞 | 构建信息结构 |
| 信息流向 | 单向指令 | 双向上下文注入 |
| 可复用性 | 低(prompt 耦合场景) | 高(上下文模板可复用) |
| 工程化程度 | 低(手艺活) | 高(系统工程) |
| 结果可靠性 | 不稳定 | 显著提升 |
3.2 为什么上下文工程更有效?
这里有一个认知转变非常重要:
用户的 prompt 不是直接被拿去生成的。现代 LLM 会自动优化你的提示词,AI 已经理解了人类常见的需求模式。
具体来说,当前 AI 系统在处理用户请求时经历了以下流程:
markdown
用户 prompt
│
▼
┌─────────────────────────────────────┐
│ 1. LLM 自动优化 prompt │
│ 2. 上下文技术注入(RAG、知识库) │
│ 3. MCP 工具调用 │
│ 4. Skills 能力加载 │
└─────────────────────────────────────┘
│
▼
Transformer 生成
│
▼
┌─────────────────────────────────────────┐
│ Loop Engineering + Harness Engineering │
│ (循环校验 + 工程化护栏) │
└─────────────────────────────────────────┘
│
▼
FDE(AI 工程交付)
在这个流水线中,上下文注入是决定输出质量的核心环节。你的背景信息越丰富、约束条件越清晰,AI 的生成就越精准。
四、上下文的结构化思想:三维模型
上下文工程的方法论核心,是将上下文信息结构化。我总结为以下三个维度:
css
┌──────────────────────────────────────┐
│ 上下文三维模型 │
│ │
│ ① 背景(Background) │
│ 你是谁?你要做什么?目的是什么? │
│ │
│ ② 约束(Constraints) │
│ 有什么限制条件?什么能做/不能做? │
│ │
│ ③ 输出要求(Output Requirements) │
│ 输出什么格式?什么风格?给谁看? │
└──────────────────────────────────────┘
4.1 背景(Background)
背景回答三个核心问题:
- 我是谁?------角色、身份、场景
- 我在做什么?------任务、目标
- 我的环境是什么?------技术栈、业务领域
好的背景描述应该是具体的、事实性的,而不是泛泛的角色设定。例如:
- ❌ 不好的背景:"我是一个开发者"(太泛)
- ✅ 好的背景:"我是大学附近奶茶店的老板,客户多是 17-25 岁的学生,客单价 15-20 元"(具体、有数据)
4.2 约束(Constraints)
约束定义了边界条件------在什么范围内答案有效?
- 硬约束:绝对不能违反的条件(如成本上限、合规要求)
- 软约束:倾向性建议(如风格偏好、优先级)
约束是防止 LLM "天马行空"的关键。没有约束的 LLM 会给出看似完美但实际无法落地的方案。
4.3 输出要求(Output Requirements)
输出要求规定了交付物的形态:
- 格式:JSON、Markdown、代码、表格......
- 风格:专业严谨、轻松幽默、适合社交传播......
- 受众:技术人员、业务人员、终端用户......
结构化输出(如 JSON Schema)尤其重要------它让 AI 的输出从"非结构化文本"变成"可编程的数据",打通了 AI 与工程系统的最后一公里。
五、实战代码:用上下文工程构建奶茶研发 AI
理论说完了,我们来写一个完整的 Demo。这个 Demo 完整展示了上下文工程从"设计上下文结构"到"调用大模型"再到"解析结构化输出"的全流程。
5.1 场景设定
我是大学附近奶茶店的老板,想在夏季推出一款新饮品,需要 AI 帮我研发设计。
5.2 项目结构
bash
context-demo/
├── .env # API 密钥
├── package.json # 依赖管理
├── pnpm-lock.yaml # 依赖锁定
└── index.mjs # 主程序
5.3 环境配置
.env 文件------API 密钥与配置分离:
env
DEEPSEEK_API_KEY=sk-your-api-key-here
DEEPSEEK_API_BASE_URL=https://api.deepseek.com
package.json ------最简依赖,只需 openai 和 dotenv:
json
{
"name": "context-engineering-demo",
"version": "1.0.0",
"type": "commonjs",
"dependencies": {
"dotenv": "^17.4.2",
"openai": "^6.45.0"
}
}
💡 设计亮点 :使用 OpenAI SDK 的兼容模式调用 DeepSeek API。这种"统一 SDK、切换后端"的做法本身就是上下文工程思想在工程层面的体现------解耦 LLM 提供商,让上下文结构可跨模型复用。
5.4 核心代码
javascript
import OpenAI from 'openai';
import 'dotenv/config';
// 1. 客户端初始化(OpenAI 兼容模式 → DeepSeek)
const client = new OpenAI({
apiKey: process.env.DEEPSEEK_API_KEY,
baseURL: process.env.DEEPSEEK_API_BASE_URL,
});
// 2. ⭐ 核心:结构化上下文对象
const context = {
// 背景:你是谁?场景是什么?
background:
'我是大学附近的奶茶店老板,客户多是17-25岁的学生,客单价15-20元',
// 约束:限制条件是什么?
constraints: '夏季要清爽,成本控制在8元内',
// 输出要求:要什么样的结果?
outputRequirements:
'要颜值高(适合发朋友圈),请输出JSON格式,包含饮料名、配料、成本、定价',
};
// 3. 将上下文注入 System Prompt
const systemPrompt = `
你是一个专业的饮品研发专家,请根据以下上下文信息完成任务。
[需求背景]
${context.background}
[约束条件]
${context.constraints}
[输出要求]
${context.outputRequirements}
`;
// 4. 调用大模型
async function generateNewTea() {
try {
console.log(' 正在请求大模型,上下文工程已就绪...\n');
const completion = await client.chat.completions.create({
model: 'deepseek-v4-pro', // 底层模型可替换
messages: [
{ role: 'system', content: systemPrompt },
{ role: 'user', content: '请开始你的研发设计' },
],
temperature: 0.7, // 适度创造性
});
const aiResponse = completion.choices[0].message.content;
console.log('✨ AI 研发成果:');
console.log(aiResponse);
// 5. 结构化输出解析(容错处理)
try {
const jsonData = JSON.parse(aiResponse);
console.log('\n✅ 成功解析为 JSON 对象:', jsonData);
// 这里可以将 jsonData 存入数据库、传给前端、触发后续流程...
} catch (err) {
console.log('\n⚠️ 返回的不是标准 JSON 格式,可能需要重试');
}
} catch (err) {
console.error('❌ 大模型调用失败:', err.message);
}
}
// 6. 执行
generateNewTea();
5.5 代码精读:上下文工程的五个关键设计
设计一:上下文与提示词分离
javascript
const context = { background, constraints, outputRequirements };
const systemPrompt = `...${context.background}...`;
为什么这样设计?
context对象是纯数据,可以来自数据库、API、配置文件、用户输入......systemPrompt是模板,关注的是"如何组织信息"- 两者解耦后,同一个上下文可以套用不同的 prompt 模板,实现 A/B 测试
设计二:三维上下文的协同效应
arduino
background → 定义问题域("奶茶店、学生、15-20元")
+
constraints → 收紧解空间("夏季、清爽、成本<8元")
+
outputRequirements → 规范输出形态("高颜值、JSON格式")
‖
精准、可用的 AI 输出
三个维度缺一不可。缺少背景,AI 不知道为谁设计;缺少约束,方案没有可行性;缺少输出要求,结果无法被下游系统消费。
设计三:模型无关的上下文设计
注意:这个 context 对象不包含任何模型特定的指令(如 "你是 ChatGPT"、"Think step by step")。它描述的是业务事实 ,而非推理指令。
这意味着同样的上下文结构,无论底层是 DeepSeek、Claude 还是 GPT,都能产出质量相近的结果。这是上下文工程走向工程化的关键:上下文是资产,可以在不同模型间迁移。
设计四:容错 = 工程化
javascript
try {
const jsonData = JSON.parse(aiResponse);
// 正常流程...
} catch (err) {
console.log('返回的不是JSON格式');
// 降级策略:重试、人工介入、默认值...
}
上下文工程追求的不是"一次完美输出",而是可靠的系统工程 。LLM 的输出是概率性的(同一输入可能得到不同输出),因此容错处理是上下文工程中不可或缺的工程环节。
设计五:结构化输出打通最后一公里
要求 AI 输出 JSON,不仅仅是为了"好看",而是让 AI 的输出可以被代码直接消费。这意味着:
- AI 的输出可以存入数据库
- AI 的输出可以触发自动化流程
- AI 的输出可以与现有系统集成
这就是从"对话式 AI"到"工程化 AI"的关键一步。
六、RAG:上下文工程的最高阶应用
6.1 RAG 是什么?
RAG = Retrieval-Augmented Generation(检索增强生成)
Retrieval(检索) → Augmented(增强) → Generation(生成)
先找到相关资料 加到上下文中 再让 LLM 生成
RAG 是上下文工程中最高效、最高阶的应用场景之一。它的核心逻辑非常直观:
与其让 LLM 凭"记忆"回答问题,不如先把相关资料找出来,作为上下文喂给它。
6.2 RAG 的两类上下文来源
上下文工程中的信息源可以分为两大类:
| 类型 | 特点 | 示例 |
|---|---|---|
| 静态上下文 | 变化频率低,可预先准备 | 产品文档、API 手册、公司制度、知识库 |
| 动态上下文 | 实时变化,需要运行时获取 | 用户订单数据、实时库存、当前天气、CRM 数据 |
一个成熟的上下文工程系统,应该能同时处理静态和动态上下文,将它们有机组合后注入 prompt。
6.3 RAG 的实际场景
- 法律 AI 助手:检索相关法条和判例 → 增强上下文 → 给出法律建议
- 代码助手(Cursor):检索整个代码库(架构、风格、依赖)→ 增强上下文 → 生成符合项目规范的代码
- 客服 AI:检索用户订单历史 + 产品 FAQ → 增强上下文 → 给出个性化回复
- 企业知识库:检索内部文档 → 增强上下文 → 回答员工问题
七、上下文工程的最佳实践总结
7.1 设计原则
-
事实优于指令
- 告诉 AI "客户是学生,客单价 15-20 元"(事实),比告诉它"你要设计一个便宜的饮品"(指令)更有效。
- AI 的推理能力远超你的指令设计能力------给它事实,让它自己推理。
-
结构化优于文本化
{ background, constraints, outputRequirements }比一段自然语言描述更可靠。- 结构化的上下文便于复用、测试、版本管理。
-
工程化优于提示词手艺
- 不要追求"写出完美的 prompt",而要追求"构建可复用的上下文体系"。
- 容错处理、输出校验、降级策略,都是上下文工程的必要组成部分。
-
模型无关优于模型绑定
- 上下文设计不应依赖特定模型的行为特征。
- 好的上下文结构可以在不同模型间迁移。
7.2 实践检查清单
在构建 AI 应用时,问自己以下几个问题:
- 我的上下文是否包含了背景(谁、做什么、为什么)?
- 我的上下文是否包含了约束(边界条件、硬性限制)?
- 我的上下文是否包含了输出要求(格式、风格、受众)?
- 我的静态上下文是否预加载了(文档、知识库)?
- 我的动态上下文是否实时获取了(用户数据、业务状态)?
- 我是否设计了容错和降级策略?
- 输出是否做了结构化解析,能否被下游系统消费?
八、总结与展望
核心要点回顾
- Context Engineering 是 Prompt Engineering 的进化:从"怎么写"升级到"给什么信息"。
- 三维上下文模型:背景 + 约束 + 输出要求 = 精准的 AI 输出。
- 结构化思维是核心:将上下文从自然语言文本提升为可编程的数据结构。
- RAG 是最高阶应用:检索 + 增强 + 生成,让 AI 基于事实而非记忆工作。
- 工程化是最终目标:容错、校验、降级、可复用------让 AI 输出可靠、可预测。
下一步:Harness Engineering
上下文工程解决了"让 AI 理解我们要什么"的问题。但 AI 应用开发中还有更深层的挑战:
- AI 是无状态的------每次对话结束,它什么都不记得
- AI 无法主动操作外部世界------它只能生成文字
- AI 的输出是概率性的------同一输入可能得到不同结果
- AI 有上下文窗口限制------无法无限处理信息
这些结构性缺陷,需要在上下文之上搭建更高维度的工程体系来补全------这就是 Harness Engineering(挽具工程)。