使用 AI 时,很多人都会关注提示词。

为了得到更好的回答,我们会尝试补充角色、明确任务、限制字数,或者要求 AI 按照固定格式输出。

但真正使用一段时间后,很多人会发现:

同一段提示词,有时效果很好,有时却不够稳定。

这不一定是提示词写得不好,也可能是模型在回答问题时,没有获得足够、准确且相关的上下文。

例如,让 AI 修改一个项目中的代码,只告诉它报错信息通常不够。它可能还需要了解:

  • 项目使用的编程语言和框架
  • 依赖版本
  • 相关代码文件
  • 运行环境
  • 最近做过哪些修改
  • 预期结果是什么
  • 项目有哪些开发规范

这些信息共同构成了模型完成任务所需的上下文。

最近,AI 开发领域开始频繁讨论一个概念:

Context Engineering,也就是上下文工程。

如果说提示词工程关注的是“如何向 AI 提问”,那么上下文工程关注的就是:

在模型开始回答之前,如何为它准备完成任务真正需要的信息。

本文将从基础概念出发,介绍上下文工程是什么,它和提示词、RAG、Memory、MCP 有什么区别,以及普通用户和开发者可以如何使用这种方法提升 AI 输出质量。


一、什么是上下文?

上下文可以理解为大模型在处理当前任务时能够看到的全部信息。

它不只是用户刚刚输入的那句话,还可能包括:

系统提示词
用户当前问题
历史对话
上传的文档
检索到的知识
工具返回的数据
代码和错误日志
用户偏好
输出格式要求
安全和权限规则

例如,当用户只输入:

帮我修改一下。

模型几乎无法判断用户到底想修改什么。

但如果上下文中已经包含一篇文章,以及用户之前提出的写作要求,模型就可能理解这是要修改文章。

所以,大模型的回答并不只取决于当前问题,也取决于它在当前上下文中获得了哪些信息。

可以把模型生成过程简化为:

模型能力 + 当前上下文 + 生成参数 = 最终回答

模型能力很重要,但如果上下文不完整、不准确或过于混乱,即使使用能力更强的模型,也可能得到不理想的结果。


二、什么是上下文工程?

上下文工程是围绕具体任务,设计、收集、筛选、组织和更新模型上下文的过程。

它通常要解决以下问题:

  • 模型完成任务需要哪些信息?
  • 这些信息应该从哪里获取?
  • 哪些信息与当前任务真正相关?
  • 信息应该按照什么顺序组织?
  • 哪些内容需要长期保存?
  • 哪些历史内容应该删除或压缩?
  • 如何避免把错误、过期的信息提供给模型?
  • 如何在上下文长度和调用成本之间取得平衡?

一个简单的上下文工程流程可以表示为:

理解用户任务
  ↓
识别所需信息
  ↓
从对话、文档或工具中获取信息
  ↓
筛选和压缩内容
  ↓
按照清晰结构组成上下文
  ↓
调用模型生成结果
  ↓
检查结果并更新上下文

因此,上下文工程不是简单地把更多资料塞给 AI。

它真正关注的是:

如何在正确的时间,把正确的信息,以正确的结构提供给模型。


三、上下文工程和提示词工程有什么区别?

提示词工程和上下文工程关系密切,但两者关注的范围不同。

提示词工程关注“怎么说”

例如:

请分析下面的代码错误,并按照“原因、排查步骤、修复方案、验证方法”的结构回答。

这里主要是在设计任务指令和输出要求。

上下文工程关注“给模型看什么”

为了完成上面的代码分析任务,还需要准备:

错误日志
相关代码
依赖版本
运行环境
最近改动
预期行为
项目约束

如果只优化提示词,却没有提供这些信息,模型仍然只能根据有限线索进行猜测。

可以用一句话概括二者的区别:

提示词工程:告诉模型要做什么
上下文工程:为模型准备完成任务所需的信息

在简单任务中,一段清楚的提示词可能已经足够。

但在编程、知识库问答、数据分析和 AI Agent 等复杂场景中,决定结果质量的往往是完整的上下文设计。


四、上下文并不是越长越好

很多人发现 AI 缺少信息后,第一反应是把所有资料都提供给模型。

这种做法并不一定有效。

上下文太少,模型无法理解任务;上下文太多,同样会带来问题。

1. 重要信息被稀释

如果上下文中包含大量无关资料,模型可能无法抓住真正重要的内容。

例如,要分析一个登录接口错误,却把整个项目的所有文件都交给模型,配置文件、前端样式和其他业务模块可能会干扰判断。

2. 新旧信息发生冲突

