上下文工程,究竟在工程化什么?

Weaviate 用六块能力画出一张系统地图;真正的主线,是在每一步决定哪些信息进入模型、哪些状态留在外部、下一步由谁执行。

作者:Weaviate08-27 · 11 分钟
工具教程 · 小互解读
一分钟速览
  • 这本手册把上下文工程拆成 Agent、查询增强、检索与切块、提示、记忆和工具六个相互衔接的部分。
  • 上下文工程控制的是一次任务里的完整信息流:意图、证据、提示、状态、工具和反馈怎样进入或离开模型窗口。
  • 指南提供系统地图,没有提供效果实验;落地时要让六个环节各自留下可检查产物,并用真实任务集验证。

《The Context Engineering Guide》是 Weaviate 发布的一本面向 AI 应用开发者的上下文工程手册。它关注一个 AI 系统怎样在任务运行过程中,持续为模型准备正确的信息,并让多轮对话、外部知识、长期状态和工具执行保持连贯。

全书围绕六部分展开:Agent 负责调度整个信息流;查询增强把含糊的用户问题改造成可检索、可执行的意图;检索与切块从大量资料中选出当前所需证据;提示规定任务目标和操作边界;记忆保存跨轮状态;工具把模型的判断变成行动,再把执行结果送回下一轮。

六部分构成了一条完整运行链:理解请求、选择证据、装配上下文、保存状态、调用工具、根据结果继续或停止。手册的核心问题,是如何让模型在每一步只看到当前最有用的信息,同时把暂时不用的状态可靠地留在外部。

模型很强,系统仍可能拿不到正确上下文

真实 AI 产品的常见故障,很少只对应“提示写得不好”。模型可能没拿到公司内部资料,不知道刚发生的业务变化,记不住上一步已经确认的决定,或者在十几个相似工具中选错一个。继续加提示,最多修补当前调用,无法补齐数据、状态和行动接口。

Context Engineering 淡彩指南封面:文档、用户请求和历史进入上下文窗口,记忆、模型和工具共同生成有依据的回答
用户提供版本的封面与系统图。它把上下文工程的对象从一段提示扩展到文档、历史、记忆、模型和工具之间的信息流。

这里说的上下文工程,是对意图、证据、规则、状态和工具结果进行运行时选择与装配,让模型在当前一步拿到足够且相关的信息。

手册把长上下文的风险分成四类:错误内容被反复复用,形成污染;无关内容太多,造成分心;相似材料挤在一起,产生混乱;互相矛盾的规则同时存在,形成冲突。它们共同说明一个事实:上下文窗口是注意力预算,容量和质量必须分开管理。

因此,每轮运行都要做四个明确决策:哪些信息继续留在当前窗口,哪些状态转存到外部并按需取回,哪些历史可以压缩成摘要,以及要为计划和回答预留多少空间。只盯着“还能塞多少 token”,就会漏掉更关键的预算问题:模型还剩多少注意力来判断下一步。

一套完整系统会反复经过六个动作:先理解意图,再选择证据,把规则和当前状态装配进窗口,决定是否行动,把必要状态写到外部,最后用结果修正下一轮。Agent 是这条链路的调度者,查询增强、检索、提示、记忆和工具分别给它提供接口。

手册给 Agent 的具体任务也很清楚:定期压缩历史,验证检索结果是否一致可用,删除过期或无关上下文,第一次检索失败后改写查询、切换知识库或更换切块策略,把暂时不用的细节卸载到外部,只加载当前相关工具,并在多来源互相冲突时完成综合。Agent 不替代这些技术,它负责在运行时决定何时使用哪一种。

运行时上下文装配线
  1. 意图重写、扩展、分解
  2. 证据检索、切块、重排
  3. 装配提示、示例、输出预算
  4. 状态工作、情景、语义、程序
  5. 行动工具选择、参数、授权
  6. 反馈校验、继续、回退、停止
Observation 回到下一轮,旧信息被压缩、剪枝或外置
六块能力在目录里并列,在运行时形成依赖链;Agent 负责动态协调,不替代各层的证据和合同。

这张运行时轨道也给了一个排错顺序。回答跑偏,先查意图有没有被误解;事实不对,查检索到的证据;反复推翻旧决定,查状态有没有持久化;工具用错,查工具合同和选择逻辑。直接换模型往往跳过了最便宜、最可定位的故障点。

第一步,把用户问题改造成系统能执行的意图

人不会按照数据库字段说话。用户可能只写“这个怎么还是不行”,把三个目标塞进一句话,或者默认系统知道“这批客户”指哪个时间段。入口不澄清,后面的检索、重排和生成都会认真优化一个错误目标。

