Context 上下文
每次 LLM 调用时,模型当前能”看到”的全部有效信息——模型的工作记忆
简介
Context(上下文)是理解 LLM 和 Agent 工程的基础概念之一。它是某一次 LLM 调用时真正送进模型的有效输入集合,不等同于”用户最后输入的一句话”,也不等同于”模型长期记忆”。
在真实系统中,一次调用的 Context 可能包含:系统指令(System Prompt)、用户当前问题、前序对话历史、模型之前的回答、工具调用返回的结果、从 Memory 检索出的资料、当前任务状态的摘要、以及相关的外部文件内容。
核心特征
Context 是有限容量的”工作记忆”
Context 受 Context Window(上下文窗口)限制,这是单次模型调用能容纳的容量上限。可以把 Context 类比为”高手当下脑中能摆下的有限工作材料”——再厉害的高手,工作记忆也是有限的。
Context 与模型参数完全不同
这两个概念经常被日常语言混称为”记忆”,但工程上完全不是一回事:
| 维度 | 模型参数(Weights) | 上下文(Context) |
|---|---|---|
| 性质 | 训练后固化的能力结构 | 本轮调用的输入集合 |
| 时效 | 长期存在(模型发布周期) | 仅本轮调用有效 |
| 类比 | 高手的武功、内功、肌肉记忆 | 高手此刻脑中想着的事 |
| 容量 | 由模型架构决定 | 由 Context Window 决定 |
| 可变 | 模型升级/微调时改变 | 每轮调用都在变化 |
新开对话”失忆”的原因是 Context 而非 Weights
用户清空 Context 重新开始对话后,模型”不记得”之前的交流——不是因为模型参数突然变了,而是因为之前那段经历没有出现在这一次调用的 Context 里。模型参数(武功)没变,只是工作记忆(Context)被清空了。
Context、Memory、Weights 三者的关系
LLM 直接推理时依赖模型参数和当前 Context;外部 Memory 若想影响这一轮判断,通常需要先被读取,再进入 Context。
- Weights:模型训练形成的内在能力(“已经练成的武功”)
- Context:本轮调用的工作记忆(“此刻脑中想着的事”)
- Memory:模型外部的长期存储(“外部笔记本/档案”)——需要检索后放入 Context 才能影响 LLM 的判断
因此”模型记得”和”系统帮模型找回来再塞给它”是完全不同的两件事。
Context 在 Agent Loop 中的角色
Agent 执行多步骤任务时,Context 会在每一轮循环中不断演化:
- 新增 Tool 返回结果
- 新增前序的判断和决策
- 可能裁剪/摘要旧内容以控制大小
- 可能注入 Memory 检索结果
这使 Context 管理(Context Engineering)成为 Agent 系统的核心工程挑战之一:任务越长,Context 越大,需要系统性决定哪些保留、哪些删除、哪些总结、哪些外置到 Memory 或文件系统。
不同素材中的观点
来自 2026-08-11-agent-worldview-llm-context-tool-agent:
- Context 不是只有”用户最后一句话”,是这一次模型调用时真正送进模型的有效输入集合
- 模型参数 = 高手已练成的武功(长期存在),Context = 高手眼下正在想着的事(本轮有限)
- LLM 直接推理依赖 Weights + Context;Memory 的信息通常需要先进入 Context 才能影响推理
- 新开对话”失忆”是因为 Context 中没有前序信息,而非 Weights 发生改变
实用信息
常见误区
| 误区 | 正解 |
|---|---|
| Context 就是长期记忆 | Context 是当前工作记忆,Memory 是长期存储 |
| Context 就是 User Prompt | Prompt 只是 Context 的输入来源之一 |
| 模型参数是数据库 | Weights 是训练固化的能力结构,不是按文章存储的资料库 |
Context Window 与 Task 长度的关系
- 短任务(1-5 轮):Context 变化不大,无需管理
- 中任务(5-30 轮):需开始考虑历史裁剪、关键状态保留
- 长任务(30+ 轮):必须系统化 Context Management——摘要压缩、Memory 外置、文件系统引用、结构化 State 替代完整历史