第二站:Context Engineering#
Agent需要完整任务环境#
Agent 火起来之后,模型不再只是"回答问题",而是真要进到环境里"干活"了。
系统面对的问题变了:
不再是"这一次答得对不对"
而是"整条链路能不能跑通"
每一次发给模型的全部信息加在一起,就叫上下文(Context)。提示词只是其中很小的一块。
上下文的组成:
Context = 提示词
+ 系统消息
+ 历史对话
+ 工具描述
+ 工具返回结果
+ 检索到的外部知识
+ 任务状态/进度
+ 环境感知信息
上下文窗口#
这里有个要命的现实:模型一次能装的上下文是有上限的(上下文窗口,Context Window)。
约束链:
任务复杂度 ↑ → 所需上下文量 ↑ → 逼近窗口上限 → 必须取舍
取舍维度:
哪些信息必须保留(核心任务、关键约束)
哪些信息可以压缩(历史对话摘要)
哪些信息可以丢弃(已完成的子任务细节)
哪些信息需要按需加载(工具说明、参考资料)
context rot:上下文腐化#
更麻烦的是:塞太满,注意力反而涣散。
Anthropic 给这个现象起了个名字:context rot(上下文腐化)。
上下文塞得越满
↓
模型注意力被稀释
↓
关键信息被淹没在噪声中
↓
输出质量反而下降
这意味着"给得多"不等于"给得好"。超过某个阈值后,信息量增加反而带来负收益。
渐进式披露#
Anthropic 那套 Agent Skills 的"渐进式披露"(Progressive Disclosure)就是这个理念的极致实践:
阶段 |
模型看到的内容 |
信息量 |
|---|---|---|
默认状态 |
一份能力目录(每个能力一行简介) |
极小 |
判断需要 |
模型识别任务需要某能力 |
仍小 |
动态加载 |
把该能力的详细说明加载进上下文 |
按需扩大 |
使用完毕 |
详细说明可被清理或保留 |
可收缩 |
核心理念:平时只给模型看一份能力目录,等它判断真要用某个能力了,才把详细说明动态加载进来。
核心原则:给得准而非给得多#
Context Engineering 的核心,不是"给得多",而是"给得准"。
反模式 |
正模式 |
|---|---|
把所有相关文档全塞进上下文 |
按任务阶段动态检索最相关的片段 |
保留完整对话历史 |
摘要历史 + 保留关键决策点 |
一次性列出所有工具说明 |
仅在可能调用时加载工具说明 |
重复信息以"确保模型记住" |
信息去重 + 结构化标注优先级 |
工程实践要点:
检索增强:用 RAG 等技术按需注入外部知识
记忆压缩:对长历史进行摘要而非全量保留
结构化分层:将上下文分为"始终保留"与"按需加载"两层
动态装载:根据任务进展动态调整上下文内容
瓶颈:给什么#
Context Engineering 解决的核心瓶颈是"给什么"。
它承接 Prompt Engineering 的局限:
Prompt 解决了"怎么说",但变不出模型不知道的事实
Context 把"给什么"纳入工程范畴——通过检索、记忆、工具结果等注入模型训练外的事实
但它也很快遇到新瓶颈:当任务链路变长、模型需要连续工作数小时时,单纯把上下文管理好已经不够——模型在长链路中会跑偏,需要外部监督。这催生了 Harness Engineering。
← 返回 索引页 | 上一节 02-Prompt Engineering | 下一节 04-Harness Engineering