在多轮对话中,用户可能先提出一种要求,后面又修改了要求。

如果旧要求仍然保留在上下文里,模型可能不知道应该遵循哪一个版本。

3. Token 消耗增加

输入模型的内容通常会占用 Token。

上下文越长,调用成本和处理时间通常也会增加。

4. 响应速度变慢

模型需要处理更多内容,首字响应和完整回答的时间可能变长。

5. 更容易达到上下文上限

每个模型都有上下文窗口限制。如果输入、历史对话和预期输出总长度超过限制,请求可能被截断或直接失败。

所以,上下文工程的目标不是“信息最多”,而是:

信息足够、相关、准确,并且能够被模型有效利用。


五、一个好的上下文通常包含什么?

不同任务需要的上下文并不相同,但通常可以分成几个部分。

1. 角色和规则

告诉模型应该遵守什么原则。

你是一个代码审查助手。
不要直接修改代码,先列出风险和修改建议。
如果信息不足,请明确指出缺少什么。

2. 当前任务

清楚说明本次要完成的工作。

请分析登录接口偶发返回 500 的原因,并给出排查顺序。

3. 必要背景

提供模型理解问题所需的环境信息。

运行环境:Node.js 20
框架:Express 5
数据库:PostgreSQL 16
部署方式:Docker

4. 任务材料

提供与问题直接相关的代码、文档、日志或数据。

错误日志
接口代码
数据库连接配置
容器日志
最近提交记录

5. 输出要求

明确结果应该如何组织。

请按照以下结构回答:
1. 最可能的原因
2. 依据
3. 排查步骤
4. 最小修复方案
5. 验证方法

6. 边界条件

告诉模型哪些事情不能做。

不要假设未提供的配置。
不要编造日志中不存在的信息。
将结论分成“已确认”和“需要验证”两类。

当这些信息被清晰组织后,模型更容易理解任务,也更容易输出可执行的结果。


六、上下文工程和 RAG 有什么关系?

RAG 的全称是 Retrieval-Augmented Generation,也就是检索增强生成。

它的基本流程是:

用户提问
  ↓
从知识库检索资料
  ↓
把相关资料放入上下文
  ↓
让模型根据资料回答

从上下文工程的角度看,RAG 是一种动态获取上下文的方法。

当用户提出问题时,系统不需要把整个知识库交给模型,而是只检索当前问题相关的内容。

例如,用户问:

如何申请发票?

系统可以从产品帮助文档中检索发票申请流程,再把相关片段提供给模型。

但 RAG 并不等于完整的上下文工程。

除了知识库内容,模型可能还需要:

  • 当前用户的权限
  • 所属地区
  • 订单状态
  • 历史对话
  • 当前产品版本
  • 回答格式和安全规则

因此,可以这样理解:

RAG:负责从知识库找到相关资料
上下文工程:负责组织模型完成任务所需的全部信息

RAG 是上下文工程的一种重要工具,但不是全部。


七、上下文工程和 Memory 有什么关系?

Memory 通常被翻译为“记忆”。

在 AI 应用中,记忆主要用于保存当前对话之外仍然有价值的信息。

例如:

用户偏好的编程语言
常用输出格式
项目技术栈
历史任务结果
长期写作风格
团队业务规则

Memory 可以分为两类。

短期记忆

主要保存当前会话中的信息,比如最近几轮对话、当前任务进度和工具调用结果。

长期记忆

主要保存跨会话仍然需要复用的信息,比如用户偏好、项目背景和长期目标。

从上下文工程角度看,记忆的关键不是“保存得越多越好”,而是:

  • 什么信息值得保存?
  • 保存多长时间?
  • 什么时候取出来?
  • 如何判断信息是否已经过期?
  • 用户能否查看和删除?
  • 是否包含敏感数据?

如果系统把所有历史对话都当成记忆,模型可能被过期内容干扰,也可能增加隐私风险。

所以 Memory 负责保存信息,上下文工程负责判断当前任务是否需要使用这些信息。


八、上下文工程和 MCP 有什么关系?

MCP,也就是 Model Context Protocol,主要用于连接外部工具和数据。

通过 MCP,AI 应用可以在授权范围内访问:

  • 本地文件
  • 数据库
  • 代码仓库
  • 项目管理系统
  • 搜索工具
  • 企业业务接口

从上下文工程角度看,MCP 是一种获取外部上下文和执行工具调用的方式

例如,开发者让 AI 分析一个代码项目时,系统可以通过 MCP:

读取项目目录
获取相关代码
查询 Git 提交记录
读取测试日志
运行检查工具

