第二站: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