上下文工程是什么?过时了么?一文讲明白!

在 AI 圈,技术名词的迭代速度快到让人怀疑人生。

从早期入行必学的 Prompt Engineering,到之前流行的 Context Engineering,再到近期爆火的 Harness Engineering,名词一个比一个高大上,门槛也似乎越堆越高。

不少刚入门的小伙伴都在问:是不是新名词一出来,旧的就完全不用学了?毕竟大家都在调侃:“只要我学的足够慢,很多知识都不用学了(手动狗头)”。

答案是否定的。

这三个概念不是替代关系,而是从单点指令优化,到全链路信息管控,再到全系统工程化治理的层层递进

  • Prompt Engineering 解决「指令怎么写,模型才听得懂、做得对」,是聚焦单条指令的入门基本功,也是所有大模型应用的起点;
  • Context Engineering 是 Prompt 的升维,解决「给模型喂什么信息,才能低成本、高质量地完成复杂任务」,核心是管控模型的所有输入信息;
  • Harness Engineering 是上层生产级工程体系,解决「怎么让大模型在生产环境可控、可扩展、可落地」,包括输入输出的整套体系,而 Context Engineering 也是这套体系的核心地基。

之前我已经拆解过 Prompt Engineering的核心逻辑,今天我们就循序渐进,把承上启下的Context Engineering彻底讲透。

1. 什么是上下文工程?

许多开发者对大模型API的认知,仍停留在单次问答交互的层面。

基于这种认知,他们往往将主要精力投入到系统提示词的优化上,希望通过完善模型的角色设定、拆解任务步骤等方式,解决所有应用中的问题。

但在真实的业务应用场景中,每次调用大模型 API 时,发送的并非单一指令,而是一个完整的信息集合,这个信息集合就是 Context(上下文)。其核心组成部分包括:

  • 系统提示词(System Prompt):定义模型的角色、目标、规则、输出边界等;
  • 用户当前指令(User Prompt):用户本次的具体需求与输入;
  • 会话历史记录(Chat History):多轮对话场景中,用户此前的所有输入内容与模型对应的输出内容;
  • 参考资料(Knowledge):从知识库或外部搜索中检索出来的相关资料片段。
  • 工具调用(Tool):工具的定义声明 Schema、工具调用的请求与返回结果。

Prompt Engineering 只管了系统提示词那一小块,Context Engineering 要管的是整个输入数据。

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

可能有人会问:我把所有相关信息都直接塞给模型不行吗?

理想状态下当然可以,如果模型有无限长的有效上下文、零成本的推理能力、100% 的信息召回率,那完全不用搞什么上下文管理,有啥塞啥就行。

但在实际生产环境中,这三个理想条件均无法实现。上下文工程的核心价值,就是解决生产场景中与上下文相关的各类痛点:

(1)上下文窗口有限

虽然现在大模型的上下文窗口越做越大,从 4K 到 128K,再到 1M 甚至更长,但无论容量多大,其上限始终是明确且有限的。

在实际应用中,当对话持续几十轮、RAG 检索返回十几篇文档、工具调用输出大量日志信息时,很容易出现 API 调用报错:“请求超出最大上下文长度”。

面对这种情况,系统不可能强制要求用户清空历史,重新开始对话,必须有工程手段来介入处理,否则会严重影响使用体验。

(2)上下文并不是越多越好

很多开发者都曾陷入一个误区:认为将所有相关信息都传入模型,就能提升模型的输出效果。

但大模型与数据库不同,其注意力机制存在先天局限:**上下文长度越长,模型的注意力越容易分散。**尤其是大模型对开头和结尾的信息最敏感,中间的内容很容易被忽略。

因此如果我们将大量信息直接传入模型,它并不一定能好好利用,反而可能无法抓住重点内容,导致最终效果更差!

(3)上下文就是钱

大模型 API 的计费方式与 token 数量直接相关,每一个 token 都对应实际成本,多余的信息会烧更多钱,包括显性成本和隐性成本:

  • 显性成本:1000 token 和 10000 token 的请求,价格差 10 倍,而后者的输出效果甚至可能不如前者。
  • 隐性成本:
  • 推理延迟增加:长上下文的自注意力计算需要更多时间,导致用户等待时间延长。
  • 并发能力下降:单个请求占用更多计算资源,系统可处理的并发请求数量减少。
  • 调试难度提升:长上下文导致模型的推理逻辑更难追踪,问题排查复杂度呈指数级增长。

