随着人工智能代理(AI Agents)变得越来越复杂,一个关键挑战随之出现:如何有效地管理上下文? 上下文工程(Context Engineering)是一门对进出AI代理的信息流进行策略性管理的艺术和科学,旨在确保它们能够在正确的时间得到正确的信息,同时优化性能、成本和准确性。
上下文工程可视为AI代理的内存管理系统——正如人类的认知依赖于不同类型的记忆(工作记忆(working memory)、长期记忆(long-term memory)、情景记忆(episodic memory)),AI代理也需要复杂的上下文管理才能在复杂的、多轮对话场景中有效地运行。
为什么上下文工程很重要
现代AI应用面临数个与上下文相关的挑战:
令牌(Token)限制: 大多数大型语言模型(LLM)都有有限的上下文窗口(4K到200K tokens),这要求对所包含的信息进行策略性取舍。
成本优化: 每个令牌都需要花费成本。低效的上下文管理可能导致生产应用中的成本呈指数级增长。
信息相关性: 并非所有上下文对每个任务都同等重要。不相关的信息实际上可能通过干扰或混淆而损害性能。
状态持久性: AI代理需要在不同会话之间保持状态,记住用户偏好,并在先前的交互基础上持续构建。
上下文工程的四大支柱
基于图示中的框架,上下文工程包括四个基本操作:

-
写入上下文:持久化信息 写入上下文涉及将信息存储在当前上下文窗口之外以供日后检索。 这会创建一个持久的知识层,供代理在不同会话和任务中访问。
存储类型:
长期记忆: 跨会话保持(用户偏好、习得的行为、历史交互)
短期记忆: 会话内保持(对话历史、临时变量、工作流状态)
状态对象: 运行时状态管理(当前任务进度、临时计算、会话变量)
实现示例:
# 长期记忆存储 user_profile = { "preferences": { "communicationStyle": "technical", "expertise": "senior-developer" }, "projectContext": { "currentProject": "video-editor", "techStack": ["React", "RxJS", "PIXI.js"] }, "conversationHistory": [ # ... previousSessions ] } # 短期记忆(当前会话) session_state = { "currentTask": "debugging timeline drag-drop", "activeFiles": ["timeline.jsx", "dragHandler.js"], "recentErrors": [ # ... ] } -
读取上下文:策略性信息检索 读取上下文涉及将相关信息智能地提取到代理的工作上下文窗口中。这需要复杂的检索机制和相关性评分。
上下文来源:
工具: 外部 API、数据库、文件系统
知识库: 文档、向量数据库、结构化数据
记忆系统: 先前写入操作存储的上下文

智能检索策略:语义搜索: 使用向量嵌入来寻找具有上下文相关性的信息
新近性加权: 优先考虑最近的交互和更新
面向任务的过滤: 只检索与当前目标相关的上下文
渐进式加载: 从必要的上下文开始,根据需要加载额外细节
-
压缩上下文:智能摘要上下文压缩用于解决这样一个现实:检索到的信息通常包含冗余、无关细节或过多的冗长。 有效的压缩能够保留关键信息,同时减少令牌使用量。

压缩技术:分层摘要: 创建分层的摘要(详细 → 中等 → 高层次)
实体抽取: 聚焦于关键实体、关系和事实
意图保留: 确保压缩后的上下文保留原始意图和含义
模板式压缩: 使用结构化格式来标准化压缩输出
压缩示例:
1// 原始上下文 (500 tokens) 2"用户正在开发一个基于React的视频编辑器应用,他们在时间轴组件上遇到了拖拽操作无法正常工作的问题。这个时间轴使用PIXI.js进行渲染,并通过RxJS的可观察对象进行复杂的状态管理。他们尝试了多种解决方案,包括更新拖拽事件处理程序、检查事件传播以及调试状态更新。此外,该应用还使用GSAP实现动画,并与Chromatic集成以进行视觉回归测试。。。" 3 4// 压缩后的上下文 (100 tokens) 5"项目:React 视频编辑器,包含 PIXI.js 时间线。 问题:拖放操作不起作用。 技术:RxJS 状态管理,GSAP 动画。 尝试过:更新事件处理程序,调试状态。 测试:Chromatic 集成。" -
隔离上下文:专用环境管理 上下文隔离涉及有策略地将不同类型的上下文分开,以防止互相干扰并实现专门的处理。 对于涉及多个方面的复杂应用来说,这是至关重要的。
隔离策略:
多代理架构: 不同的代理处理问题的不同方面
沙盒环境: 为代码、实验或敏感操作提供隔离的执行上下文
状态分区: 为不同的功能域分离状态对象

