上下文工程(Context Engineering)

作者:uzong日期:2026/2/4

本文整理自 LangChain 博客《Context Engineering for Agents》」更自然 blog.langchain.com/context-eng…

随着大语言模型(LLM)在智能体(Agent)系统中的广泛应用,如何有效管理有限的上下文窗口(Context Window)成为关键挑战。

1. 为什么需要上下文工程?

大语言模型的上下文窗口类似于计算机的 RAM——它是模型的“工作记忆”,但容量有限。当智能体执行长期任务时,会不断累积以下类型的上下文:
● 指令(Instructions):提示词、记忆、少样本示例、工具描述等
● 知识(Knowledge):事实、用户偏好、历史信息等
● 工具反馈(Tools):API 调用结果、代码执行输出等

长期执行的任务和工具调用反馈的积累意味着智能体通常会使用大量令牌。这可能引发多种问题:可能超过上下文窗口大小、导致成本或延迟急剧上升,或降低智能体性能。

随着交互轮次增加,上下文迅速膨胀,可能引发以下问题:

问题类型描述
上下文中毒(Context Poisoning)幻觉内容被写入上下文,污染后续推理
上下文干扰(Context Distraction)过多无关信息压倒模型对核心任务的关注
上下文混淆(Context Confusion)冗余或矛盾信息导致输出不一致
上下文冲突(Context Clash)上下文中存在相互矛盾的事实或指令

上下文工程已成为构建可靠、高效智能体的首要任务.

2. 上下文工程的四大核心策略

为应对上述挑战,业界普遍采用以下四类策略:

  • 写入上下文(Write)
  • 选择上下文(Select)
  • 压缩上下文(Compress)
  • 隔离上下文(Isolate)

2.1 写入上下文(Write)

将重要信息保存到上下文窗口之外,供后续使用。

Scratchpad(草稿板) :在单次会话中临时存储计划、中间结论等。例如 Anthropic 的多智能体研究系统中,主研究员会将研究计划写入 Memory,防止因上下文截断而丢失。实现方式:通过工具调用写入文件,或存入运行时状态对象(State)。


长期记忆(Memories) :跨会话持久化信息。

应用实例:ChatGPT、Cursor、Windsurf 均支持自动生成用户专属长期记忆。

2.2 选择上下文(Select)

动态检索最相关的信息注入当前上下文。

  • 从 Scratchpad 选择:若以 State 存储,开发者可控制每步暴露哪些字段;若以工具实现,则通过读取工具调用获取。
  • 记忆检索
    • 程序性记忆(Procedural):如 CLAUDE.md、规则文件,用于指导行为。
    • 情景性记忆(Episodic):少样本示例。
    • 语义性记忆(Semantic):事实知识,通常通过向量嵌入知识图谱进行检索。
  • 工具选择:对大量工具使用 RAG 技术,仅检索与当前任务最相关的工具描述,可提升工具选择准确率。
  • 知识检索(RAG) :尤其在代码智能体中,需结合 AST 解析、文件搜索、知识图谱与重排序等多种技术,而非仅依赖向量搜索。

2.3. 压缩上下文(Compress)

保留完成任务所需的最少 token

上下文摘要(Summarization)

  • 在接近上下文上限时,对整个对话轨迹进行递归或分层摘要。
  • 可在特定节点(如耗 token 的搜索工具后)插入摘要步骤。
  • 复杂场景下甚至需微调专用摘要模型。

上下文修剪(Trimming/Pruning)

  • 基于启发式规则(如删除最早消息)。
  • 或使用训练好的上下文剪枝器。

2.4. 隔离上下文(Isolate)

将上下文拆分,避免相互干扰

image.png

3. LangGraph:上下文工程的实践框架

LangGraph 作为底层智能体编排框架,原生支持上述所有策略:

image.png上下文工程已从“技巧”演变为智能体开发的核心工程学科。面对有限的上下文窗口与复杂的任务需求,开发者必须像操作系统管理内存一样,精心调度每一条信息的“生命周期”——何时写入、如何选择、是否压缩、怎样隔离。

上下文工程不是 “越多信息越好”,也不是 “越少信息越省”,而是在每个任务步骤中,让 Agent 获得 “刚刚好” 的信息。


上下文工程(Context Engineering)》 是转载文章,点击查看原文


相关推荐


墨梅博客 1.2.0 发布与 AI 开发实践 | 2026 年第 4 周草梅周报
草梅友仁2026/1/25

本文在 草梅友仁的博客 发布和更新,并在多个平台同步发布。如有更新,以博客上的版本为准。您也可以通过文末的 原文链接 查看最新版本。 前言 欢迎来到草梅周报!这是一个由草梅友仁基于 AI 整理的周报,旨在为您提供最新的博客更新、GitHub 动态、个人动态和其他周刊文章推荐等内容。 开源动态 本周依旧在开发 墨梅 (Momei) 中。 您可以前往 Demo 站试用:demo.momei.app/ 您可以通过邮箱 admin@example.com,密码momei123456登录演示用管理


Monorepo入门
Hyyy2026/1/17

1. Monorepo 介绍 核心价值:把“需要一起演进的一组项目”放在同一个版本空间里,从而让跨项目改动(API 变更、重构、升级)能在一次提交里完成并验证 Monorepo 是把多个相关项目/包放在同一个 Git 仓库中管理的策略,有助于跨项目联动修改、内部包共享更顺畅、统一规范与 CI、版本控制、构建和部署等方面的复杂性,并提供更好的可重用性和协作性。 Monorepo 提倡了开放、透明、共享的组织文化,这种方法已经被很多大型公司广泛使用,如 Google、Facebook 和 Mic