这些结果经过筛选后,再组成模型当前任务的上下文。

两者的关系可以概括为:

MCP:负责连接外部工具和数据
上下文工程:决定何时获取、获取什么以及如何使用

MCP 能让 AI 获得更多信息,但如果没有做好上下文筛选,仍然可能把大量无关数据交给模型。


九、普通用户如何使用上下文工程思维?

上下文工程听起来像一个开发概念,但普通用户同样可以使用。

一个简单的方法是,在提问时提供五类信息:

目标 + 背景 + 材料 + 限制 + 输出格式

例如,一个不够完整的提问是:

帮我写一篇文章。

使用上下文工程思维后,可以改成:

目标:
写一篇介绍 AI 推理模型的科普文章。

读者:
没有技术背景的普通用户。

发布平台:
CSDN 和微信公众号。

内容要求:
解释推理模型和普通模型的区别,并提供使用建议。

表达限制:
避免夸张宣传,不使用未经验证的数据。

输出格式:
包含标题、开头、分节正文、总结和 150 字摘要。

这种方式并不是让提示词变得越长越好,而是补充完成任务真正需要的信息。


十、写文章时如何使用上下文工程?

AI 写作是非常典型的上下文工程场景。

如果只提供一个标题,模型容易生成内容正确但缺少特点的文章。

更完整的写作上下文可以包含:

选题信息

文章主题
目标读者
发布渠道
写作目的

内容材料

官方资料
个人经验
测试数据
参考案例
需要引用的观点

写作要求

语言风格
文章长度
章节结构
专业程度
需要避免的表达

审核要求

不编造发布时间
不虚构官方结论
数据注明来源
广告内容和正文区分

文章生成后,还可以进行一次上下文检查:

请检查文章中的每个事实性结论,
将内容分为:
1. 已有资料支持
2. 作者经验判断
3. 仍然需要核实

这样可以降低 AI 生成文章时出现错误信息的风险。


十一、开发者如何设计上下文?

在 AI 应用中,可以把上下文分成几个明确的区域。

系统规则
  ↓
用户与任务信息
  ↓
历史对话摘要
  ↓
知识库检索结果
  ↓
工具调用结果
  ↓
当前用户问题
  ↓
输出格式约束

建议不同来源的信息使用清楚的边界。

例如:

【系统规则】
只根据提供的资料回答,不要编造。

【用户信息】
用户角色:普通成员
所属地区:中国大陆

【检索资料】
来源:产品帮助文档
更新时间:2026-02-10
内容:……

【工具结果】
订单状态:已完成
发票状态:未申请

【用户问题】
这个订单现在能申请发票吗?

这种结构可以帮助模型区分规则、资料、工具结果和用户输入。

同时,还应该给不同信息设置优先级:

系统安全规则
高于
业务规则
高于
工具返回结果
高于
知识库资料
高于
用户自然语言要求

这在 Agent 和自动化系统中尤其重要,否则外部文档中的恶意内容可能影响模型行为。


十二、如何管理长对话上下文?

随着对话轮数增加,历史上下文会越来越长。

如果每次请求都携带完整对话,可能导致成本和延迟不断增加。

常见处理方法包括:

1. 只保留最近几轮

适合短期聊天和简单问答。

保留系统规则
保留最近 5 到 10 轮对话
删除过早且无关的内容

2. 对历史对话进行摘要

当会话变长时,把早期内容压缩成结构化摘要。

当前目标
已经确认的信息
已经完成的步骤
尚未解决的问题
用户新增的约束

后续只携带摘要和最近对话。

3. 按主题保存

如果一个会话中讨论了多个主题,可以分别保存,当前任务只加载相关主题。

4. 按需检索历史记录

不把全部历史内容放入上下文,而是在需要时检索相关对话。

无论采用哪种方式,都要避免摘要改变原意。涉及关键数字、路径、代码和业务规则时,最好保留原始内容或引用位置。


十三、不同模型需要不同的上下文吗?

需要。

不同模型在上下文长度、指令遵循、工具调用和复杂推理方面可能存在差异。

同一套上下文直接交给不同模型,结果未必一致。

例如:

  • 轻量模型更适合短而明确的上下文
  • 均衡模型可以处理常规文档和多轮任务
  • 推理模型更适合复杂约束和多步骤分析
  • 长上下文模型适合处理大型文档或代码库
  • 支持工具调用的模型更适合 Agent 场景

开发者应该使用真实任务进行测试,而不是只根据模型参数判断。

