Skip to content

上下文工程速查 ​

快速查阅上下文管理的策略选择、适用场景和常见问题解决方案。


一、核心概念速查 ​

概念定义一句话理解
上下文工程为 Agent 动态管理其完整信息视野的架构学科从"写好一句 Prompt"变成"设计整个信息环境"
上下文腐烂上下文越长,模型回忆和推理能力平滑下降信息越多,AI 越容易"失焦"
上下文债务Agent 循环中不断累积的、未经管理的信息像信用卡债务,不还会利滚利

二、三大支柱速查表 ​

核心问题:什么时候用卸载 vs 缩减 vs 隔离?

支柱核心思想适用场景典型实现代价
卸载 (Offloading)将上下文从 LLM 窗口转移到外部存储工具太多塞不下、信息需要跨会话保留文件系统、分层行动空间、渐进式披露增加外部存储和检索复杂度
缩减 (Reduction)减小每步传递给模型的上下文大小上下文接近极限、历史信息过时压缩(指针替换)、摘要(结构化摘要)可能丢失信息(尤其摘要不可逆)
隔离 (Isolation)不同任务使用独立上下文窗口子任务独立、需要干净上下文子 Agent、通信/共享上下文模式协调成本、Token 消耗增加

三、卸载策略详解 ​

3.1 卸载数据:文件系统即上下文 ​

场景做法价值
对抗目标漂移Agent 将计划写入文件,执行中定期读回确保不偏离目标
跨会话记忆CLAUDE.md / .cursor/ 文件持久化用户偏好零部署、版本控制友好
知识库扩展结构化目录(dox/),Agent 自主探索知识可无限增长

3.2 卸载工具:分层行动空间 ​

┌─────────────────────────────────────────┐
│  第三层:包和 API(编写和执行代码)        │  ← 最开放、能力最强
└─────────────────────────────────────────┘
                    ↑ 通过第一层函数调用
┌─────────────────────────────────────────┐
│  第二层:沙盒使用程序(命令行程序)        │  ← 能力扩展的主要层面
└─────────────────────────────────────────┘
                    ↑ 通过第一层函数调用
┌─────────────────────────────────────────┐
│  第一层:函数调用(原子操作)              │  ← 与模型直接交互的唯一一层
└─────────────────────────────────────────┘
层级设计原则顶级 Agent 的工具数
第一层极简、固定不变、KV 缓存友好Claude Code ~12个,Menlo <20个
第二层预装在沙盒中的命令行工具通过 bash 自主发现
第三层编写脚本调用任意 API无上限

3.3 渐进式披露 ​

层级内容Token 消耗加载方式
Level 1技能名称 + 简介(YAML Front Matter)~100始终加载
Level 2核心指令与 SOP(Markdown 正文)<5,000触发时加载
Level 3+详细文档、脚本、配置无上限按需加载

关键洞察:模型并不扩大上下文窗口,而是通过外部化执行让技能包的体积与上下文无关。


四、缩减策略详解 ​

4.1 压缩 vs 摘要对比 ​

维度压缩 (Compression)摘要 (Summarization)
可逆性✅ 可逆❌ 不可逆
做法完整内容卸载到文件,消息历史中用指针替换生成结构化摘要替代原始内容
适用时机工具结果变得陈旧时上下文接近极限(如 95%)时
信息保真度100%(可随时恢复)取决于摘要质量
最佳实践优先使用仅在压缩收益变小时才启用

4.2 摘要最佳实践 ​

原则说明
结构化 Schema用"填表"而非自由格式,保证关键信息不丢失
优先级排序先摘要最不重要的信息,保留核心上下文
触发条件仅在上下文接近极限时才启用(别太早用)

五、隔离策略详解 ​

两种隔离模式对比 ​

维度通过通信 (By Communication)通过共享上下文 (By Shared Context)
工作方式主 Agent 传简短指令,子 Agent 在干净上下文中完成,仅返回结果子 Agent 访问主 Agent 完整历史,但使用新 System Prompt
适用场景可清晰切分的简单任务需要完整历史视野的复杂任务
成本低(KV 缓存友好)极高(KV 缓存完全失效)
延迟低高
选择标准任务是否需要之前所有上下文?任务是否必须基于完整历史决策?

六、上下文失效的四种模式速查 ​

模式定义比喻诊断信号解法
污染 (Contamination)幻觉/错误信息渗入上下文,被后续推理当事实信息源被投毒输出基于错误前提推导出荒谬结论验证关键事实来源;保留错误信息供学习
干扰 (Interference)信息过多,压倒模型预训练知识信噪比过低模型做出违背常识的判断缩减上下文;优先保留高价值信息
混淆 (Confusion)多余的不相关信息影响最终回应注意力被分散把两个不相关概念错误关联隔离上下文;精简不相关内容
冲突 (Conflict)不同部分包含相互矛盾的信息指令集冲突模型犹豫不决或行为混乱统一信息源;消解矛盾

与上下文腐烂的因果关系 ​


七、常见的上下文问题 → 解法速查 ​

问题症状推荐策略
Agent 在长任务中忘记目标执行到一半偏离原始计划卸载:将计划写入文件,定期读回
工具太多导致调用错误Agent 调用了错误的工具或不存在的工具卸载:分层行动空间,极简第一层
上下文窗口快满了Token 消耗急剧上升缩减:压缩(先)→ 摘要(后)
子任务需要干净上下文子任务结果被历史信息干扰隔离:子 Agent + 通信模式
Agent 重复搜索同一信息多轮对话中反复查询卸载:文件系统记忆 + 渐进式披露
不同来源信息矛盾模型犹豫不决隔离:为不同来源建立独立评估路径
输出质量随对话变长下降越聊越"傻"缩减:适时摘要 + 隔离:复杂子任务独立处理

八、选型决策流程图 ​


九、Menlo 的实战经验速查 ​

经验教训
遮蔽而非移除不要在运行时动态加载/卸载工具(破坏 KV 缓存)
文件系统即上下文当上下文装不下时,给 Agent 一个文件系统
工具集固定顶级 Agent 的原生工具集都极少(<20个)
渐进式披露连脚本也不必一开始就全部告知模型
保留错误信息让 Agent 从失败中学习

基于 CC BY-SA 4.0 协议发布