在AI领域,一个重要的概念转变正在发生:从"Prompt Engineering"转向"Context Engineering"。这不仅仅是术语的变化,更代表了我们对AI系统工作方式认知的深刻转变。

Shopify CEO Tobi Lutke 说:
"我更喜欢'Context Engineering'这个术语,而不是'Prompt Engineering'。它更好地描述了核心技能:为任务提供所有上下文,让LLM能够合理地解决问题的艺术。"
为什么需要这个转变?
Prompt Engineering的局限性
传统的"Prompt Engineering"让人联想到的是在聊天机器人中输入一些指令,这种理解过于简化了。虽然我们希望这个术语能够涵盖构建可靠提示词的内在复杂性,但现实是,大多数人对它的理解停留在表面。
Context Engineering的广度
Context Engineering则不同,它是一个更全面的概念。Andrej Karpathy认为:
"Context Engineering是一门精妙的艺术和科学,需要在上下文窗口中填充恰当的信息以完成下一步任务。"
什么是Context?
要理解Context Engineering,我们首先需要扩展对"上下文"的定义。它不仅仅是发送给LLM的单个提示词,而是模型在生成响应前看到的所有信息:
1. 指令/系统提示词
-
定义模型在对话中行为的初始指令集 -
应该包含示例、规则等
2. 用户提示词
-
来自用户的直接任务或问题
3. 状态/历史(短期记忆)
-
当前对话,包括导致此刻的用户和模型响应
4. 长期记忆
-
跨多次对话收集的持久知识库 -
包含学到的用户偏好、过去项目摘要或需要记住的事实
5. 检索信息(RAG)
-
来自文档、数据库或API的外部最新知识 -
用于回答特定问题的相关信息
6. 可用工具
-
所有可调用函数或内置工具的定义 -
如check_inventory、send_email等
7. 结构化输出
-
模型响应格式的定义 -
如JSON对象结构

从"便宜演示"到"神奇产品"
Context Engineering的威力在于能够将简单的演示转变为真正有用的产品。看一个具体的例子:
场景:AI助手收到邮件
"嗨,看看你明天有空简单聊聊吗?"
"便宜演示"Agent的回应:
-
上下文贫乏,只看到用户请求 -
回应机械化: "感谢您的消息。明天我有空。请问您想要什么时间?"
"神奇"Agent的回应:
-
丰富的上下文,包括:
-
日历信息(显示明天已排满) -
与此人的历史邮件(确定合适的非正式语调) -
联系人列表(识别为重要合作伙伴) -
发送邀请或邮件的工具 -
生成的回应:
"嗨Jim!明天我这边排得很满,一整天都是会议。周四上午有空,可以吗?我发了个邀请,看看是否合适。"
关键在于:魔法不在于更聪明的模型或更巧妙的算法,而在于为正确的任务提供正确的上下文。
Context Engineering的定义
简单来说:
Context Engineering是设计和构建动态系统的学科,这些系统在正确的时间,以正确的格式,提供正确的信息和工具,给LLM完成任务所需的一切。
Context Engineering具有以下特征:
1. 系统性,而非字符串
-
上下文不是静态的提示词模板 -
它是在主LLM调用之前运行的系统输出
2. 动态性
-
实时创建,针对具体任务定制 -
一个请求可能需要日历数据,另一个可能需要邮件或网络搜索
3. 正确的信息和工具,在正确的时间
-
核心工作是确保模型不会错过关键细节 -
既提供知识(信息)又提供能力(工具)
4. 格式很重要
-
简洁的摘要优于原始数据转储 -
清晰的工具模式优于模糊的指令
Agent的Context Engineering策略
对于长期运行的AI Agent,Context Engineering变得更加重要。Lance Martin将其分为四大策略:
1. 写入上下文 (Write Context)
将上下文保存在上下文窗口之外,以帮助Agent执行任务。
草稿本 (Scratchpads)
-
像人类解决任务时做笔记一样 -
将信息保存在上下文窗口外,供Agent使用 -
可以通过工具调用或运行时状态对象实现
记忆 (Memories)
-
跨会话记住信息 -
包括反思和自生成记忆 -
如ChatGPT、Cursor、Windsurf的记忆机制
2. 选择上下文 (Select Context)
将相关上下文拉入上下文窗口。
记忆选择
-
选择与任务相关的记忆 -
使用嵌入或知识图谱进行索引 -
挑战:确保选择相关记忆
工具选择
-
使用RAG为任务选择最相关的工具 -
避免工具过载造成的混乱 -
提高工具选择准确性
3. 压缩上下文 (Compress Context)
只保留执行任务所需的token。
上下文摘要
-
当超过上下文窗口95%时自动压缩 -
使用递归或层次摘要策略 -
在工具调用边界添加摘要
上下文修剪
-
使用启发式方法过滤上下文 -
如从消息列表中删除旧消息 -
训练的上下文修剪器
4. 隔离上下文 (Isolate Context)
将上下文分割以帮助Agent执行任务。
多Agent系统
-
将关注点分离到不同的子Agent -
每个Agent有特定的工具、指令和上下文窗口 -
并行探索问题的不同方面
环境隔离
-
使用代码沙箱隔离token密集的对象 -
通过状态对象管理上下文 -
选择性地向LLM公开信息
实际应用中的挑战
Context Engineering在实际应用中面临多种挑战:
1. 上下文污染
-
幻觉信息进入上下文 -
需要验证和过滤机制
2. 上下文分心
-
过多上下文压倒训练数据 -
需要平衡相关性和完整性
3. 上下文混乱
-
多余的上下文影响响应 -
需要精确的相关性判断
4. 上下文冲突
-
上下文部分之间存在分歧 -
需要优先级和一致性机制
工具和实现
代码Agent的Context Engineering
代码Assistant面临的挑战特别复杂。Windsurf团队的经验是:
"索引代码 ≠ 上下文检索…我们进行索引和嵌入搜索…通过AST解析代码并在语义边界上分块…随着代码库规模增长,嵌入搜索作为检索启发式变得不可靠…我们必须依赖grep/文件搜索、基于知识图谱的检索等技术组合…以及重排序步骤。"
产品中的Context Engineering
目前主要产品都在探索Context Engineering:
-
Claude Code: 使用CLAUDE.md存储指令 -
Cursor和Windsurf: 使用规则文件 -
ChatGPT: 存储和选择大量用户特定记忆
未来展望
Context Engineering正在成为AI应用开发的核心技能。Cognition公司认为:
"Context Engineering实际上是构建AI Agent的工程师的第一要务。"
随着AI Agent变得越来越复杂,处理数百轮对话,Context Engineering将变得更加重要。我们需要:
-
更智能的上下文管理策略 -
更好的工具和框架 -
标准化的最佳实践 -
跨功能的理解和协作
结论
从Prompt Engineering到Context Engineering的转变,标志着AI应用开发的成熟。这不仅仅是技术的进步,更是思维方式的转变。
构建强大可靠的AI Agent,关键不在于找到神奇的提示词或等待模型更新,而在于工程化地构建上下文,在正确的时间,以正确的格式,提供正确的信息和工具。
这是一个跨功能的挑战,需要理解业务用例、定义输出格式,并结构化所有必要信息,让LLM能够"完成任务"。
再见,Prompt Engineering;你好,Context Engineering。

