Agent 框架的本质:一场关于上下文管理的博弈
2026年2月8日
一、Agent 框架的核心是上下文管理
在当前的大模型应用范式中,当我们讨论 Agent 框架时,本质上是在讨论如何在模型能力与资源约束之间,构建一套高效的上下文管理机制。
假设模型能力确实能够完成某项任务,Agent 的上下文管理实际上要做的工作是:在满足模型最大上下文窗口限制的前提下,寻找能触发预期输出的最优最小上下文:
例如:
- 当用户询问 AI 客服 “如何退款”时,系统通过 RAG 检索到相关知识库,搜索到“点击我的-订单-申请售后,可以退款”,将其与通用上下文“你是一个智能客服,请根据知识库结果回复”输入,模型输出正确的回复“尊敬的用户,您可以点击我的-订单-申请售后,以申请退款”,这就是理想的输出。
- 而在更复杂的 Coding Agent 场景中,模型执行“思考-调用工具探索-使用 write 编写程序”,最后的
write写入操作才是我们需要的 Expected Output,在此之前产生的所有代码库搜索,本质上都属于上下文。
二、为什么要追求“上下文最小化”?
尽管长文本技术在不断进步,但维持“最小必要上下文”依然非常必要:
- 性能精度与信噪比: 即使模型本身能处理长文本,模型表现也会随上下文增长而出现劣化。冗余 Token 会降低信噪比,导致注意力偏移,使模型忽略核心指令。
- 任务聚焦: 最小化输入能让模型专注于当前子任务。冗余信息不仅浪费 Token 成本,更会分散模型在处理逻辑推理时的注意力。
- 经济与响应效率: Token 价格是企业应用的重要考虑因素,更多的输入意味着更贵的价格;且最小化输入能显著优化模型响应速度。
三、模型内生知识 vs. 外部注入上下文
并不是所有信息都需要占据 Prompt。我们需要根据任务对模型训练数据的依赖程度进行区分:
- 内生知识: 如果任务在训练集中高频出现(如通用代码、翻译),模型无需额外教学。这也是为什么 Coding Agent 倾向于使用通用的 Bash 工具而非复杂的自定义 MCP。
- 案例: Pi Agent 采取了极端策略,不提供任何 MCP,仅提供
bash、read、write三种工具,完全依靠模型强大的参数化知识,让模型自行决定工具调用就能很好地完成任务。1
- 案例: Pi Agent 采取了极端策略,不提供任何 MCP,仅提供
- 外部注入: 当模型缺乏先验知识时,必须通过 Prompt 进行实时“教育”。
一个典型的例子是:
- 让模型画“派蒙”(训练量大),表现极好;
- 画“愚人众哥伦比娅”(虽然不多,但训练集确实有她的图),表现尚可;
- 画“月神哥伦比娅”(角色的新形象,模型完全不懂),若缺少提示词模型将完全无法产出理想内容。
目前大模型在代码、翻译领域成果斐然,本质上是因为其语料丰富,模型在不调优、不依赖复杂上下文的情况下即可获得极佳效果。
四、上下文注入——被动注入与主动获取
上下文注入通常有以下两种方式:
1. 框架被动注入
这是由程序逻辑预设的输入流。包括:
- 固定注入: 系统提示词、项目规范文件(
AGENTS.md)、Skills 文件夹中的元数据、MCP工具信息。 - RAG 检索: 当知识库过于庞大时,利用向量匹配将相关片段注入上下文。
2. Agent 主动获取
- 模型根据当前进度自主判断。例如,调用
read阅读代码文件、使用web_search查询资料。
五、上下文退出
冗余信息在 Agent 运行中经常产生:最典型的例子是 RAG 检索到了与问题不相关的干扰信息;或者是 Coding Agent 在不同任务之间切换时带来的残留信息——当模型完成一个功能并转向下一个功能时,上一个任务查询的 API 或文件上下文往往不再需要,此时若不退出旧信息,模型需要阅读的内容会迅速堆叠,导致注意力涣散。
为了实现上下文的最小化,目前业界已出现以下退出手段:
- 动态 RAG 调整: Cursor 的代码库检索会自动根据当前任务动态调整并替换最需要的代码片段。
- 上下文压缩(Compacting): Claude Code 与 Gemini CLI 在窗口接近临界点时,会将之前的所有内容总结为一段简明报告,随后清空上下文并以该报告作为起始重新开始,避免爆上下文窗口。2
- 大结果分级存储: 如果工具执行(Tool Use)的结果过长,Claude Code 等框架会将其保存在临时文件,让 Agent 通过 Bash 工具按需读取部分行,避免直接撑爆上下文。
- 动态遮蔽机制: Manus 会利用向量匹配自动遮蔽当前不相关的 MCP 插件信息;Cursor 则会根据 Query 动态加载/卸载 MCP。
- 过时内容遮蔽:Claude API 可以遮蔽部分旧的工具调用结果,将其替换为占位符。3
- 使用子代理:当部分任务不需要过往上下文时(例如 Code Review),或不希望该任务思考过程的上下文进入当前任务时(例如制定计划、代码库探索),可以将任务交给子代理完成。Claude Code 会在 Plan 完成后,会推荐清空当前上下文,也是同样的道理。
六、 Agent 的记忆层级架构
在注入与退出机制之上,更高级的 Agent 正在构建类似于计算机的存储架构:
- Claude Code 将对话历史存储在外部,模型根据需要通过
read工具按需调取历史。 - OpenClaw 在 System Prompt 中要求模型将核心记忆实时写入
MEMORY.md。这一文件会通过动态加载进入 System Prompt。4 - 也有部分 Agent 系统,尝试使用其他文件系统,甚至 Sqlite 数据库帮助大模型维护记忆
七、 结语
上下文管理不是简单的“填鸭”,而是一场关于注入与退出的精准博弈。未来的 Agent 框架将不再以“支持多长文本”为荣,而将以“如何用最少的 Token 驱动最复杂的任务”作为衡量其智能化程度的金标准。