上下文工程的核心逻辑是:在大模型的有限上下文窗口内,用最少的 token,传递最有效的信息,实现效果与成本的最优平衡。

3. 上下文工程的常见手段

上下文优化的常见手段主要有三种:挑选压缩隔离。核心目标是能够高效地利用上下文。

🚗手段一:挑选

核心逻辑:只给模型输入与当前任务强相关的信息,从源头减少冗余。

最典型的挑选手段就是大家熟悉的 RAG:不用把整个知识库全塞给模型,而是先检索出和当前任务最相关的片段,再传给模型。

但很多开发者对 RAG 的理解太窄了,实际上,除了知识库检索外,RAG 的思路可应用于很多场景:

  • 工具挑选:不将所有工具定义都输入给大模型,而是采用 RAG 思路挑选与当前任务可能相关的工具。
  • 历史消息挑选:不将全部会话历史都输入大模型,而是采用 RAG 思路挑选与当前任务可能相关的内容。
  • 技能挑选:典型的就是 SKill 的渐进式加载,不一开始传入所有技能的全部信息,而是先只给模型输入所有技能名称和描述,让模型判断是否需要加载具体技能的信息。
  • 简单裁剪:对于时间过久的历史消息,可直接删除。

🚗手段二:压缩

核心逻辑:在不丢失核心语义的前提下,缩短信息长度,降低 token 消耗。

常见的压缩方式如下:

  • 对话历史总结:多轮对话中,每隔一定轮数或者当上下文达到一定阈值时,调用大模型,将此前的对话进行总结,仅保留核心信息。
  • 工具结果压缩:工具调用返回的结果常含冗余信息,可先用轻量模型进行总结,或提取关键数据(如日志中的错误信息、堆栈信息),再将核心信息输入给主模型。

🚗手段三:隔离

核心逻辑:将复杂任务分解为子任务,为每个子任务分配独立的上下文空间,避免不同任务信息相互干扰。

隔离最典型的落地方式,就是现在常说的多智能体(Multi-Agent)架构,有以下优势:

  • 专属任务分工:每个智能体仅负责一类任务(如代码生成、文档处理),仅加载当前任务所需的上下文;
  • 资源按需分配:简单任务使用轻量模型,复杂任务使用高性能模型,从而降低整体计算成本;
  • 状态独立管理:每个智能体仅维护自身的任务状态,不会有跨任务的状态污染。

🚗三个手段配合使用

这三个手段可以组合使用,比如:可先通过 RAG 检索筛选出与当前任务相关的信息(挑选),再对检索到的长文本资料进行总结压缩(压缩),最后将不同类型的子任务分配给不同的 Agent 处理,实现上下文隔离(隔离)。

当然也要注意,每一种优化都有对应的开发和维护成本,不用盲目把所有手段都堆上去,结合自己的业务场景选最合适的组合,找到效果和成本的平衡点就好。

4. 总结

最后,简单梳理下核心要点,带大家快速掌握 Context Engineering 的核心逻辑:

  1. 上下文定义:调用大模型 API 时传递的全部信息集合,包括系统提示词、用户当前指令、会话历史、参考资料及工具调用相关内容;
  2. 解决的痛点:主要解决生产场景中三大问题:上下文窗口有限导致的 API 报错、上下文过长引发的模型性能下降、冗余信息带来的成本浪费;
  3. 落地的手段:主要包括挑选、压缩、隔离三种手段,可单独使用也可组合运用,核心是在有限窗口内用最少 token 传递最有效信息。

想系统学习 AI 工程,欢迎关注,全网同名,持续输出干货内容!

#Agent##LLM##大模型##AI#
AI技术合集 文章被收录于专栏

专注于AI工程化实战分享

全部评论

相关推荐