上下文的六种类型
要进行有效的上下文工程,需要了解代理所需的不同类型的上下文:
-
指令上下文
- 角色定义: 代理应该采用什么角色?
- 目标: 需要实现哪些具体目标?
- 要求: 必须遵循哪些约束、格式或标准?
-
示例上下文
- 行为示例: 代理应该如何思考并解决问题?
- 响应示例: 良好的输出应该是什么样的?
- 反模式: 应避免哪些错误?
-
知识上下文
- 外部知识: 特定领域的信息、文档、最佳实践
- 特定任务知识: API、schema、工作流、技术规范
-
记忆上下文
- 短期记忆: 当前会话状态、最近的交互
- 长期记忆: 用户偏好、历史规律、习得的行为
-
工具上下文
- 工具描述: 每个工具能做什么,以及应在何时使用
- 参数: 所需输入、可选设置、预期输出
- 结果: 如何解释并利用工具输出
-
护栏上下文
- 输入验证: 确保输入干净、安全
- 操作约束: 将工具和动作限制在安全、批准的操作范围之内
- 输出验证: 确保响应符合安全和质量标准
上下文策略:
写入上下文: 存储用户编辑偏好、项目设置、常用效果
读取上下文: 检索当前时间线状态、可用素材、用户的编辑历史
压缩上下文: 将长时间的编辑会话总结为关键决策和更改
隔离上下文: 将渲染操作与 UI 交互分离,隔离撤销/重做状态
最佳实践和模式
上下文生命周期管理

性能优化
延迟加载: 仅在需要时才加载上下文,而非预先加载。
上下文缓存: 缓存经常访问的上下文以减少检索开销。
增量更新: 以渐进方式更新上下文,而非重写全部内容。
上下文修剪: 定期移除过时或无关的上下文。
质量保证
上下文验证: 确保检索的上下文相关且准确。
反馈循环: 从代理的表现中学习,以改进上下文选择。
A/B 测试: 测试不同的上下文策略以优化性能。
工具和技术
开源上下文工程栈
内存管理:
Zep AI: 面向 AI 代理的高级内存管理
Redis: 快速的内存数据结构存储
PostgreSQL 搭配 pgvector: 向量相似搜索
知识库:
Milvus: 开源向量数据库
ChromaDB: AI 原生向量数据库
Weaviate: 内置机器学习模型的向量搜索引擎
代理编排:
CrewAI: 多代理系统框架
LangGraph: 基于图的代理工作流管理
AutoGen: 多代理对话框架
可观测性和跟踪:
LangSmith: 用于 LLM 应用的调试和测试
Weights & Biases: 实验跟踪和监控
上下文工程模式
-
上下文金字塔: 从一般层面(底层)到具体层面(顶层)构建上下文
- 底层: 系统指令和核心知识
- 中层: 特定任务的上下文和示例
- 顶层: 即时的用户查询和会话状态
-
记忆层级: 仿照人类的记忆系统
- 感官记忆: 即时输入处理
- 工作记忆: 当前任务上下文
- 长期记忆: 持久的知识和经验
-
上下文路由器: 智能地将不同类型的查询路由到适当的上下文集合
- 技术类查询 → 文档 + 代码示例
- 个人类查询 → 用户偏好 + 历史记录
- 创意类查询 → 示例 + 风格指南
衡量上下文工程的成功
关键指标
-
相关性得分: 检索到的上下文与任务之间的相关性有多高?
- 通过人工评估或自动化相似度评分进行测量
- 跟踪代理响应中上下文的利用率
-
效率指标: 上下文的使用效率如何?
- 每次成功完成任务所使用的 token 数
- 上下文检索延迟
- 缓存命中率
-
质量指标: 上下文对提升代理性能的效果如何?
- 带有和不带特定上下文类型时的任务完成率
- 用户满意度评分
- 错误率和恢复时间
持续改进
- 上下文分析: 跟踪哪种类型的上下文能够带来更好的结果。
- 用户反馈整合: 从用户的纠正和偏好中学习。
- 性能监控: 监控代理在不同上下文配置下的性能。
上下文工程的未来
- 自适应上下文系统: 能够针对不同用户和任务学习最佳上下文策略的代理。
- 多模态上下文: 将文本、图像、音频和视频的上下文进行集成,以实现更丰富的理解。
- 分布式上下文: 在多个代理和系统之间共享并同步上下文。
- 预测性上下文加载: 根据当前的进展轨迹预测将需要哪些上下文。
结论
上下文工程代表了AI应用构建方式的根本性转变。上下文不应再被视为一个简单的输入/输出问题,而必须架构出复杂的系统,以策略性地管理信息流,优化性能和成本,并随着时间推移适应用户需求。
这四大支柱——写入、读取、压缩和隔离——提供了一个系统性思考上下文管理的框架。 结合六种上下文类型和现代工具,开发者可以构建出不仅智能而且真正具备上下文感知能力的代理。
在构建下一个AI应用时,应记住:一个普通代理和一个出色代理之间的区别往往不在于模型本身,而在于其管理和利用上下文的效能。 精通上下文工程,就掌握了构建真正理解并适应用户需求的AI代理的艺术。