HarmonyOS一杯冰美式的时间 -- FullScreenLaunchComponent
猫猫头啊2026/1/9

一、前言 最近在开发中,我们的元服务需要被其他应用通过FullScreenLaunchComponent拉起,我只能说当时上了5.0的当,FullScreenLaunchComponent也是Beta版本的!在实际开发中作为碰了几次灰,踩了不少坑,觉得有必要分享下,故有了此篇文章。 该系列依旧会带着大家,了解,开阔一些不怎么热门的API,也可能是偷偷被更新的API,也可以是好玩的,藏在官方文档的边边角角~当然也会有一些API,之前是我们辛辛苦苦的手撸代码,现在有一个API能帮我们快速实现的,希望


设计模式和设计原则-中高级架构思路-面向接口编程
自由生长20242025/12/31

历史文章参见 设计模式-23种设计模式的说法-掘金 每日知识-设计模式-状态机模式-掘金 每日知识-设计模式-观察者模式 - 掘金 cpp笔记第3篇-C++多线程单例模式单例模式 - 掘金 今天讲讲面向接口编程的核心思想,它可以看到各种设计模式的一种杂糅。 面向接口编程的核心思想 以实际的代码举例子,我最近在写一个安卓的笔记程序,使用到了面向接口的编程方法,下面我以具体的类举例来说明面向接口编程的思想,以及后文解释,面向接口编程可以体现哪些设计模式。 一、依赖接口,而不是具体实现 // ❌ 面


你以为 Props 只是传参? 不,它是 React 组件设计的“灵魂系统”
白兰地空瓶2025/12/22

90% 的 React 初学者,都低估了 Props。 他们以为它只是“从父组件往子组件传点数据”。 但真正写过复杂组件、设计过通用组件的人都知道一句话: Props 决定了一个组件“好不好用”,而不是“能不能用”。 这篇文章,我们不讲 API 清单、不背概念, 而是围绕 Props 系统的 5 个核心能力,一次性讲透 React 组件化的底层逻辑: Props 传递 Props 解构 默认值(defaultProps / 默认参数) 类型校验(PropTypes) children 插


前端跨页面通讯终极指南⑥:SharedWorker 用法全解析
一诺滚雪球2025/12/14

前言 前面的文章已经介绍了postMessage、localStorage、messageChannel、broadcastChannel以及window.name。今天要介绍一种“多页面协同”场景的工具——SharedWorker。 不同于普通Worker只能被单个页面独占,SharedWorker能被同一域名下的多个页面共享,实现高效的“多页面数据中枢”。本文就带你了解SharedWorker跨页面通讯的核心用法。 1. 什么是SharedWorker? 在介绍SharedWorker之前,


从 Oracle 到 KingbaseES:破解迁移痛点,解锁信创时代数据库新可能
倔强的石头_2025/12/5

提起 Oracle,它在传统数据库领域可是标杆般的存在,长久以来一直撑起了众多企业的核心业务,可这两年情形发生了改变,Oracle的授权费用很高,运维成本又让人头疼,再加上信创政策对于合规有着强硬的要求,于是很多企业便开始把目光转向国产数据库。金仓数据库 KingbaseES 是国产数据库中的佼佼者,凭借其高适配性和高性能的基础,成了人们更换 Oracle 的首要选择,不过要告诉大家的是,迁移之路并非易走,“报错”频繁出现,存在适配性障碍,成本难以控制住……这些难点真真切切地成为了企业在执行迁移


【C++】多态
yuuki2332332026/2/12

前言: 在面向对象编程的学习脉络中,继承机制让代码的复用和层级设计成为可能,但仅靠继承无法完全体现对象行为的灵活性。比如我们通过继承定义了Person基类,以及Student、Soldier等派生类后,若想让不同对象执行 “买票” 这一相同名称的行为时展现出不同逻辑(普通人全价、学生打折、军人优先),单纯的继承语法无法高效实现这种 “一个接口,多种实现” 的需求。而多态作为继承的延伸与升华,恰好解决了这一问题 —— 它让继承体系下的不同对象,对同一行为能做出符合自身特性的响应,是面向对象编程中实


基于 YOLOv8 的水体污染目标检测系统 [目标检测完整源码]
我是杰尼2026/2/21

基于 YOLOv8 的水体污染目标检测系统 [目标检测完整源码] 一、背景:水体监控为什么需要“计算机视觉”? 在水资源保护与环境治理领域,“看得见问题”往往是治理的第一步。然而在真实场景中,水体监控长期面临以下现实挑战: 水域面积大、人工巡检成本高 污染物种类多、形态变化大 人工判读主观性强、难以量化 传统传感器难以识别“视觉型污染” 随着无人机、高清摄像头、遥感设备的普及,水体数据获取已不再是瓶颈,真正的难点转移到了如何从海量影像中自动识别污染风险。 基于此,本文介绍一套 以 YOLOv


OpenClaw安装技能的三种方式
可夫小子2026/3/1

OpenClaw安装技能的三种方式 💡 大家好,我是可夫小子,《小白玩转ChatGPT》专栏作者,关注AI编程、AI自动化和自媒体。 OpenClaw很强大,但也需要搭配很多技能才能发挥最大的作用,它的安装方式没有像Claude Code那样复杂,但也还有一些操作过程。在OpenClaw里面,可以通过WebUI的界面,很直观的管理安装的技能。 但如果安装技能呢?今天分享常用的三种方式。 通过官方openclaw命令来配置 通过openclaw config 命令,选择Local→Ski

首页编辑器站点地图

本站内容在 CC BY-SA 4.0 协议下发布

Copyright © 2026 XYZ博客