AI 智能体的上下文工程¶
核心原则¶
找到尽可能小的高信号 token 集合,以最大程度提高期望结果的可能性。
上下文工程与提示工程¶
提示工程:编写和组织 LLM 指令以获得最佳结果(一次性任务)
上下文工程:在多次交互的推理过程中,策划并维护最佳的 token 集合(迭代过程)
上下文工程管理: - 系统指令 - 工具 - 模型上下文协议(MCP) - 外部数据 - 消息历史 - 运行时数据检索
问题:上下文衰减¶
关键洞察:LLM 有一个“注意力预算”,会随着上下文增长而耗尽
- 每个 token 都会关注其他所有 token(n² 种关系)
- 随着上下文长度增加,模型准确率下降
- 模型对较长序列的训练经验较少
- 上下文必须被视为一种边际收益递减的有限资源
系统提示:找到“合适的抽象层级”¶
“金发姑娘”区域¶
过于具体 ❌ - 硬编码的 if-else 逻辑 - 脆弱且易碎 - 维护复杂度高
过于模糊 ❌ - 缺乏具体信号的高层指导 - 错误地假设共享上下文 - 缺少可操作的方向
恰到好处 ✅ - 足够具体,能有效引导行为 - 足够灵活,能提供强启发式 - 以最少的信息完整勾勒出预期行为
最佳实践¶
- 使用简单、直接的语言
- 组织成不同的部分(
<background_information>、<instructions>、## Tool guidance等) - 使用 XML 标签或 Markdown 标题来组织结构
- 从最小提示开始,根据失败模式逐步添加
- 注意:最小 ≠ 简短(事先提供足够的信息)
工具:最小且清晰¶
设计原则¶
- 自包含:每个工具都有单一、明确的目的
- 容错健壮:优雅地处理边缘情况
- 极其清晰:预期用途无歧义
- Token 高效:返回相关信息而不冗余
- 描述性参数:输入名称无歧义(例如,
user_id而非user)
关键规则¶
如果人类工程师都无法明确判断在某种情况下该使用哪个工具,那么 AI 智能体也不可能做得更好。
应避免的常见失败模式¶
- 臃肿的工具集,覆盖过多功能
- 工具用途重叠
- 关于使用哪个工具的决策点模糊不清
示例:多样化而非穷尽¶
应做 ✅ - 策划一组多样化、典型的示例 - 有效展示预期行为 - 记住“一图胜千言”
不应做 ❌ - 塞入一长串边缘情况 - 试图列出所有可能的规则 - 用穷尽的场景压垮模型
上下文检索策略¶
即时上下文(推荐用于智能体)¶
方法:维护轻量级标识符(文件路径、查询、链接),并在运行时动态加载数据
优点: - 避免上下文污染 - 实现渐进式披露 - 模仿人类认知(我们不会记住所有东西) - 利用元数据(文件名、文件夹结构、时间戳) - 智能体逐步发现上下文
权衡: - 比预计算检索慢 - 需要适当的工具指导以避免死胡同
预推理检索(传统 RAG)¶
方法:使用基于嵌入的检索在推理前获取上下文
适用场景:交互过程中不会改变的静态内容
混合策略(两全其美)¶
方法:预先检索部分数据,按需支持自主探索
示例:Claude Code 预先加载 CLAUDE.md 文件,并使用 glob/grep 进行即时检索
经验法则:“做最简单可行的事情”
长时程任务:三种技术¶
1. 压缩(Compaction)¶
是什么:在接近上下文限制时总结对话,并用总结重新开始
实现方式: - 将消息历史传递给模型进行压缩 - 保留关键细节(架构决策、错误、实现) - 丢弃冗余输出 - 使用压缩后的上下文 + 最近访问的文件继续
调优过程: 1. 首先:最大化召回(捕获所有相关信息) 2. 然后:提高精确度(消除多余内容)
唾手可得的改进:清除旧的工具调用和结果
最适合:需要大量来回交互的任务
2. 结构化笔记(智能体记忆)¶
是什么:智能体在上下文窗口之外持久化笔记,并在之后检索
示例: - 待办事项列表 - NOTES.md 文件 - 游戏状态跟踪(Pokémon 示例:跟踪 1,234 步训练过程) - 项目进度日志
优点: - 以最小开销实现持久记忆 - 在工具调用之间维持关键上下文 - 支持多小时的连贯策略
最适合:具有明确里程碑的迭代开发
3. 子智能体架构¶
是什么:专门的子智能体以干净的上下文窗口处理聚焦的任务
运作方式: - 主智能体协调高层计划 - 子智能体执行深度技术工作 - 子智能体进行广泛探索(数万个 token) - 返回精简摘要(1,000-2,000 个 token)
优点: - 关注点清晰分离 - 并行探索 - 详细上下文保持隔离
最适合:复杂的研究与分析任务
快速决策框架¶
| 场景 | 推荐方法 |
|---|---|
| 静态内容 | 预推理检索或混合策略 |
| 需要动态探索 | 即时上下文 |
| 长时间的来回交互 | 压缩 |
| 迭代开发 | 结构化笔记 |
| 复杂研究 | 子智能体架构 |
| 快速模型改进 | “做最简单可行的事情” |
关键要点¶
- 上下文是有限的:将其视为具有注意力预算的宝贵资源
- 整体思考:考虑 LLM 可用的整个状态
- 保持最小:更多上下文并不总是更好
- 迭代进行:每次传递给模型时都要策划上下文
- 为自主性而设计:随着模型改进,让它们智能地行动
- 从简单开始:以最小设置进行测试,根据失败模式逐步添加
应避免的反模式¶
- ❌ 把所有内容都硬塞进 prompts 中
- ❌ 编写脆弱的 if-else 逻辑
- ❌ 构建臃肿的工具集
- ❌ 把穷尽的边界情况都塞进示例中
- ❌ 认为更大的上下文窗口能解决一切问题
- ❌ 忽视长时间交互中的上下文污染
谨记¶
"即使模型持续进步,如何在长时间交互中保持连贯性,仍将是构建更高效智能体的核心挑战。"
上下文工程将不断演进,但核心原则始终不变:优化 token 预算中的信噪比。
基于 Anthropic 的《面向 AI 智能体的有效上下文工程》(2025 年 9 月)
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/claude-mem