AI Agent 开发 --- 上下文工程:概念与落地实践(四)

上下文工程:概念与落地实践

本文整理 Context Engineering(上下文工程) 的核心观念与可执行做法,主要依据 Anthropic 工程博客 Effective context engineering for AI agents(2025-09),并结合本仓库已有模式做对照说明。目标读者:在构建多轮 Agent、工具链或长任务自动化时,需要系统管理「模型每一轮能看到什么」的工程师。


1. 上下文工程在讲什么

1.1 定义

  • 上下文(Context):某次推理时,实际进入大语言模型、参与采样的全部 token 集合(系统提示、工具定义、MCP、外部检索结果、消息历史、中间产物等)。
  • 上下文工程 :在约束与目标 之下,持续遴选、裁剪、更新 这些 token,使模型在多轮、长时域 任务上稳定产出期望行为。它不是一次性「写好 prompt」,而是每次调用前都要做的策展(curation)。

1.2 与 Prompt 工程的关系

维度 Prompt 工程 上下文工程
焦点 指令怎么写、怎么分段、示例怎么放 整盘状态:本轮该放进哪些信息、历史怎么处理、工具返回怎么截断
典型场景 单次分类、单轮生成 Agent 循环、多工具、长对话、跨会话任务
迭代单位 改 system prompt / few-shot 改「进窗策略」:检索、摘要、外部笔记、子 Agent 边界

可以把它理解为:Prompt 工程是上下文工程的一个子集;Agent 时代的主战场在「整窗管理」。

1.3 为什么必须认真对待

  1. Context rot(上下文衰减) :窗口变长后,模型对其中细节的准确回忆与利用会下降;并非无限堆字就能变强。
  2. 注意力预算 :上下文在工程上应视为有限资源;新 token 会稀释对其它部分的有效「注意力」。
  3. Agent 循环产数据:每轮工具输出、中间推理都会膨胀「可能相关」的信息;若不治理,噪声会淹没信号。

原则(原文精神) :在可接受的行为目标下,追求 尽可能小、但信号足够强 的 token 集合。


2. 上下文的组成部分与做法要点

2.1 系统提示(System prompt)

  • 高度(altitude):避免两端------一端是把复杂 if-else 业务规则全写进提示(脆弱、难维护);另一端是过于空泛、默认模型「已经懂你的业务」。
  • 结构:用 Markdown 标题或 XML 风格分段(如背景、指令、工具说明、输出格式)帮助模型解析;格式本身不如「信息是否必要且清晰」重要。
  • 起步方式 :用当前最强模型先试最小可用提示 ,再针对失败模式增量补规则与示例,而不是一上来堆砌边角案例。

2.2 工具(Tools)

  • 工具是 Agent 与环境的契约 ;设计目标包括:返回尽量省 token语义不重叠失败可恢复
  • 反模式:工具过多或边界模糊------若人类工程师无法明确说清「此情此景用哪个工具」,不能指望模型更稳。
  • 实践 :维护 MVP 工具集,随任务演化再扩展;工具描述与参数名应对模型友好(自解释、歧义少)。

2.3 示例(Few-shot)

  • 继续推荐 少量、多样、能代表期望行为 的范例。
  • 不推荐 :把无数 edge case 规则塞进 prompt;应提炼成典型范式,其余交给运行时检索或工具。

2.4 消息历史与其它动态信息

  • 默认假设:历史越长,策展越重要
  • 对工具结果:深历史里的原始大段输出,往往可以清除或替换为摘要(轻量 compaction 的一种),只要不影响当前决策所需事实。

3. 运行时检索:从「预灌全文」到 Just-in-time

3.1 思路

  • Embedding 预检索 仍常见;更 Agent 化的做法是保留 轻量引用(路径、URL、查询 ID、片段定位),需要时再用工具拉取。
  • 类比人类:不背整本书,而是用目录、书签、索引 按需加载
  • 渐进披露(progressive disclosure):通过探索(列表、预览、head/tail)逐步缩小相关子集,避免一次性把大对象塞进上下文。

