跳转至

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)

优点: - 关注点清晰分离 - 并行探索 - 详细上下文保持隔离

最适合:复杂的研究与分析任务


快速决策框架

场景 推荐方法
静态内容 预推理检索或混合策略
需要动态探索 即时上下文
长时间的来回交互 压缩
迭代开发 结构化笔记
复杂研究 子智能体架构
快速模型改进 “做最简单可行的事情”

关键要点

  1. 上下文是有限的:将其视为具有注意力预算的宝贵资源
  2. 整体思考:考虑 LLM 可用的整个状态
  3. 保持最小:更多上下文并不总是更好
  4. 迭代进行:每次传递给模型时都要策划上下文
  5. 为自主性而设计:随着模型改进,让它们智能地行动
  6. 从简单开始:以最小设置进行测试,根据失败模式逐步添加

应避免的反模式

  • ❌ 把所有内容都硬塞进 prompts 中
  • ❌ 编写脆弱的 if-else 逻辑
  • ❌ 构建臃肿的工具集
  • ❌ 把穷尽的边界情况都塞进示例中
  • ❌ 认为更大的上下文窗口能解决一切问题
  • ❌ 忽视长时间交互中的上下文污染

谨记

"即使模型持续进步,如何在长时间交互中保持连贯性,仍将是构建更高效智能体的核心挑战。"

上下文工程将不断演进,但核心原则始终不变:优化 token 预算中的信噪比。


基于 Anthropic 的《面向 AI 智能体的有效上下文工程》(2025 年 9 月)

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/claude-mem