查询重写、扩展、分解和查询 Agent 处理的是四种不同情况。

入口症状系统动作主要收益主要代价
含糊、口语化消歧、补关键词、去噪更贴近检索接口可能改错用户意图
问法单一、需要广搜生成多组相关查询提高召回与覆盖漂移、延迟、重复
一个问题含多个目标拆成可独立处理的子问题各自检索更精准综合时可能冲突
跨库、路径未知按 schema 动态查询并评估结果能根据结果换策略成本、延迟、调试复杂
四种方法解决不同的不确定性。越复杂的方案需要越明确的失败恢复和停止条件。

查询重写本身有三个基础动作:把别扭或省略严重的问题重新组织,删除会干扰检索的无关背景,补入目标资料常用的关键词。必要时再把复杂问题拆成子问题。这里的目标在于为不同环节准备不同形式的查询:给检索器的版本追求匹配,给最终回答的版本保留完整意图,而非单纯润色用户原话。

例如,“帮我看看最近客户为什么流失,并找三家最值得回访”至少包含三层意图:最近指哪个周期,流失要按什么口径判断,最值得回访由金额、活跃度还是挽回概率决定。系统可以先重写成结构化问题,再把原因分析和客户筛选拆开检索,最后综合。若数据分散在 CRM、工单和通话记录里,查询 Agent 才需要根据各库的 schema 动态决定搜索、过滤和聚合顺序。

一个完整的查询 Agent 至少经过分析、执行和可选综合三个阶段。它先判断问题类型、需要哪些来源和过滤条件,再执行搜索;如果结果缺字段、证据互相冲突或不足以完成任务,它要评估缺口,改写或扩展查询后重试。只有证据齐备时,才进入综合回答。这个循环比“一次搜索后直接生成”更贵,却能把检索失败暴露为可恢复的中间状态。

扩展查询能提高召回,但也会把用户意图越扩越远;分解能提高精度,但会增加调用次数和综合难度;查询 Agent 能适应未知路径,同时带来延迟、成本和调试复杂度。选择标准应落在任务上:是否含糊、是否多目标、是否需要跨库、第一次检索失败后是否值得继续探索。

入口阶段至少要留下三项可检查产物:一份保留用户原话的规范化意图、一组不可越过的范围条件、一个说明“什么结果算回答完成”的验收句。没有这三项,系统很难判断后面是在探索,还是已经跑题。

第二步,只把当前需要的知识送进上下文窗口

意图明确后,系统面临第二个问题:资料远大于窗口,哪一小部分既容易被找到,又带着足够语境?这就是检索和切块真正解决的事。

切得太小,单个片段容易命中,却可能丢掉主语、条件和例外;切得太大,语境完整,向量表示却被多个主题平均,检索时难以精准命中。手册把它画成“检索精度”和“语境完整度”的甜点区。这个甜点区没有全行业通用数字,它随文档结构、问题粒度和下游任务改变。

固定长度切块速度快,适合短而规则的资料;递归切块按段落、句子逐级处理,是常见默认;按标题或函数切块适合结构清楚的文档与代码;语义、LLM 和 Agentic 切块用更高成本判断主题边界;层级切块同时保留摘要、章节和细节;late chunking 先让表示看到全文,再从中生成片段表示。方法之外,还要决定何时切:预切块把成本放在离线阶段,查询快但策略固定;后切块根据当前问题动态处理,灵活但首轮更慢。

下面的选择器把手册的策略矩阵和 pre/post 取舍合在一起。它给的是工程起点,不是性能保证。

选择三项任务条件,查看建议如何变化;下方仍保留完整静态基线。

建议起点 Document-based / Recursive + Pre-chunking

离线按标题或结构边界切块,再用目标大小约束。

这是本站基于指南取舍整理的起点;最终选择必须用真实问题集评测。
查看四种典型组合
文档结构内容变化首轮延迟建议
结构清楚相对稳定要求低延迟Document-based / Recursive + 预切块
结构松散相对稳定要求低延迟Recursive / Semantic + 预切块
结构清楚经常变化可接受额外处理Document-based + 后切块
结构松散经常变化可接受额外处理Semantic / LLM-based + 后切块
方法决定如何切,pre/post 决定何时切;两者要分开评估。

选择之后还要做任务级评测。本站建议先准备一小组真实问题,每题标出必须命中的原始段落;然后检查检索结果有没有覆盖答案、是否带着必要限定、无关片段占了多少、最终回答能否回到原文。若只看向量相似度或演示中的一个成功案例,切块策略很容易在换文档后失效。

