上下文工程(Context Engineering)研究草稿
草稿状态:本文是穷尽式研究的第一稿,追求”面面俱到”,不求精炼。
来源构成:菜鸟教程《Agent 上下文工程》原文 + Anthropic《Effective context engineering for AI agents》+ LangChain《Context Engineering》+ OWASP GenAI Security + arXiv RAG 综述 + 本地 RAG 学习笔记。
标记约定:[已验证]= 直接抓取到原文;[业界认知]= 公开讨论中广泛引用但本次未抓到一手原文;[待核实]= 数字/细节需要后续确认。后续迭代方向:删减冗余、统一叙事线、补充一手来源核实。
0. 一句话摘要
上下文工程(Context Engineering)是在有限的上下文窗口内,为每一次模型调用策展和维护”恰好够用、信号最高”的 token 集合的技术实践。它是把提示词、记忆、检索、工具、历史、多智能体协作全部纳入视野的元学科——正如 Karpathy 所言,是”用恰到好处的信息填满上下文窗口、为下一步推理做准备的精巧艺术与科学”。
1. 起源与定位:为什么上下文工程成为一门独立学科
1.1 定义
- Anthropic 的定义
[已验证]:context 是采样时喂给 LLM 的 token 集合;context engineering 是”为生成目标行为而策展和维护最优 token 集合”的策略集,覆盖 system instructions、tools、MCP、外部数据、消息历史等全部上下文状态。 - 菜鸟教程的定义
[已验证]:系统化设计和优化传递给 AI Agent 的上下文信息的技术实践,目标是让 Agent 在有限上下文窗口内获得最有效的信息,从而提升任务执行的准确性、效率和可靠性。 - Karpathy 的定义
[已验证,经 LangChain 转述]:LLM 如 CPU,context window 如 RAM——容量有限,操作系统式的策展即 context engineering。 - Cognition 的断言
[已验证,经 LangChain 转述]:context engineering 是构建 AI agent 工程师的”第一要务”。
1.2 Prompt Engineering → Context Engineering:不是替代,是超集
- prompt engineering 关注”如何写好提示词”(尤其是 system prompt),是离散的、一次性的写作。
- context engineering 关注”每次推理前策展整个上下文状态”,是迭代式的、持续发生的过程;prompt 只是其中的一块。
- Anthropic 视 context engineering 为 prompt engineering 的自然演进
[已验证]。 - 菜鸟教程的表述
[已验证]:上下文工程不是一次性的提示词编写,而是贯穿 Agent 系统开发、测试和运维全生命周期的持续优化过程。
1.3 为什么它突然变得重要(三个驱动力)
- Agent 在循环中自行产生海量数据:每一轮工具调用、每一次观察都会成为下一轮上下文,上下文在无人干预下指数膨胀——必须系统化管理
[已验证,Anthropic]。 - 上下文本身不可靠:长上下文中存在性能衰减(见第 3 节 context rot),塞得越多不一定越好。
- 成本与延迟的现实约束:token 是钱,延迟是体验,缓存与压缩直接决定经济性。
1.4 核心问题
整个学科可以被压缩成一个问题:在这轮调用中,Agent 最需要知道什么? [已验证,菜鸟教程]
2. 上下文是什么:构成全景
2.1 五层基本构成 [已验证,菜鸟教程]
| 层次 | 内容 | 特点 |
|---|---|---|
| 系统提示(System Prompt) | 角色定义、行为规则、输出格式要求 | 每次调用都会携带,相对稳定 |
| 工具定义(Tool Definitions) | 可用工具的名称、参数和功能描述 | 占用大量 token,需要精简 |
| 历史记录(History) | 当前会话的对话和工具调用记录 | 持续增长,需要截断或摘要策略 |
| 检索上下文(Retrieved Context) | 从外部知识库或代码库中检索的内容 | 按需注入,需要相关性排序 |
| 用户输入(User Input) | 用户当前的指令或问题 | 不可控,但可以通过澄清来优化 |
2.2 更广的视角:凡是进入窗口的都是上下文
用户的原始理解 [用户笔记]:提示词、外部记忆、工具索引、Agent/对话逐步迭代中映入的历史上下文、Skill、知识库的检索返回、联网搜索结果的加入……(还有更多没提到的)都是上下文工程的范畴。
这个视角很重要:上下文工程的对象不是”提示词”这一个东西,而是所有被拼进窗口的信息流。包括:记忆系统的召回结果、子 Agent 的回传摘要、MCP 工具返回的数据、图片等多模态输入、代码库索引片段。
2.3 静态 vs 动态:两条完全不同的优化路线 [前稿提炼]
- 静态上下文(系统提示、工具定义、固定规则文件):每轮调用都携带、内容相对固定。优化方向 = “打磨到最精简有效”,一次性做好、长期复用。
- 动态上下文(历史记录、检索结果、用户输入、记忆召回):每轮变化、随任务膨胀。优化方向 = “按需注入、随时可缩”,靠闸门动态调节。
这一划分贯穿全文:第 5 节每一层的工程化手段,本质都在处理”静态的怎么精”或”动态的怎么控”。
3. 为什么上下文是稀缺资源:物理与经验基础
理解上下文工程,先要理解”为什么不能简单地给大窗口”。
3.1 注意力预算(Attention Budget)[已验证,Anthropic]
Transformer 的注意力是 n² 复杂度:序列越长,每个 token 与其他所有 token 的注意力计算越贵。长上下文不仅是成本问题,更是注意力稀释问题——关键信息淹没在无关 token 中。
3.2 Context Rot:长上下文的性能衰减 [已验证,Anthropic 引 Chroma 研究]
Chroma 的研究发现:上下文越长,模型的召回能力越差。token 数量增加时,模型对早期关键信息的利用能力呈”梯度衰减”而非硬性悬崖——没有一条明确的”窗口满了就崩”的线,而是缓慢、持续的退化。
3.3 训练分布偏差 [已验证,Anthropic]
训练数据以短序列为主,模型在长序列上的注意力参数没有得到充分训练——长上下文的”用不好”是模型本身的先天不足,不是工程能完全弥补的。
3.4 四种失败模式 [已验证,经 LangChain 转述 Drew Breunig]
| 模式 | 含义 | 例子 |
|---|---|---|
| Context Poisoning(投毒) | 幻觉或恶意内容混入上下文 | 检索结果里混入了错误代码片段 |
| Distraction(干扰) | 上下文淹没关键信息 | 塞入 50 个文件,关键文件被忽视 |
| Confusion(混淆) | 冗余上下文干扰理解 | 同一规则出现在两处且措辞不同 |
| Clash(冲突) | 上下文之间互相矛盾 | 系统提示说”优先安全”,工具描述暗示可以绕过 |
3.5 推论
上下文窗口不是越大越好。 菜鸟教程
[已验证]与 Anthropic[已验证]在同一结论上汇合:过多的上下文稀释注意力、增加成本、引入更多失败模式。上下文工程的第一性原理由此确立——每一条进入窗口的信息,都必须有明确的 ROI。
4. 方法论全景:Write / Select / Compress / Isolate 四大策略
LangChain 的框架 [已验证] 是目前最清晰的方法论总结,把一切上下文操作归纳为四个动作:
4.1 Write:写出窗口外
把不该留在窗口里的信息写到外部,需要时再取回。
- Scratchpad / 笔记:工具调用时写文件,或写进运行时 state 字段;Anthropic 多智能体研究者把计划写入 Memory 防止截断丢失
[已验证]。 - 结构化笔记(agentic memory):Anthropic 的 Claude 玩 Pokémon 案例——agent 自发写地图、目标计数、战斗策略笔记,跨上下文重置后靠读笔记延续数小时策略,完全不依赖提示词设计
[已验证]。 - 长期记忆文件:user profile、rules、CLAUDE.md。
4.2 Select:选入窗口内
决定”哪些信息值得占用窗口”——这是上下文工程最核心的动作。
- 检索(RAG):见 5.4。
- 记忆选择:从长期记忆中召回相关片段,而非全部。
- 工具级 RAG:对工具描述做语义检索、只注入相关工具,可将工具选择准确率提升约 3 倍
[已验证,经 LangChain 引 arXiv:2410.14594 / arXiv:2505.03275]。 - 渐进式披露(progressive disclosure):不一次性注入,按执行阶段逐步披露工具、规则和数据
[已验证,Anthropic + 菜鸟教程]。
4.3 Compress:压缩
在信息不丢失的前提下减少 token 占用。
- 截断(Trimming):启发式规则,如删除旧消息
[已验证,LangChain]。 - 摘要(Summarization):轨迹级摘要 / 特定点摘要(见 5.3)。
- 工具结果清除(tool result clearing):已执行过的工具调用不必再看原始结果——最轻量、最安全的压缩起点
[已验证,Anthropic]。 - 上下文压缩链:大任务拆链式调用,每步只保留上一步精炼的中间结果
[已验证,菜鸟教程]。
4.4 Isolate:隔离
让不同职责的上下文互不污染。
- 子 Agent 架构:主 Agent 持高层计划,子 Agent 在各自干净窗口内深潜,只回传浓缩摘要
[已验证,Anthropic]。 - 沙箱/环境隔离:重 token 对象放环境变量,只回传选中值(HuggingFace CodeAgent + E2B)
[已验证,LangChain]。 - 运行时 state 字段隔离:不同字段选择性暴露给 LLM
[已验证,LangChain]。
4.5 预算管理:横切四大策略的元策略 [已验证,菜鸟教程]
把上下文窗口视为有限的「预算」。以 200K token 窗口为例:
1 | 系统提示 ██████████ 10% (20K token) |
比例随任务类型动态调整:代码生成调高检索占比;多轮对话优先保证历史预算。**预算思维的意义在于:先决定”给多少”,再决定”给什么”**——避免信息争夺窗口时的无序竞争。
5. 逐层深入:各类上下文的工程化
5.1 系统提示(System Prompt)
编写五原则 [已验证,菜鸟教程]:
| 原则 | 说明 | 示例 |
|---|---|---|
| 分层组织 | 按角色、规则、流程、格式分块 | 使用 Markdown 标题分隔 |
| 正面表述 | 告诉 Agent 该怎么做,而非不怎么做 | 「保持回答简洁」优于「不要啰嗦」 |
| 提供示例 | 用 few-shot 示例代替长篇描述 | 输出格式示例比文字描述更高效 |
| 优先级明确 | 规则冲突时遵循哪条 | 「安全规则优先于效率要求」 |
| 去除冗余 | 删除从未被触发的规则和重复说明 | 定期审查并精简 |
“正确海拔” [已验证,Anthropic]: 系统提示有两端失败模式——① 硬编码脆弱的 if-else 逻辑(过度具体);② 过于笼统、假设共享上下文(过度抽象)。中间地带是”具体到能引导行为、灵活到留出启发式空间”。组织成 XML 标签 / Markdown 分节;few-shot 用”多样、典范”的少量示例,而非穷举边角案例。
安全提醒 [已验证,OWASP]: 系统提示本身是攻击目标(LLM07 系统提示词泄露)——提示词中不能放机密信息,且需声明”忽略修改核心指令的企图”。
5.2 工具与技能(Tools & Skills)
核心矛盾 [已验证,Anthropic]: 工具是 Agent 的信息/动作契约,应自包含、抗错误、意图清晰、参数描述无歧义;但最普遍的失败模式是工具集臃肿——功能重叠导致选择歧义。”人无法判断该用哪个工具时,Agent 更不可能。”
优化四策略 [已验证,菜鸟教程]:
| 策略 | 方法 | 效果 |
|---|---|---|
| 工具精简 | 移除与当前任务无关的工具定义 | 减少 30%~50% 的工具上下文 |
| 描述精炼 | 每个工具一句话说明用途和参数 | 提升模型对工具的理解准确度 |
| 参数约束 | 明确参数的使用场景和限制 | 减少工具调用中的参数错误 |
| 分组注册 | 按任务阶段动态注册不同的工具集 | 避免工具过多导致的「选择困难」 |
补充手段:
- 最小可行工具集
[已验证,Anthropic]:少而清晰的工具利于长交互中的维护与上下文修剪。 - 工具级 RAG
[已验证,LangChain]:语义检索工具描述,动态注入(见 4.2)。 - 渐进式披露工具
[已验证,Anthropic + 菜鸟教程]:先注入”读取”类工具,完成阶段后再注入”执行”类工具。 - Skill 上下文
[用户笔记]:技能(如本工作区的 Skill 体系)本身也是一种注入上下文的单元——技能描述要像工具描述一样精炼,技能内容按需展开。
5.3 历史与对话上下文(History)
四种压缩策略 [已验证,菜鸟教程]:
| 策略 | 方法 | 适用场景 |
|---|---|---|
| 滑动窗口 | 保留最近 N 轮完整记录 | 短对话、实时交互 |
| 阶梯摘要 | 每轮做一次增量摘要 | 长对话、客服场景 |
| 分层摘要 | 近期保留完整、远期做摘要 | 文档生成、复杂任务 |
| 关键轮标记 | 标记重要轮次,其余丢弃 | 调试、分步执行任务 |
分层摘要是最常用策略:最近 3-5 轮保持完整,更早的对话用结构化摘要代替——用户目标是什么、Agent 做了什么、产生了什么输出、遇到了什么错误 [已验证,菜鸟教程]。
Compaction(对话压缩)[已验证,Anthropic]: 对话接近窗口上限时,让模型把消息历史总结成高保真摘要,重建新窗口。Claude Code 的实现要点:
- 压缩关键细节(架构决策、未解决 bug、实现细节);
- 丢弃冗余工具输出;
- 保留摘要 + 最近访问的 5 个文件;
- 在 95% 窗口占用时触发 auto-compact
[已验证,LangChain]; - 调优建议:先在复杂 agent trace 上最大化召回率,再迭代提升精确度
[已验证,Anthropic]。
摘要的两种应用位置 [已验证,LangChain]:
- 轨迹级:agent 全程(递归/分层摘要);
- 特定点级:对 token 密集的工具输出做后处理(Cognition 在 agent 间交接处摘要,甚至用微调模型做此步)。
Tool result clearing [已验证,Anthropic]: 已执行过的工具调用不必再看原始结果——最轻量的压缩形式,见 4.3。
Context caching(前缀缓存)[业界认知,待核实具体数字]: Anthropic/OpenAI/Google 均提供前缀缓存:复用 system prompt、工具定义、few-shot 与长文档的公共前缀以降低延迟与成本(官方宣传可省约 90% 输入 token 成本)。机制要点:缓存命中要求前缀逐 token 匹配;TTL 过期策略;缓存读写按不同费率计费。工程含义:把”不变的内容”放前面、变化的内容放后面,是免费的优化。
5.4 检索上下文(Retrieval)
RAG 范式演进 [已验证,arXiv 2312.10997 综述 + 本地学习大纲]:
- Naive RAG:文档 → 切块 → 向量化 → 检索 → 拼进 prompt。流程直白但检索质量差。
- Advanced RAG:检索前(查询改写/路由)+ 检索中(混合检索/Reranker)+ 检索后(重排/压缩)全链路优化。
- Modular RAG:拆成可自由组合的模块(路由、改写、融合、记忆……),2025 年生产系统基本都走这条。
检索前(查询优化)[本地学习大纲]:
- 查询改写:用户问题太短/指代不明 → 先改写再检索;
- Multi-Query:一个问题拆多个角度分别检索;
- HyDE:先让 LLM 生成假设答案再检索;
- 查询路由:按问题类型分发到不同数据源(向量库/图库/SQL)。
检索中(召回)[本地学习大纲]:
- 稀疏检索(BM25):擅长专有名词、编号、精确匹配;
- 稠密检索(向量):擅长同义改写、语义相关;
- 混合检索 + RRF(倒数排名融合):按排名而非分数合并两路结果,避免分数不可比的问题;
- Reranker(重排序,cross-encoder):对 (query, chunk) 逐对精排,k 从 50→5,准确率显著提升(BGE-reranker-v2-m3 中文效果好)。
检索后(注入优化)[已验证,菜鸟教程]:
- 相关性过滤:设置阈值,不足时主动提示;
- 来源标注:附上来源路径和更新时间,让 Agent 判断可信度;
- 长度裁剪:按段落截取,只保留最相关片段。
分块与索引的工程细节 [本地学习大纲]: 核心矛盾是”块太大→检索噪音多;块太小→上下文断裂”。生产级教训(Windsurf)[已验证,经 LangChain 转述]:索引 ≠ 检索——AST 解析按语义边界分块,embedding 在大代码库上不可靠,需 grep/文件搜索、知识图谱检索与重排序组合。
从预检索到 just-in-time 检索 [已验证,Anthropic]: 新一代范式是 Agent 只持轻量标识符(文件路径、存储查询、链接),运行时用工具动态取数据,而不是预先把所有内容嵌入上下文。Claude Code 用 head/tail 分析大数据库而不全量加载。元数据(目录层级、命名约定、时间戳)本身就是行为信号。 策略选择取决于任务动态性:低动态场景(法律/金融)适合前置加载 + 自主探索的混合模式。
GraphRAG [待核实]: 知识图谱用于记忆索引与检索(Graphiti、Zep),本次未抓到专门原文,待补充。
5.5 记忆系统(Memory)
**工作记忆 = 上下文窗口 [已验证,LangChain 引 Karpathy]**——所以”记忆管理”与”上下文工程”是同一件事的两面。
记忆类型学 [已验证,经 LangChain 引 arXiv:2309.02427]:
- Episodic(情景记忆):少样本示例;
- Procedural(程序记忆):指令、怎么做;
- Semantic(语义记忆):事实。
按作用域划分 [已验证,LangChain]:
- 短期记忆:thread 作用域,靠 checkpointing 持久化 agent state(LangGraph 实现);
- 长期记忆:跨 session 持久化,两种形态——小集合文件(user profile、rules)与大集合(语义记忆,需检索)。
代表性系统 [已验证,LangChain + Anthropic]:
- Reflexion:反思后复用自生成记忆;
- Generative Agents:周期性综合记忆;
- ChatGPT Memory、Cursor/Windsurf rules、Claude Code 的 CLAUDE.md;
- Anthropic 发布 memory tool(Sonnet 4.5 同期)做文件式持久记忆。
关键洞察 [已验证,Anthropic]: Claude 玩 Pokémon 的案例证明——agent 自发写出的结构化笔记(agentic memory)比任何提示词设计都更能解决长时任务:跨上下文重置后,agent 靠读笔记延续数小时策略。这意味着上下文工程的最高形态,是让 Agent 学会”自己管理自己的上下文”。
副作用警示 [已验证,经 LangChain 引 Simon Willison]: ChatGPT 从记忆中调出用户位置并注入到图片请求——“上下文窗口不再属于用户”,记忆系统会引入隐私与可控性问题。
5.6 多智能体上下文传递(Multi-Agent)
核心模式 = 上下文隔离 [已验证,Anthropic]: 主 Agent 持高层计划,子 Agent 在各自干净窗口内深潜(可用数万 token),只回传 1,000–2,000 token 的浓缩摘要。Anthropic 多智能体研究系统在多任务上显著优于单 Agent。代价:token 消耗可达普通聊天的约 15 倍 [已验证,LangChain 转述]。
三种隔离形态 [已验证,LangChain]:
- 多 Agent 分工(OpenAI Swarm 的 separation of concerns);
- 沙箱环境隔离(HuggingFace CodeAgent:重 token 对象存环境变量,只回传选中值);
- 运行时 state 对象 schema 字段隔离(不同字段选择性暴露给 LLM)。
交接处压缩 [已验证,经 LangChain 引 Cognition]: Agent-Agent 边界做摘要以减少知识移交 token,Cognition 用微调模型保证关键事件不丢。
反方观点 [已验证,经 LangChain 引 Cognition]: Cognition 主张”不要构建多 Agent”——单长时 Agent + 上下文管理可能更优。这是当前最值得关注的争论点之一。
5.7 上下文水印(Context Watermarking)[已验证,菜鸟教程]
在上下文关键位置放置标记,帮助监控与诊断:
1 | <system-reminder> |
水印不影响 Agent 行为,但调试时能快速定位”上下文注入是否按预期执行”。
6. 评估与可观测性:上下文工程不能靠感觉
6.1 先观测,再优化 [已验证,LangChain]
用追踪/可观测性工具(LangSmith 等)看 token 消耗与轨迹,找到上下文工程的最佳着力点;再配 Agent 评估跑 A/B,判断改动是提升还是损害性能。
6.2 四维评估指标 [已验证,菜鸟教程]
| 维度 | 评估方式 | 关键指标 |
|---|---|---|
| 任务完成率 | 在标准测试集上运行 Agent | 成功率、失败原因分布 |
| 上下文效率 | 统计每次调用的上下文使用量 | 平均 token 消耗、上下文利用率 |
| 工具调用质量 | 分析工具调用的准确率和参数正确率 | 无效调用占比、重试次数 |
| 响应一致性 | 相同输入多次测试 | 输出稳定性、格式合规率 |
6.3 RAG Triad(检索侧安全评估)[已验证,OWASP]
- Context Relevance:检索到的上下文是否与问题相关;
- Groundedness:输出是否基于给定上下文(而非幻觉);
- Question/Answer Relevance:回答是否对上了问题。
三个指标用于检测输出是否被恶意或无关内容污染。
6.4 Compaction 的调优方法 [已验证,Anthropic]
先最大化召回(关键信息不丢),再提升精确度(减少噪音)——在复杂 agent trace 上迭代。
6.5 迭代循环 [已验证,菜鸟教程]
测试 → 分析 → 优化 → 再测试。上下文工程不是一次性配置,而是持续调优的过程。
7. 安全与隐私:上下文的黑暗面
7.1 Prompt Injection(LLM01)[已验证,OWASP 2025]
用户输入改变模型行为的漏洞。两种形态:
- 直接注入:用户直接输入指令;
- 间接注入:外部内容(网页、文件、检索结果)携带指令——这正是检索上下文的天然风险面。
注入无需人类可读(可藏于图像、Base64、多语言)。RAG 与微调不能根治。
7.2 上下文中毒与知识库投毒
- LLM04 数据与模型投毒:污染训练或检索数据;
- LLM08 向量/嵌入弱点:RAG 知识库投毒——检索结果里混入恶意内容,直接污染 Agent 的决策依据(对应 3.4 的 Context Poisoning 失败模式)。
7.3 其他相关风险
- LLM02 敏感信息泄露:上下文中的 API 密钥、内部路径会在工具调用和日志中传播;
- LLM07 系统提示词泄露:提示词工程的内容会成为攻击目标;
- LLM10 无界消费:token 耗尽攻击——上下文工程里”贪婪塞入”也可能被滥用为成本攻击。
7.4 缓解策略七条 [已验证,OWASP]
- system prompt 约束行为、声明忽略修改核心指令的企图;
- 强制输出格式与引用;
- 输入输出过滤 + RAG Triad 检测;
- 最小权限:特权操作放在代码层而非模型层;
- 高风险操作人工审批;
- 隔离并明确标记不可信内容;
- 对抗性渗透测试。
7.5 与上下文工程的关系
上下文工程的两面性:压缩、裁剪、隔离做得越好,攻击面越小(少注入 = 少暴露);而缓存、记忆、检索做得越激进,风险越大(记忆召回可能带回敏感信息;检索可能引入中毒内容)。安全约束必须作为上下文预算的一部分被显式设计。
8. 业界实践与案例
8.1 Anthropic / Claude Code [已验证]
- CLAUDE.md 前置 + grep/glob 即时检索的混合模型(对应 just-in-time 检索);
- 95% 阈值 auto-compact;
- tool result clearing 产品化;
- memory tool 公开测试;
- Multi-agent research system;
- Sonnet 4.5 起的方向判断:”更聪明的模型需要更少的处方式工程”。
8.2 Cognition(Devin)[已验证,经 LangChain 转述]
- 在长时任务的 agent 边界做摘要,用微调模型承担压缩职责;
- 主张”不要构建多 Agent”:单长时 Agent + 上下文管理。
8.3 ChatGPT / Cursor / Windsurf [已验证,经 LangChain 转述]
- 都实现了自动生成、跨 session 持久化的长期记忆与 rules 文件。
8.4 HuggingFace Open Deep Research [已验证,经 LangChain 转述]
- CodeAgent + E2B 沙箱:把重 token 状态隔离在环境中。
8.5 LangGraph 生态 [已验证,经 LangChain 转述]
- Short-term memory(checkpointing)、Long-term memory(store:profile 文件 + collection 语义检索);
- LangMem 库、Bigtool 工具语义选择、supervisor/swarm 多 Agent 库。
8.6 本工作区的相关性 [本地]
RAG/学习大纲.md:Naive → Advanced → Modular RAG 的实操路线(BM25、RRF、Reranker、查询改写、Text2SQL)——对应本文 5.4 的落地路径;agent架构/介绍.md:P-R²-E 框架——上下文工程与其互为表里(见下节)。
9. 与 Agent 架构的关系:互为表里
结合前作《agent架构》的 P-R²-E(规划-双轨反思-执行)框架,上下文工程与 Agent 架构是同一枚硬币的两面:
| Agent 架构维度 | 上下文工程对应物 |
|---|---|
| 宏观 ReAct(规划层) | 规划上下文:目标、约束、任务蓝图常驻 |
| 微观 ReAct(执行层) | 执行上下文:每步只带当前子任务所需的工具与数据(渐进式披露) |
| 规划期反思 | 上下文水印 + 静态侧评审(系统提示/工具集定期审查) |
| 执行期反思(测试) | 四维评估 + RAG Triad + 回归测试 |
| 失败向上传导 | Compaction 保留”未解决 bug”清单;重规划时恢复关键上下文 |
| 经验沉淀(记忆库) | 长期记忆系统(Reflexion 反思记忆、CLAUDE.md、memory tool) |
| Multi-Agent 拓扑 | 子 Agent 隔离 + 交接处压缩 + 摘要回传 |
一句话:Agent 架构决定”谁在什么时候做什么”,上下文工程决定”每个’做’的时刻,窗口里放什么”。架构错了,上下文再精也白搭;上下文乱了,架构再对也崩。
10. 核心洞察与开放问题
10.1 核心洞察(10 条)
- 上下文工程 = 在注意力预算约束下做策展:根本动因是 n² 注意力的成本与 context rot 的衰减,”最小高信号 token 集”是贯穿始终的元原则。
- 它是 prompt engineering 的超集与自然演进:从”写对提示词”到”每次推理前策展整个上下文状态”,迭代性是其分水岭。
- 四大策略 Write / Select / Compress / Isolate 覆盖全部操作;预算管理(先定给多少,再定给什么)是横切其上的元策略。
- 上下文有四种失败模式:Poisoning / Distraction / Confusion / Clash——评估与设计都应围绕这四种失败展开。
- 从预检索转向 just-in-time 检索 + 渐进式披露:Agent 持轻量引用、运行时按需取数,元数据即信号。
- 长时任务的三大杠杆:Compaction、结构化笔记(agentic memory)、子 Agent 架构——按任务特征选择。
- 压缩质量决定一切:先最大化召回、再优化精确度;最安全的低成本起点是 tool result clearing。
- 上下文既是性能问题也是安全问题:间接 prompt injection 与知识库投毒针对的就是注入的上下文;隔离、最小权限、人工审批是标配。
- 评估与可观测性是上下文工程的闭环:四维指标 + RAG Triad + 追踪工具,没有评估的优化是玄学。
- 架构与上下文互为表里:架构决定执行拓扑,上下文决定每个执行点的信息质量;Cognition 与 Anthropic 在多 Agent 上的分歧,本质是上下文管理策略的分歧。
10.2 开放问题与待研究 [待核实/待补充]
- Context caching 的具体计费与命中率数据(90% 成本节省的说法需一手核实);
- GraphRAG 对上下文工程的增量价值;
- Lilian Weng 关于 Memory Stream、反思机制的经典论述(本次境外站点不可达,可补抓 arXiv 2304.03442 Generative Agents 原文);
- “更聪明的模型需要更少的上下文工程”(Sonnet 4.5 方向)——上下文工程的长期价值是否会被模型能力进步稀释;
- 多 Agent vs 单长时 Agent 的实证对比。
10.3 后续行动建议
- 核实标注
[待核实]的数字与细节; - 补读 Lilian Weng《LLM Powered Autonomous Agents》与 Generative Agents 原文;
- 结合本工作区 RAG 学习笔记,把 5.4 节的检索优化写成可运行的实验;
- 在”用户理解”一节补上我自己的实践观察(如本工作区 Skills、CLAUDE.md、.venv 等真实上下文工程实例)。
参考来源
- 菜鸟教程《Agent 上下文工程》— https://www.runoob.com/ai-agent/agent-context-engineering.html
[已验证] - Anthropic Engineering《Effective context engineering for AI agents》(2025-09-29) — https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents
[已验证] - LangChain《Context Engineering》(2025-07-02) — https://blog.langchain.com/context-engineering-for-agents/
[已验证] - OWASP GenAI Security《LLM01:2025 Prompt Injection》— https://genai.owasp.org/llmrisk/llm01-prompt-injection/
[已验证] - arXiv《Retrieval-Augmented Generation for Large Language Models: A Survey》(2312.10997) — https://arxiv.org/abs/2312.10997
[摘要级] - 本地笔记:RAG/学习大纲.md、RAG/3OTK.md(BM25、RRF、Reranker、查询改写等实操细节)
- 前作:agent架构/介绍.md(P-R²-E 框架)
- 用户原始笔记:ContextEngineering/参考资料.md(”上下文工程涉及之广”)