实战·Agentic 上下文工程(上):无需微调,让智能体自我学习与进化

101 阅读10分钟

实战·Agentic 上下文工程(上):无需微调,让智能体自我学习与进化

在提示工程的年代,我们教AI“怎么回答”;而在Agent(智能体)的时代,我们要教它“怎么思考”。于是,提示工程进化成了一个新形态 — **上下文工程(Context Engineering) —**它不再是微调一行提示,而是构建一个能让AI感知世界、自主决策与行动的舞台。【AI大模型教程】

最近,斯坦福大学等团队联合提出了一种上下文工程方法:Agentic Context Engineering(ACE)。让智能体无需微调,也能通过上下文的不断演化实现自我学习与进化

这是《实战·Agentic 上下文工程》的上篇。你将看到:

  • 为什么上下文需要“工程”
  • 什么是上下文工程
  • 上下文工程的常见策略
  • Agentic上下文工程是什么
  • Agentic上下文工程原理与架构

在下篇中,我们将基于ACE构建一个能够“自己复盘与改进”的Agent原型系统。

为什么上下文需要“工程”?

现在的上下文窗口已经普遍达到128K以上甚至1M,这给了智能体勃勃生机的无线可能:你可以把大量智能体需要的东西(指令、知识、工具等)都丢进一次Prompt中,让LLM自由的推理、规划、行动。

但为什么智能体的表现仍然不尽如人意?问题的原因不在于上下文能“装”多少,而在于最终LLM“消化”的是什么。LLM的输出永远存在不确定性——这是架构层面注定的事实。在模型尚未发生质变之前,我们能控制的唯一变量,就是它的输入:上下文(Context)

而控制上下文,更大的“胃口”(窗口大小)固然重要;但更重要的是“营养”(质量)。大量的测试表明,更长的上下文并不确定会带来更好的结果:其中可能的冗余、冲突、错误(幻觉)信息都会让LLM迷失方向。

即使上下文内容完全正确,当输入规模过大时,LLM的“注意力”也可能会被分散,关键指令或语义线索被淹没,导致模型理解出现偏移与错位,甚至在推理中“跑题”。

更重要的是,在智能体的多轮推理中,微小的偏差会不断“叠加”,最终Agent任务可能完全“南辕北辙”。

这就是为什么需要上下文工程(Context Engineering):

当LLM可以“吞”下更多内容时,你需要确保“营养搭配”:有结构、有逻辑、有重点,而不仅仅是“堆料”。

什么是上下文工程?

Shopify的CEO Tobi Lutke这样形容上下文工程:

为LLM提供所有用于合理解决任务的上下文信息的艺术。

如果说上下文是LLM的RAM(来自OpenAI 前研究科学家 Karpathy的比喻),那么上下文工程(Context Engineering) 就是 — 设计并实施这块有限 RAM 的管理机制,让信息的组织、输入、更新、淘汰都更有秩序与目的性。

上下文工程不是简单的提示模板设计与堆叠(尽管提示模板是它的一角)。它需要关注到更深层次的一系列结构性问题与工程方法:

  • 包含哪些信息,如何组织,什么格式?

    行业知识或工具指南,或者更多,如何分类排序?

    普通文本还是半结构化的JSON、Markdown?

  • 信息从哪里,又在什么时候获取?

    是来自企业内部数据库还是互联网、或Agent产生?

    是原始输入还是通过中间步骤动态注入?

  • 信息如何产生,如何存储,又是如何检索?

    静态信息、缓存信息、动态生成与检索?

    传统索引、向量数据库,还是实时 Web 搜索?

  • 信息是否需要清洗、标注、压缩?

    是否需要去除冗余、噪音、重复,并标注出重点?

    上下文是否需要压缩(如长期记忆)?

  • 信息是否需要有生命周期管理?

    哪些内容持久存在,哪些随时间与任务衰减?

    信息过期机制,滑动窗口、基于使用次数还是LLM判断?

总之,上下文工程更像是为LLM建立一套语义的“供应链”,让LLM得以正确理解和推理 — 从而让Agent做出正确的决策。

上下文工程的常见策略

上下文工程涵盖很多不同的方法与技术。在实践中,有一些经过验证、可复用的策略,能帮助我们更好地实施上下文工程,这里为大家总结:

1)上下文分区与隔离

为了让“RAM”中的信息不打架、逻辑不混乱,可以对上下文进行分区:

  • 将上下文划分为指令层、目标层、记忆层、知识层、工具层
  • 为每一层分配独立的 Token 预算与出现顺序,确保关键信息始终可见
  • 给不同的角色(如规划器、执行器、反思器)分配不同的上下文切片,避免信息冗余与推理“漂移”

2)用RAG装备知识

  • 通过检索召回相关的知识,动态注入上下文。
  • 不要迷信超大上下文窗口 -- “把所有东西都塞进窗口”。太多的垃圾信息,只会让LLM又傻又慢。上下文不是简单的“堆料”,而是“选料”。

3)合理组装工具(Tools)

工具(Tools)是Agent的手脚,上下文工程要教他如何用手脚:

  • 给每个工具以清晰、没有歧义的“说明书”(如函数Docstring)
  • 仅装载最相关的工具,比如用RAG来筛选工具描述
  • 让工具的异常返回具有清晰的“引导性”,而不是简单的“Tool Error”

4)多智能体协作

