Context:模型本轮真正看到的信息
Context 是一次模型调用输入中的信息集合,包括系统指令、用户消息、最近对话、工具定义、工具结果、检索片段、任务状态和运行时提示。它不是 Memory 的同义词,而是 Memory 被选择和装配后的当前工作集。
1. Context 的组成
system/developer instructions
task goal and constraints
selected conversation history
current plan/state
available tool schemas
retrieved evidence
recent tool results
budget and stop conditions
不同层有优先级、可信度和生命周期。网页内容、文件内容属于数据,不能与系统规则混在同一语义层。
2. Context Engineering
核心不是“塞更多 token”,而是让模型在每轮看到完成当前决策所需的最小充分信息:
- 只暴露相关工具;
- 大文件按需读取;
- 老历史压缩为结构化摘要;
- 关键约束重复注入稳定区;
- 证据保留来源 ID;
- 计划、待办和验证状态类型化;
- 高噪声日志先提取错误片段。
3. 上下文窗口不是持久化
窗口变大只提高单次可见量:
- 会话结束后不会自动保留;
- 内容过多会增加成本与注意力稀释;
- 旧事实可能与新状态冲突;
- 工具结果和消息顺序仍需遵守协议;
- 长上下文也需要选择、去重和压缩。
4. Context Compaction
当历史接近预算时:
- 保留系统规则、当前目标和未完成任务;
- 保留最近关键工具调用与结果;
- 将较老过程压缩成结构化摘要;
- 把详细证据移到外部存储,仅保留引用;
- 校验摘要是否保留关键 ID、决策、错误和副作用;
- 记录 compaction 前后版本,便于诊断。
推荐摘要结构:
goal:
completed:
pending:
decisions:
constraints:
evidence_refs:
side_effects:
known_failures:
next_action:
5. 常见问题
- 摘要把推断写成事实;
- 丢失 tool call / tool result 配对;
- 省略失败尝试导致重复;
- 同时保留旧状态和新状态;
- 工具说明太多挤占任务证据;
- 外部不可信文本混入高优先级指令区。
6. 评测
设计长会话测试:在第 1、20、50 轮设置关键约束,触发 compaction 后检查 Agent 是否仍遵守;同时检查成本、延迟、重复工具调用和任务完成度。
7. Context 是一次请求的工作集,不等于 Memory
Context 是模型在当前推理调用中实际可见的 token 集合;Memory 是可跨步骤或跨会话保存、随后被选择性取回的信息。长期记忆只有经过检索和装配进入 prompt 后,才成为本轮 context。
8. 上下文预算与优先级
先为不可丢失内容预留预算:系统规则、当前目标、工具协议和最新关键观察;再按相关性加入历史、检索与记忆;最后才加入低价值示例。摘要应保留未完成事项、关键决定、证据定位和副作用状态,而不是只写自然语言概述。
长上下文仍可能产生“中间信息被忽略”、旧信息干扰和成本升高,因此“能放下”不代表“应该全部放入”。Context Builder 应记录每段内容的来源、token、选择理由与截断状态。