简介:本文围绕智能体落地的核心瓶颈——上下文工程展开,系统讲解上下文为何成为决定效果与成本的关键变量,并给出可复用的设计流程、分层结构、压缩与检索策略、状态管理方法及评估迭代机制。读者可据此搭建更稳定、可观测、可扩展的上下文方案,提升任务成功率并控制时延与费用。
在大模型应用从“演示可用”走向“生产可靠”的过程中,团队往往会发现一个反直觉的现象:模型能力并非唯一瓶颈,真正决定智能体表现上限的,是它在每一步推理时“看到了什么”。这就是上下文工程(Context Engineering)要解决的问题。它不同于传统提示词优化,不是雕琢一句指令的措辞,而是系统性地设计信息的筛选、组织、压缩、注入与更新机制。
智能体的每一次决策,都依赖当前上下文窗口中的全部信息:系统指令、历史对话、工具返回结果、检索到的文档、中间推理状态等。上下文的质量直接决定三件事:
因此,上下文工程的目标可以概括为一句话:在有限的窗口预算内,让模型在正确的时间看到正确粒度的正确信息。
一个可维护的上下文方案,通常需要把信息按“变更频率”和“重要性”分层,而非全部平铺。常见分层如下:
分层的好处在于:当窗口紧张时,可以按层设定淘汰优先级。例如优先保留静态层与状态层,对证据层做摘要或按需加载,而不是简单截断最早的消息。
上下文膨胀往往源于“能塞就塞”。更合理的做法是建立准入判断:
一个实用的工程习惯是:为每条进入上下文的信息打上元数据标签,例如来源、时间戳、置信度、所属子任务。这样在压缩和淘汰时才有依据。
当证据层体量过大时,纯靠截断会丢失关键信息。常见做法是压缩与检索协同:
压缩策略:
检索策略:
示意性伪代码如下:
def build_context(task, state, budget):ctx = []ctx += static_layer() # 固定系统约束ctx += policy_layer(task.type) # 任务规则与工具ctx += state_layer(state) # 进度与变量evidence = retrieve(task.query, top_k=20)evidence = rerank(evidence)[:5]ctx += compress(evidence, max_tokens=budget * 0.4)ctx += recent_turns(state.history, n=3)return trim_to_budget(ctx, budget)
长任务中,上下文窗口无法容纳全部历史,必须依赖外部状态。常见模式是:
这样既控制了窗口占用,又保证了任务的可追溯与可恢复。
上下文工程不是一次性设计,而是持续调优。建议建立以下观测维度:
通过离线评测集与线上灰度结合,逐步沉淀出适配自身业务场景的上下文模板。
上下文工程本质上是一种信息架构能力:它要求开发者像设计数据库索引一样设计上下文,既不过度冗余,也不遗漏关键。随着智能体承担的任务越来越复杂,谁能把上下文管好,谁就能在效果、成本与稳定性之间取得更好的平衡。