# Context Engineering实践方式总结
Table of Contents
上下文工程
上下文工程是什么?
“上下文工程(Context Engineering)” 的术语概念最早可以追溯到 2025 年 6 月 19 日,Shopify CEO Tobi Lutke 在 X 上发送的一条推文,他认为该术语比“提示词工程(Prompt Engineering)”更贴切地描述向大语言模型提供全面背景信息的技能。
一个形象的例子:LLMs就像一种新型的操作系统。 LLM就像CPU一样,其上下文窗口(Context Window)就像RAM一样,用作模型的工作记忆。就像RAM一样,LLM上下文窗口的处理能力有限,无法处理各种上下文来源。就像操作系统策划适合CPU的RAM一样,我们可以考虑“上下文工程”扮演类似的角色。

核心就是围绕如何解决“让模型更好的获得与当前任务相关的信息”这一命题,所使用的大模型相关的技术手段,属于“新瓶装旧酒”,技术手段包括:提示词工程(Prompt Engineering)、检索增强生成(RAG)、记忆体(Memory)、工具(Tool、MCP)、A2A等集成。
与提示词工程的区别
在实际 NLP 任务中,上下文工程与提示词工程经常结合使用,以最大化模型性能:
例如,在多轮对话系统中:
- 上下文工程:保留用户之前的对话历史(如 “我想买一部手机,预算 5000 元”);
- 提示词工程:设计提示将上下文与当前问题关联(如 “根据以下对话历史,回答用户的问题:[对话历史] 问题:推荐一款符合预算的手机”)。
再如,在长文本摘要中:
- 上下文工程:提取文档的关键段落(如引言、结论)作为上下文;
- 提示词工程:设计提示要求摘要包含核心信息(如 “总结这篇论文的研究方法、结果和结论,用 100 字以内”)。
LangChain关于上下文工程实践的策略
在 LangChain 7 月 2 日发表的 这篇 Blog 中,详细介绍了几种常见的上下文策略。其中引入了记事板(Scratchpad)的新概念:

写入(Write)
把当前会话的关键内容即时保存到上下文窗口之外,例如持久化笔记或记忆,以便在后续阶段使用。
具体方式:
记事板:
- 把中间结果或行动计划写入文件或内存状态中,以避免上下文窗口截断(如超过200k token 后自动截掉)。
长期记忆:
- 利用 LLM 自动生成/整理回忆,许多产品(如 ChatGPT、Cursor、Windsurf)都支持此功能。
选择(Select)
在真正需要使用时,从外部存储中“拉取”最相关的内容到上下文窗口,以避免无意义的上下文堆积。
具体方式:
- 记事板:选择暴露到 LLM 的字段或调用读取工具;开发者可控制读入内容。
长期记忆:
- 选择合适的回忆作为 few-shot 示例,或作为事实记忆。
- 小规模记忆可全量拉入,如 Claude Code 的
CLAUDE.md或 Windsurf 静态规则文件等;大规模记忆则通过 embeddings 或知识图进行语义检索,辅助选取。
- 工具:当工具数量多且描述相似时,通过 RAG 挑选最相关的工具,可显著提升选择准确率。
- 知识:检索知识时同样使用 RAG、AST 分块、知识图、重排等技术提高相关性与精度。
压缩(Compress)
对已经拉入上下文窗口的内容进行浓缩或剪裁,只保留对当前和未来任务最必要的内容,减少 token 占用。
具体方式:
Context Summarization(上下文总结):
- 在大量交互后自动对上下文做总结,大幅减少 Token 消耗量,同时又保留了关键信息。如 Claude Code 的 “auto‑compact” 在达到上下文窗口的 95% 时,会自动总结整个对话轨迹。
Context Trimming(上下文剪裁):
- 使用规则剪掉老旧消息,或异步调用另一个 LLM 来剪裁不必要内容。
隔离(Isolate)
把不同任务或内容逻辑上分开管理,确保上下文窗口聚焦于当前子任务,避免干扰。
具体方式:
多代理(Multi‑agent):
- 把复杂任务拆成多个子任务,由专属子 Agent 各自运行,拥有独立上下文窗口。OpenAI Swarm、Anthropic 多代理就是成功案例。它们发现在并行探索时隔离上下文会比 Single Agent 更高效。
沙箱环境(Environments):
- 如 HuggingFace CodeAgent,将工具调用运行在隔离 Sandbox 中,不将大体量内容直接送入 LLM,而是把重要结果抽取后才提供上下文。
状态对象隔离(State isolation):
- 在 Agent 的 Runtime State 中定义多个字段,如
messages、tool_outputs等;只有需要给 LLM 的部分才暴露,其他隔离保存,避免无关内容进入上下文窗口。
- 在 Agent 的 Runtime State 中定义多个字段,如