3.2 混合策略

  • 一部分 关键材料 upfront(如项目里的 AGENTS.md / CLAUDE.md 类说明);一部分 靠 grep/glob/读文件 即时 拉取。
  • 边界取决于任务:静态域可多读一点;高动态或大体量数据域更依赖 JIT + 强工具习惯。

4. 长时域任务的三类技术

当 token 规模持续超过「舒适区」时,原文归纳三类手段(可组合):

手段 作用 适用直觉
Compaction(压缩) 将临近上限的对话/轨迹 摘要 后开启新窗口,丢掉冗余工具输出等 需要保持对话连贯、长链工具调用
结构化笔记 / 外部记忆 把进度、决策、依赖写入 上下文外 持久存储,需要再读回 里程碑清晰、跨多会话
子 Agent 架构 子任务在干净子窗口 深挖,主 Agent 只收 浓缩摘要(如 1k--2k tokens) 复杂检索/研究、可并行探索

Compaction 注意 :过度激进会丢掉「当时看起来次要、后来才关键」的细节;实现上可先偏 召回 ,再迭代 精度(删冗余)。


5. 落地实践清单(可直接当评审表)

5.1 设计阶段

  • 是否明确列出「必须始终在窗内 」与「仅按需加载」的信息类?
  • 系统提示是否达到合适 高度(不过度硬编码、不过度模糊)?
  • 工具集是否为 最小可用无职责重叠
  • few-shot 是否为 canonical 集合,而非规则大全?

5.2 运行阶段

  • 工具返回是否有 默认截断/结构化摘要(尤其列表、大 JSON、长网页)?
  • 多轮后是否有 清除旧工具原始输出滚动摘要 的策略?
  • 是否用 引用 + 工具 代替「把整库贴进 prompt」?
  • 长任务是否具备 Compaction / 笔记 / 子 Agent 中至少一种预案?

5.3 观测与迭代

  • 能否从日志中看到「每轮进窗 token 量级」与主要来源(历史 / 工具 / RAG)?
  • 失败案例是否先区分:指令问题 vs 上下文噪声/缺失 vs 工具契约问题

6. 延伸阅读


7. 一句话备忘

上下文工程 = 把上下文当作有限注意力预算,在每一轮推理前做高信号、小体积的策展; 与 Prompt 工程并行,是构建可靠 Agent 的基础能力。

相关推荐
ACP广源盛139246256731 分钟前
M6/M5 Pro Mac mini 端侧 AI 爆发@ACP#YLB3118 存储扩展芯片在本地 AI 服务中的机会与落地场景
大数据·网络·数据库·人工智能·嵌入式硬件·macos
Rain5096 分钟前
谁动了我的 URL?——记一次微前端“灵异 Bug“的排查实录
前端·vue.js·人工智能·前端框架·bug·ai编程
外域速览10 分钟前
OpenAI Astra 跨过「高危红线」、李飞飞世界模型 Atlas 落地:AI 行业进入「安全与落地」双拐点
人工智能·安全
Mr数据杨11 分钟前
莫斯科公寓价格预测实战 从 Kaggle 房价回归到可落地估值流程
人工智能·数据分析·kaggle竞赛
故七月13 分钟前
产业观察|从 9 月行业数据看西南市场 GEO 落地现状与发展路径
大数据·人工智能
丶浅行DE时光16 分钟前
管道式电磁流量计选型指南 介质腐蚀与工况适配方案推荐
大数据·网络·人工智能·科技·推荐算法
电子科技圈16 分钟前
芯科科技在IOTE 2026上以全栈无线连接与边缘AI展现其在智能网联领域的卓越领导力
人工智能·科技
Ro Jace17 分钟前
基于深度学习的图像处理方法
图像处理·人工智能·深度学习
Y_Mathison19 分钟前
Agent安全护栏设计:权限控制、对抗鲁棒性与人工确认环
人工智能·ai
KKKlucifer19 分钟前
多模态数据精准识别:智能分类分级引擎在运营商场景的技术突破
人工智能·分类·数据挖掘