这也暴露了材料的厂商视角:Weaviate 自然把向量数据库放在中心。生产系统还可能组合关键词检索、关系数据库、文件索引、事件日志和直接工具查询。检索层的目标是拿到可用证据,不是证明某一种存储方式先进。

第三步,用提示和记忆把一次调用接成长任务

检索结果不会自动变成好上下文。系统还要决定任务规则、证据、最近对话、工具说明和输出空间各占多少;哪些细节只在当前步骤有用,哪些状态值得跨轮保存。

提示在这里承担控制层:定义目标、边界、工具触发条件、参数格式、返回值和完成标准。手册介绍了 few-shot、Chain of Thought、Tree of Thoughts 与 ReAct。真正可迁移的部分,是用范例固定输出合同、把复杂任务拆成可检查阶段、让行动结果进入下一轮。无需要求模型展示私有推理;计划、工具参数、执行结果、引用和状态变化已经足够审计。

记忆则把时间拉长。当前窗口保存最近消息和这一步需要的材料;working memory 保存一个多步任务尚未完成的状态;episodic memory 记录发生过的事件;semantic memory 保存可复用事实;procedural memory 保存经过验证的做事方法。它们的存放位置、写入门和清理门不同。

状态类型常见位置写入门读取门清理门
当前上下文模型窗口本轮确实需要每次调用压缩工具输出和重复信息
工作状态任务账本 / 状态机多步任务尚未完成恢复或进入下一步任务结束后归档
情景记忆事件日志事件会影响未来判断相似对象或时间范围合并重复、标记过期
语义记忆知识库 / 数据库事实已核验且可复用问题需要该事实版本、来源和失效日期
程序记忆流程 / Skill / Playbook做法经过验证同类任务触发新流程替代旧流程
存储介质可以变化;真正的工程对象是写入、读取、更新和遗忘规则。

“什么都存”会制造另一种遗忘:重要信息被重复、过期和低质量记录淹没。一个可用的记忆系统至少要回答五个问题:谁可以写入,凭什么写入,怎样合并冲突,什么时候取回,何时过期或删除。检索质量和写入质量同样重要;错误记忆被反复取回,会把一次失误扩散成长期偏差。

记忆架构必须服从任务。客服 Agent 更依赖能还原用户交互历史的情景记忆,财报分析 Agent 更依赖稳定的领域事实;简单任务可以先用最近若干轮对话的缓冲区,不必一开始就搭完整长期记忆。选择层级的依据,是任务是否需要跨轮状态、个性化历史、稳定知识或可复用流程。

取回记忆也不能只做一次盲搜。手册给出的改进路径包括:先扩大或迭代查询,再取回候选;用重排把真正相关的记录推到前面;必要时让查询 Agent 跨多个集合继续搜索,或让个性化逻辑结合用户偏好和交互历史重排。能存下来只是第一关,能在正确时刻取回正确一条才是记忆系统的核心能力。

手册把上下文卸载写成把信息放到窗口外,需要时再取回。现实中,最轻量的实现往往是一份结构化任务状态:目标、已完成步骤、关键决定、未解决问题、证据位置。它比保留全部聊天记录更便宜,也更容易验证。

如果你想看这一原则在真实产品里如何落地,站内这篇文章拆了 Claude Code 缩减系统提示和工具描述的具体做法。

继续阅读Anthropic 砍掉 Claude Code 八成系统提示词,给出六条新的上下文写法规则换判断、示例换接口;一个工具描述从约 9100 字符压到一句话加一个枚举

第四步,让 Agent 选择工具,并用结果继续下一轮

工具让模型从回答问题进入行动。function calling 把“输出一段像命令的文本”推进到结构化函数名和参数;MCP 又把资源、提示和工具的连接方式标准化。连接成功只说明接口可用,无法证明 Agent 会在正确时间、用正确参数、经过正确授权调用它。

单个工具调用和工具链是两种不同难度。查一次航班,只需选中工具、填好参数并解释结果;规划一次周末旅行,可能要依次查询航班、酒店和当地活动,还要把前一步结果转成后一步约束。工具链增加了计划顺序、中间状态、局部失败和停止条件。

可靠工具循环至少包含七个检查点:发现可用工具,筛掉无关工具,选择或规划,构造参数,经过授权,执行并校验 Observation,最后判断继续、换策略、询问用户还是停止。

