Context Engineering
Context Engineering 是系统地选择、组织、压缩和注入上下文,让模型在正确材料上完成任务。
1. 与 Prompt Engineering 的区别
Prompt Engineering 关注“怎么表达任务”。
Context Engineering 关注“模型完成任务需要哪些信息,以及这些信息如何稳定进入上下文窗口”。
可以理解为:
- Prompt:一次输入
- Context:任务所需的信息环境
- Context Engineering:管理信息环境的方法
2. 上下文包括什么
- 用户目标
- 当前任务状态
- 相关代码或文档
- 业务规则
- 工具说明
- 历史决策
- 用户偏好
- 验收标准
- 错误和运行结果
3. 核心问题
3.1 选什么
哪些信息对当前任务真正相关。
3.2 放多少
上下文太少会缺信息,太多会引入噪声和成本。
3.3 怎么放
不同信息需要不同结构:
- 任务目标放前面
- 约束单独列出
- 代码保持原始格式
- 检索材料附来源
- 历史信息只保留决策摘要
3.4 何时更新
长任务中上下文会过期,需要随着中间结果更新。
4. 常见策略
- 文件选择
- 文档检索
- 摘要压缩
- metadata 过滤
- 记忆分层
- 上下文模板
- 中间产物保留
- 过期信息淘汰
5. 失败模式
- 把无关材料塞满上下文窗口
- 忘记关键约束
- 历史摘要丢失决策理由
- 检索结果没有来源
- 工具返回格式不稳定
- 同一任务中上下文前后矛盾
6. 与 RAG 的关系
RAG 是 Context Engineering 的一种重要实现方式。
RAG 解决的是从外部知识库按需取上下文;Context Engineering 还包括任务状态、工具信息、用户偏好、运行结果等更广的上下文治理。
7. 一句话总结
Context Engineering 的重点不是让 prompt 更长,而是让模型每一步都拿到足够、准确、低噪声的上下文。