ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

AI Agent 上下文工程全链路实践:从提示词优化到上下文压缩

AI Agent 上下文工程全链路实践:从提示词优化到上下文压缩 这里写自定义目录标题欢迎使用Markdown编辑器引言Agent 的瓶颈正在从模型能力转向上下文能力一、为什么长上下文模型不等于无限记忆二、上下文工程与提示词工程的区别三、上下文包的结构化建模四、上下文压缩的三种核心手段4.1 摘要压缩生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能丰富你的文章UML图表流程图FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好 这是你第一次使用# AI Agent 上下文工程全链路实践从提示词优化到上下文压缩引言Agent 的瓶颈正在从模型能力转向上下文能力过去两年AI Agent 工程实践里有一个非常明显的变化开发者最初把主要精力放在模型选型、Prompt 编写和工具调用上而一旦进入生产环境真正让系统变得复杂的往往不是这些环节而是上下文管理。一个简单的聊天机器人只需要把用户问题发给大模型即可。但一个真正的企业级 Agent 通常需要同时处理当前用户请求、多轮对话历史、用户长期偏好、当前任务状态、历史任务结果、工具调用记录、数据库查询结果、RAG 检索结果、外部网页或 API 数据、系统规则、安全策略、Agent 自身产生的中间状态以及其他 Agent 返回的信息。最终发送给模型的已经不再是一个简单 Prompt而是一套动态构建出来的上下文包Context Package。因此Agent 的核心问题已经从怎么写一个更好的 Prompt逐渐变成在有限 Token 预算下如何让模型在当前任务中获得最有价值、最可靠、最及时的上下文。这就是上下文工程Context Engineering真正要解决的问题。一、为什么长上下文模型不等于无限记忆很多人误以为上下文窗口越大就可以把所有历史数据都塞进去。但研究已经发现即使模型具备很长的上下文窗口当关键信息位于长上下文中间位置时模型的利用能力仍可能明显下降这就是著名的Lost in the Middle现象。更麻烦的是高保真幻觉当上下文突破某个临界点后模型调用关键信息的准确率会断崖式下跌但它的语言依然丝滑、逻辑看似自洽甚至还会主动加一句根据您之前的指示……来假装记忆在线。输出越漂亮错误越隐蔽。所以上下文工程不是简单地扩大上下文窗口而是围绕上下文的生命周期进行系统设计采集什么、保留什么、压缩什么、按什么顺序摆放、什么时候丢弃。二、上下文工程与提示词工程的区别提示词工程主要关注如何设计一段更好的提示词让模型完成特定任务。它面向的是单次调用的输入质量。上下文工程则关注在有限 Token 预算下如何组织、筛选、压缩、排序所有可能进入模型视野的信息。它面向的是整个 Agent 生命周期的信息供给。可以这样理解提示词工程是把一句话说好上下文工程是把整个工作台摆好。前者是微观技巧后者是系统架构。2026 年随着上下文窗口普遍突破百万 Token行业共识逐渐清晰决定 AI 应用上限的不再是如何哄模型说话而是如何构建一个稳定、可观测、可编程的上下文供给系统。三、上下文包的结构化建模我们可以把 Agent 的一次模型调用抽象为c_t s i_t h_t m_t r_t t_t o_t其中s系统指令System Instruction全局生效i_t当前用户输入h_t短期对话历史m_t长期记忆用户偏好、历史经验r_t检索结果RAG 输出t_t工具及其执行状态o_tAgent 运行过程中的其他状态这个公式的价值在于它把上下文从一团模糊的文本变成了可拆分、可度量、可优化的组件集合。每个组件都有独立的生命周期管理策略。四、上下文压缩的三种核心手段4.1 摘要压缩当对话历史超过阈值时用模型把旧对话压缩成结构化摘要只保留关键事实、决策和结论defsummarize_history(history:list[dict])-str:promptf 请将以下对话历史压缩为结构化摘要保留 1. 用户的核心诉求与偏好 2. 2. 已确认的事实与决策 3. 3. 未完成的任务与待办 4. 4. 关键约束条件 5. 对话历史 6.{history}7. 输出格式Markdown 列表 8. 9.returnllm.invoke(prompt)10.### 4.2 滑动窗口只保留最近 N 轮对话配合摘要保留更早的关键信息。这是信息完整度与Token 成本之间的经典权衡。### 4.3 相关性过滤在把检索结果、工具返回塞进上下文之前先做一轮相关性过滤。无关信息占比超过30%时模型的指令遵循能力会显著下降。精准投喂比海量堆砌更重要。## 五、实战构建一个可观测的上下文管理器下面是一个轻量级的上下文管理器实现它把采集—筛选—压缩—组装四个阶段显式化 pythonfromdataclassesimportdataclass,fielddataclassclassContextManager:system_prompt:strshort_term:listfield(default_factorylist)# 短期对话历史long_term:dictfield(default_factorydict)# 长期记忆max_short_term_tokens:int4000max_total_tokens:int16000defadd_message(self,role:str,content:str):self.short_term.append({role:role,content:content})self._trim_short_term()def_trim_short_term(self):# 超过阈值时把最旧的对话压缩成摘要whileself._estimate_tokens(self.short_term)self.max_short_term_tokens:oldestself.short_term.pop(0)self.long_term[summary]self._summarize(oldest)def_summarize(self,messages)-str:# 调用 LLM 生成摘要省略实现return...def_estimate_tokens(self,messages)-int:# 粗略估算中文约 1.5 token/字returnsum(len(m[content])*1.5forminmessages)defbuild_context(self,user_input:str,retrieved:list[str])-str:parts[self.system_prompt]ifself.long_term.get(summary):parts.append(f[历史摘要]\n{self.long_term[summary]})ifretrieved:parts.append(f[检索资料]\n\n.join(retrieved))parts.append([对话历史])parts.extend(f{m[role]}:{m[content]}forminself.short_term)parts.append(f[当前问题]\n{user_input})return\n\n.join(parts) 这个管理器把上下文生命周期显式化了短期历史自动裁剪、长期记忆持续沉淀、检索结果按需注入、系统指令始终置顶。生产环境里你还可以在此基础上加上 Token 预算监控、上下文版本号、A/B 测试等能力。## 六、工程落地的几个关键建议**第一把上下文当代码管理。**上下文组装逻辑要模块化、可配置、可观测而不是散落在业务代码里的字符串拼接。硬编码在 Prompt 中的业务逻辑无法版本控制、无法单元测试、无法 A/B 测试。**第二建立信噪比意识。**不要因为窗口大就什么都塞。无关信息会稀释关键指令的效果精准投喂比海量堆砌更重要。**第三监控关键指标。**记录每次调用的上下文 Token 数、关键信息位置、模型输出质量。当输出质量下降时能快速定位是上下文组装问题还是模型问题。**第四为丢失设计兜底。**长上下文场景下模型可能遗漏中间位置的关键信息。把最重要的约束放在开头和结尾把可选的补充材料放在中间是成本最低的优化手段。## 七、总结上下文工程是2026年 AI Agent 工程化绕不开的核心能力。它把上下文从模糊的文本变成可拆分、可度量、可优化的系统组件。掌握采集、筛选、压缩、组装四个阶段的方法论再配合可观测的工程实践你就能在有限 Token 预算下让模型始终获得最有价值的信息。这比单纯追求更大的上下文窗口更能决定你的 Agent 在生产环境中的真实表现。**Markdown编辑器**所展示的欢迎页。如果你想学习如何使用Markdown编辑器,可以仔细阅读这篇文章了解一下Markdown的基本语法知识。## 新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持除了标准的Markdown编辑器功能我们增加了如下几点新功能帮助你用它写博客1.**全新的界面设计**将会带来全新的写作体验2.在创作中心设置你喜爱的代码高亮样式Markdown**将代码片显示选择的高亮样式**进行展示3.增加了**图片拖拽**功能你可以将本地的图片直接拖拽到编辑区域直接展示4.全新的**KaTeX数学公式**语法5.增加了支持**甘特图的mermaid语法[^1]**功能6.增加了**多屏幕编辑**Markdown文章功能7.增加了**焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置**等功能功能按钮位于编辑区域与预览区域中间8.增加了**检查列表**功能。[^1]:[mermaid语法说明](https://mermaid.js.org/intro/)## 功能快捷键撤销kbdCtrl/Command/kbdkbdZ/kbd重做kbdCtrl/Command/kbdkbdY/kbd加粗kbdCtrl/Command/kbdkbdB/kbd斜体kbdCtrl/Command/kbdkbdI/kbd标题kbdCtrl/Command/kbdkbdShift/kbdkbdH/kbd无序列表kbdCtrl/Command/kbdkbdShift/kbdkbdU/kbd有序列表kbdCtrl/Command/kbdkbdShift/kbdkbdO/kbd检查列表kbdCtrl/Command/kbdkbdShift/kbdkbdC/kbd插入代码kbdCtrl/Command/kbdkbdShift/kbdkbdK/kbd插入链接kbdCtrl/Command/kbdkbdShift/kbdkbdL/kbd插入图片kbdCtrl/Command/kbdkbdShift/kbdkbdG/kbd查找kbdCtrl/Command/kbdkbdF/kbd替换kbdCtrl/Command/kbdkbdG/kbd## 合理的创建标题有助于目录的生成直接输入1次kbd#/kbd并按下kbdspace/kbd后将生成1级标题。输入2次kbd#/kbd并按下kbdspace/kbd后将生成2级标题。以此类推我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。## 如何改变文本的样式*强调文本*_强调文本_**加粗文本**__加粗文本__标记文本~~删除文本~~引用文本 H~2~Ois是液体。2^10^运算结果是1024.## 插入链接与图片链接:[link](https://www.csdn.net/).图片:![Alt](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9hdmF0YXIuY3Nkbi5uZXQvNy83L0IvMV9yYWxmX2h4MTYzY29tLmpwZw)带尺寸的图片:![Alt](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9hdmF0YXIuY3Nkbi5uZXQvNy83L0IvMV9yYWxmX2h4MTYzY29tLmpwZw30x30)居中的图片:![Alt](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9hdmF0YXIuY3Nkbi5uZXQvNy83L0IvMV9yYWxmX2h4MTYzY29tLmpwZw#pic_center)居中并且带尺寸的图片:![Alt](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9hdmF0YXIuY3Nkbi5uZXQvNy83L0IvMV9yYWxmX2h4MTYzY29tLmpwZw#pic_center 30x30)当然我们为了让用户更加便捷我们增加了图片拖拽功能。## 如何插入一段漂亮的代码片去[博客设置](https://mp.csdn.net/console/configBlog)页面选择一款你喜欢的代码片高亮样式下面展示同样高亮的 代码片.javascript//An highlighted block var foobar;生成一个适合你的列表项目项目项目项目1项目2项目3计划任务完成任务创建一个表格一个简单的表格是这么创建的项目Value电脑$1600手机$12导管$1设定内容居中、居左、居右使用:---------:居中使用:----------居左使用----------:居右第一列第二列第三列第一列文本居中第二列文本居右第三列文本居左SmartyPantsSmartyPants 是一个文本转换工具主要功能是将普通的 ASCII 标点符号自动转换为更美观的印刷体标点符号。例如原始符号转换后说明引号“引号”直引号变弯引号单引号‘单引号’直单引号变弯单引号--–两个连字符变短破折号---—三个连字符变长破折号...…三个点变省略号创建一个自定义列表MarkdownText-to-HTMLconversion toolAuthorsJohnLuke如何创建一个注脚一个具有注脚的文本。1注释也是必不可少的Markdown将文本转换为HTML。KaTeX数学公式您可以使用渲染LaTeX数学表达式 KaTeX:Gamma公式展示Γ ( n ) ( n − 1 ) ! ∀ n ∈ N \Gamma(n) (n-1)!\quad\forall n\in\mathbb NΓ(n)(n−1)!∀n∈N是通过欧拉积分Γ ( z ) ∫ 0 ∞ t z − 1 e − t d t . \Gamma(z) \int_0^\infty t^{z-1}e^{-t}dt\,.Γ(z)∫0∞​tz−1e−tdt.你可以找到更多关于的信息LaTeX数学表达式here.新的甘特图功能丰富你的文章2014-01-072014-01-092014-01-112014-01-132014-01-152014-01-172014-01-192014-01-21已完成进行中计划一计划二现有任务Adding GANTT diagram functionality to mermaid关于甘特图语法参考 这儿,UML图表可以使用UML图表进行渲染例如下面产生的一个序列图王五李四张三王五李四张三李四想了很长时间, 文字太长了不适合放在一行.你好李四, 最近怎么样?你最近怎么样王五我很好谢谢!我很好谢谢!打量着王五...很好... 王五, 你怎么样?关于UML图表语法参考 这儿,流程图链接长方形圆圆角长方形菱形关于Mermaid语法参考 这儿,FLowchart流程图我们依旧会支持flowchart.js的流程图语法Created with Raphaël 2.3.0开始我的操作确认结束yesno关于Flowchart流程图语法参考 这儿.导出与导入导出如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到文章导出生成一个.md文件或者.html文件进行本地保存。导入如果你想加载一篇你写过的.md文件在上方工具栏可以选择导入功能进行对应扩展名的文件导入继续你的创作。注脚的解释 ↩︎
返回列表