参数构造是最容易被低估的一关。Agent 即使选对工具,也可能漏掉必填字段、混淆单位或生成格式错误的参数。手册中的例子展示了一个可恢复路径:首次调用因参数不合格而报错,错误作为 Observation 回到窗口,Agent 据此修正参数再次执行。所谓自我修正,必须落到“读懂错误—改变参数—重新校验”的可观察过程,不能只写一句“模型会反思”。

  1. 发现只暴露相关工具
  2. 选择决定是否用、用哪个
  3. 参数类型、单位、格式
  4. 授权权限与副作用
  5. 执行幂等、超时、重试
  6. 观察校验结果和错误
  7. 停止继续、换路、询问或结束
连接标准化层MCP 暴露 Resources / Prompts / Tools;不替代授权与结果正确性
Observation 必须回到上下文,但原始结果不必全部重放;保留摘要、关键字段和可复查位置。

工具描述是上下文的一部分。一个好合同要写清动词、适用范围、必填参数、单位与格式、返回结构、错误状态和限制。工具返回也要控制体积;把几万行日志原样塞回窗口,会让下一步决策被噪声拖垮。保留摘要、关键字段、原始结果位置和可复查引用,通常更稳。

MCP 的价值在于降低重复适配。传统方式里,M 个 AI 应用分别对接 N 个外部系统,最坏需要维护 M×N 组定制连接;标准协议让应用端和服务端各自适配一次,把连接问题收敛为 M+N。它提高的是模块可组合性,不是调用可靠性。官方规范里的基础原语包括 Resources、Prompts 和 Tools,远不止“给模型接工具”。它仍然不替应用决定权限、审批、数据边界、幂等、重试和停止条件。把 MCP 接通当成 Agent 完成,是把插座装好误当成电器已经安全运行。

多 Agent 也遵守同一规律。专业子 Agent 可以带着干净上下文并行处理窄任务,主 Agent 只接收压缩结果;代价是任务拆分、证据回传、冲突合并和共享状态变得更难。任务没有明显并行收益时,单 Agent 加清楚的工具和状态往往更容易验证。

一套上下文工程系统,最后要过这六道验收

这份手册把提示、检索、记忆和工具放进同一张系统图。它没有提供效果实验,也不能替你选定框架。它留下六道工程关口:每一步都要有可检查产物、失败信号和下一步交接。

01意图门

用户原话、规范意图、完成标准

失败:系统优化了错误目标
02证据门

可定位片段、来源、限定条件

失败:回答有数字却回不到材料
03装配门

高信号输入与输出预算

失败:窗口被无关历史和工具输出占满
04状态门

写入、读取、更新、遗忘规则

失败:旧决定丢失或错误记忆复发
05行动门

工具合同、权限、参数、幂等

失败:选错工具或产生重复副作用
06反馈门

结果校验、回退、停止条件

失败:Agent 循环不止或带错继续
本站基于指南六块能力整理。每道门都应进入日志和真实任务 eval。

评审一套 Agent 时,可以从失败反推:意图层有没有保留用户原话和完成标准;证据层能否定位原始片段;装配层是否把高信号内容和输出空间同时纳入预算;状态层有没有写入、更新和遗忘规则;行动层是否有授权、参数与幂等合同;反馈层能否根据 Observation 继续、回退或停止。

全部通过,才说明系统开始具备上下文工程。它仍需要用真实任务集验证正确率、成本、延迟和恢复能力。指南里的方法清单是设计地图,生产可靠性来自持续的 eval、日志和故障复盘。

Context Engineering 指南末页:左侧是简单提示工程,右侧是动态选择文档、工具、记忆文件和消息历史的上下文工程
用户版本末页。原版的 Weaviate 产品 CTA 已被替换为中性表述,核心对照仍保留。

末页把提示工程和上下文工程画成两个不同尺度:前者聚焦当前窗口里的指令,后者还要管理文档、工具、记忆文件、历史与工具结果怎样动态进入。这个对照可以再压成一句话:模型能力决定它可能做到什么,上下文系统决定它此刻依据什么、能做什么,以及做完以后留下什么。

上下文工程落地包
四份可直接放进 Agent 设计评审、实现任务或故障复盘的 Markdown 工具:六道验收表、查询与切块决策表、记忆治理卡、工具调用合同。
  • 六道上下文工程验收表
  • 查询与切块决策表
  • 记忆治理卡
  • 工具调用合同模板
来源
Context Engineering — pastel adapted editionadapted from Weaviate·查看主材料
本站说明
本文主材料是基于 Weaviate 官方指南制作的中性化淡彩适配版;官方原版用于核对出版归属、版本差异和内容边界。
↑ 正文结束
✓ 本篇全文免费开放

会员可复制、下载全文 Markdown,还能让你的 AI 订阅和提问。

阅读原文 ↗
📮 新解读第一时间进邮箱

读完觉得有用?留个邮箱,每篇新解读发布就送达,随时退订。