说一说之前很火的提示词吧,但是随着AI能力的提升,提示词越来越不重要了。对初级需求,提示词确实越来越 “轻量化”,随便一句 “用 Java 写个简单的用户登录接口”,AI 就能给出能用的代码;但对复杂场景、高要求的 AI Coding 任务,提示词非但没失效,反而升级成了 “精准指令工程”,是拉开效率差距的关键。可一旦碰到复杂业务逻辑、性能优化、架构设计这类硬核需求,就会发现 “会写提示词” 和 “不会写提示词” 的天壤之别。比如同样是让 AI 优化 MySQL 慢查询,普通提示词是 “帮我优化这段 SQL”,AI 可能只会给出加索引的建议;但精准的指令是 “我有一个电商订单查询 SQL,数据量 100 万 +,现在执行时间 2 秒,要求优化到 500ms 内,限制只能调整索引和 SQL 结构,不能改表结构,还要考虑分库分表的兼容性”—— 这种带约束条件、业务背景、性能指标的提示词,才能让 AI 输出真正落地的方案。更重要的是,AI Coding 的核心需求正在从 “生成代码” 转向 “解决问题”。比如你让 AI 排查一个 Spring Boot 接口的超时问题,只说 “接口超时了,帮我看看”,AI 大概率会罗列一堆通用原因;但如果你在提示词里加上 “接口调用了第三方支付 API,超时发生在高峰期,日志显示有大量数据库锁等待”,AI 就能直接定位到 “第三方 API 熔断机制缺失”“数据库事务过长” 等具体问题,甚至给出代码级的解决方案。还有一个容易被忽略的点:提示词是帮你 “驯服 AI 幻觉” 的关键。AI Coding 最头疼的就是生成 “看起来对但实际跑不通” 的代码,比如引用不存在的类、用错框架 API。这时候,在提示词里加上 “代码必须符合 Spring Boot 2.7 版本规范,禁止使用废弃 API,给出完整的依赖配置和测试用例”,就能大幅降低幻觉概率 —— 这种 “精准约束”,本质就是高级提示词技巧。说到底,AI 能力提升后,提示词的 “复杂度” 降低了,但 “精准度” 要求更高了 。它不再需要华丽的模板,却需要你把业务需求、技术约束、性能指标讲清楚。对初级开发者来说,随便写写就能用;但对想靠 AI 提升核心工作效率的工程师,“写好提示词” 依然是 AI Coding 的核心实战技巧。
AI Coding实战技...
点赞 评论 收藏
分享
给大家来点不一样的东西🤗1h20min,纯后端简历,我以为投成产品岗了。不过面试官水平很高,收获很大。Q1: 自我介绍。Q2: 你对PE这个岗位理解是什么?Q3: 产品工程师和传统的后端开发岗位区别?Q4: 你对AI技术的看法是什么?在工作和生活中如何更好与AI共存和使用它?Q5: 具体展开讲什么场景下会用到Agent协作?Q6: 使用Agent协作的底层原因?Q7: 你平时在开发中主要会使用哪些AI?Q8: Cursor和Claude Code在设计和使用上差异?Q9: 使用Cursor时会怎样进行编程交互?Q10: 缓存击穿问题?业界通常有哪些解决方案?Q11: 发现缓存过期后是每次都拉起一条新线程去更新,还是有其他的控制逻辑?Q12: 如果出现高并发导致10个请求同时发现缓存逻辑过期,系统会拉起10条更新线程吗?Q13: 缓存雪崩问题?如何解决或防范?Q14: 项目利用MQ做了数据补偿,除了MQ来实现最终一致性,还有哪些手段可以实现一致性?Q15: 详细介绍一下你开发的AI视频解析平台的核心功能和现实业务痛点。Q16: 你觉得他有哪些产出和现实的收获?Q17: 项目中用户的鉴权以及Session会话管理具体是怎么做的?Q18: 项目里用户与会话的数据实体关联关系是怎样的?一个用户是对应单个会话还是多个会话?Q19: 简单介绍一下你的另一个项目。Q20: 如果要重构智能生活服务平台,从产品视角出发,你会如何设计让其更加AI Native化?Q21: 结合现有的GUI工具交互形式,讲讲设计小红书实现的思路?再讲讲有哪些可以与AI深度结合,并移植到平台中提升用户体验的思路?Q22: 场景题:如果线上突然有大量用户反馈在小红书收藏的笔记找不到了,你会如何排查、响应和处理?Q23: 代码审查题:阅读给出的JS权限拦截代码,分析其实现的业务功能,指出代码在类型判断和异常控制流上存在的致命缺陷,并给出具体的重构方案。Q24:算法:求二叉树加和为 n 的路径从任意节点(给定的节点)开始,到任意节点终止,找到全部加和为 n 的路径集合。Q25:如果合法路径的起点和终点分别在某棵子树的左右两边即路径跨越了左右子树,单向的DFS无法处理时该如何解决?Q26: 反问。这个岗感觉是在招懂AI会开发的产品经理人才。反问中能看出面试官水平很高。
查看25道真题和解析
点赞 评论 收藏
分享
评论
2
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务