如果需要在多个客户端或开发工具中比较模型,可以使用兼容 OpenAI 接口格式的统一接入方式。例如 https://transitai.chat/ 这类模型中转服务,可作为集中配置 API Key、Base URL 和模型名称的一种参考。

测试时,应尽量保持以下条件一致:

相同任务
相同上下文
相同输出要求
相近生成参数
相同评估标准

然后比较不同模型的:

  • 任务完成率
  • 事实准确性
  • 指令遵循能力
  • 响应时间
  • Token 消耗
  • 结构化输出稳定性
  • 单任务调用成本

具体支持哪些模型、接口参数和工具调用能力,应以接入平台的实际文档为准。


十四、上下文工程需要注意哪些安全问题?

上下文中可能包含用户数据、业务资料和外部工具结果,因此安全问题不能忽略。

1. 不要提交不必要的敏感信息

如果任务不需要,就不要把以下内容放入上下文:

  • 密码
  • API Key
  • 私钥
  • 客户身份信息
  • 完整合同
  • 生产数据库数据
  • 公司核心源代码

2. 区分可信和不可信内容

网页、邮件、用户上传文档和工具返回内容都可能包含恶意指令。

系统应该明确标记:

系统指令
可信业务数据
用户输入
外部不可信内容

不能让外部文档覆盖系统安全规则。

3. 控制工具权限

如果 AI 可以读取文件或调用业务接口,应遵循最小权限原则。

只开放任务需要的目录、数据表和操作。

4. 设置上下文生命周期

敏感上下文不应该无限期保存。

系统需要明确:

  • 数据保存多久
  • 是否写入日志
  • 用户能否删除
  • 是否用于训练
  • 第三方服务如何处理数据

使用官方接口或 transitai.chat 等第三方统一接入服务时,都应该先了解相应的数据处理规则,再决定可以提交哪些内容。


十五、关于上下文工程的几个常见误区

误区一:上下文越长,回答越准确

不一定。过多无关信息会稀释重点,也会增加成本。

误区二:模型上下文窗口大,就能理解所有内容

上下文能放进去,不等于模型能准确使用其中每一处信息。

误区三:使用 RAG 就等于做好了上下文工程

RAG 只解决知识检索的一部分问题,还需要处理用户信息、历史对话、工具结果和系统规则。

误区四:把全部历史对话发给模型最保险

过期或冲突的历史信息可能干扰当前任务。

误区五:换成更强模型就不需要管理上下文

模型再强,也无法可靠理解没有提供的信息。

误区六:上下文只影响回答质量

上下文还会影响响应速度、Token 消耗、调用费用和数据安全。


十六、一个可以直接使用的上下文模板

普通用户可以使用下面这个模板组织复杂任务:

【任务目标】
我希望 AI 最终完成什么?

【使用场景】
结果会用在哪里,面向什么人?

【必要背景】
完成任务前必须知道哪些信息?

【参考材料】
需要依据哪些文档、代码或数据?

【已知限制】
有哪些不能改变的条件?

【输出格式】
最终结果应该如何组织?

【判断标准】
什么样的结果才算完成?

【不确定信息】
遇到资料不足时,请明确指出,不要编造。

开发者可以进一步增加:

【工具权限】
允许调用哪些工具?

【数据来源】
哪些内容可信,哪些需要核验?

【失败处理】
工具调用失败时应该如何处理?

【安全规则】
哪些操作需要人工确认?

【上下文预算】
最多允许使用多少 Token?

这个模板不需要每次全部填写,但任务越复杂,越有必要把关键信息补充完整。


十七、写在最后

提示词仍然重要,但只研究提示词已经无法覆盖复杂 AI 应用中的所有问题。

当 AI 开始进入代码开发、知识库问答、资料分析、MCP 工具调用和 Agent 工作流后,决定结果质量的往往不只是“问题怎么问”,还有:

  • 模型看到了哪些信息
  • 信息是否准确和相关
  • 历史内容是否已经过期
  • 工具结果是否可信
  • 不同内容如何排列
  • 上下文是否超过必要范围
  • 敏感数据是否受到保护

可以把上下文工程概括成一句话:

在模型回答之前,为它准备完成当前任务真正需要的信息。

对于普通用户来说,上下文工程意味着提问时补充目标、背景、材料、限制和输出格式。

对于开发者来说,它还意味着设计知识检索、记忆管理、工具连接、权限边界和上下文压缩策略。

如果需要在不同模型之间验证同一套上下文,可以通过 transitai.chat 这类兼容接口入口进行统一配置和对比测试,但最终仍应以模型的真实任务表现、接口文档和数据处理规则为准。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