在大型的Agent任务中,多Agent是一种常见的架构模式:

  • 每个子Agent拥有各自独立的上下文窗口与任务焦点,本身就是一种上下文隔离,减少干扰的手段
  • 让单Agent推理100个工具,不如让五个Agent各推理20个,再加一个协调者
  • 多Agent设计可以遵循模块设计经典原则“高内聚、低耦合”

5)修剪、卸载、压缩

在长程推理任务的Agent中,你需要考虑应对上下文的“滚雪球”式的膨胀:

  • 修剪:适时删除不相关的信息。可借助LLM或者规则引擎来判断
  • 卸载:让Agent在上下文之外”记笔记”,比如把阶段性结果写入外部存储,必要时再引用(如工具输出、动态规则等)
  • 压缩:通过摘要或语义聚合让上下文更紧凑,提高信息密度而不过度冗长。

当然,除了这些重要的上下文策略,传统提示工程中的技巧仍然奏效:比如指令既不能太死板,也不能太空洞;提供少量但多样化的few-shot等。

Agentic上下文工程(ACE)是什么?

Agentic上下文工程(Agentic Context Engineering)是由斯坦福大学、SambaNova、UC 伯克利团队提出的一种上下文工程框架,,其核心理念是:

不用微调,不改变模型参数,让智能体自己成长。

换句话说,ACE 的目标不是“训练一个更聪明的LLM”来让Agent更聪明,而是让Agent学会“训练自己” — 通过不断调整和丰富它的上下文,实现一种类似“自我学习”“自我成长”的能力。

ACE采取了怎样的方法呢?

ACE 给上下文带入一份可以不断演化的**“策略手册(Playbook)”**。每次任务执行,Agent会从自己的表现中总结经验并修正,并带着改进后的“宝典”进入下一轮。如此循环往复,Agent的能力也随之积累与升级。

假设有一个客服智能体,负责回答用户的退换货问题。

  • 第一次任务中,它在处理“退款到账时间”的问题时,给出了笼统的回答:“一般需要1–7个工作日。”

  • 但用户追问后发现该回答并不准确,因为不同支付方式的退款周期不同。

  • 任务结束后,反思器(Reflector)开始分析了这次对话的轨迹与失败原因:

“我没有区分支付渠道(支付宝、微信、信用卡),

导致回答模糊,用户体验不佳。”

  • 接着,策划器(Curator) 会把这条经验转化为Playbook中的“经验”。这条经验会被注入到下一次任务的智能体上下文

“当回答退款周期问题时,需根据支付方式提供具体时间范围。”

  • 第二次任务,当智能体再次遇到类似问题时,参考这条经验,回答变成:

“若您通过支付宝付款,退款通常在 1–2 个工作日内到账;

若使用信用卡,银行处理可能需要 3–7 个工作日。”

这就是一次完整的“ACE 循环”:

生成 → 反思 → 策划 → 再执行。

智能体没有改模型参数,却通过上下文的演化,

学会了更精准、更符合场景的回答。

Agentic上下文工程(ACE)原理与架构

ACE通过四个核心组件的协同工作,实现了 Agent 的持续学习和自我进化。这四个组件形成了一个完整的学习循环,让 Agent 能够从每次执行中积累经验,并将这些经验转化为可复用的策略:

  • 策略知识库(Playbook)-- "记忆体"

ACE系统的"记忆中枢",负责存储和管理 Agent 在实践中学到的所有策略。它不是一个简单的数据存储,而是一个智能化的知识管理系统,承担必要的策略维护与生命周期管理等。

  • 生成器(Generator)-- "行动者"

承担常规任务执行的角色,基于当前上下文执行任务,产生一系列动作、推理轨迹和结果(如对话和工具使用序列)。在此过程中会暴露出问题:哪些策略是有效的,哪些出现偏差。

  • 反思器(Reflector)-- "复盘者"

每轮任务后,对生成器的行为轨迹进行反思 ,提炼出具体的经验教训,如:哪些提示奏效了?哪些推理路径出现失误?哪类信息确实导致错误?你可以理解为一种“工作复盘:这一步我为什么错了?下次我应该注意什么?。

  • 策划器(Curator)-- "策略管家"

将反思器给出的教训转化为可以附加在上下文中的可复用的策略,并维护更新Playbook。这里的关键在于:不是简单地插入或覆盖,而需要实现严格的质量控制(去重、修剪、评分等)、优先级决策、生命周期管理等能力。

我们用伪代码来认识工作原理:

# === 一次完整的 ACE 循环 ===def ace_round(task, playbook):    # 1) 取策略手册生成上下文(可含 RAG/工具说明/约束)    strategies = playbook.query(task)    context = build_context(task, strategies)    # 2) 行动者执行任务,产生轨迹    generator = Generator()    trace = generator.run(task, context)    # 3) 反思器复盘轨迹,产出“经验教训”    reflector = Reflector()    lessons = reflector.analyze(task, trace)    # 4) 策划器做质量控制,增量写回 Playbook    curator = Curator()    updates = curator.curate(lessons)    playbook.update(updates)    return trace, updates# === 主流程(持续的在任务过程中学习) ===playbook = Playbook()for task in task_stream():     # 连续的真实任务流    trace, updates = ace_round(task, playbook)

ACE 的创新在于,它建立了一个真正的智能体学习闭环:

生成→反思→策略->再生成

智能体不只是执行任务,而是在不断****学习如何执行得更好 - 每一次任务都在丰富它的上下文,完善它的策略。

这正是“Agentic上下文工程”的真正含义——

让上下文智能进化,进而让Agent自我成长,不断变聪明。

我们将在下篇中介绍一个ACE系统的原型设计与实现,欢迎继续关注。