很多人第一次做 Agent,都会把 Context 当成"越多越好"的资料仓库:System Prompt 放一大段规则,User Message 原样保留,工具返回全部塞进去,Plan 从头留到尾,再把历史对话一股脑拼上。
结果往往不是 Agent 更聪明,而是越来越慢、越来越贵,也越来越容易跑偏。
真正的问题不是"Context 能装多少",而是:在当前这一步,模型为了做出正确决策,到底需要看到什么?如果把 Context 理解成 Agent 的"工作台",好的设计追求的不是信息完整,而是信息足够、相关、可执行。
Context 不是记忆库,而是当前任务的工作集
一个 Agent 的 Context,最适合包含四类东西:稳定规则、当前目标、必要状态、最近证据。
稳定规则决定它"该怎么做",比如角色、边界、格式和安全约束。当前目标告诉它"这一步要完成什么"。必要状态包括已经完成什么、有哪些关键变量、还有什么未解决。最近证据则来自用户输入、工具结果或文件内容。
可以把它想成办公桌。桌上应该放正在处理的合同、今天的任务清单和关键记录,而不是把公司三年的邮件、所有会议纪要和整个知识库都打印出来。
Context 的核心原则可以浓缩成一句话:只保留会影响下一步判断的信息。
System Prompt 放长期稳定的规则
System Prompt 适合承载稳定、跨任务、优先级高的约束。
例如:Agent 的角色是什么;允许做哪些事;哪些事情不能做;调用工具要遵循什么规则;回答采用什么格式;遇到冲突时如何处理。
不适合放进 System Prompt 的,是频繁变化的任务细节。比如"今天帮我分析这份报价单""这次只看北京市场",更适合出现在 User Message 或任务状态里。
常见误区,是把 System Prompt 写成一本操作手册,试图提前覆盖所有场景。Prompt 越长,不代表控制力越强。规则太多时,真正重要的约束反而可能被淹没。
判断方法很简单:这条信息换一个用户、换一个任务后是否仍然成立?如果答案是"是",它更适合 System Prompt。
User Message 应该表达这次到底要什么
User Message 的主要作用,是描述当前需求、任务目标和即时约束。
理想情况下,它应该让 Agent 明白三件事:要做什么、基于什么做、结果要满足什么条件。
例如用户说:"比较这三家供应商,优先考虑交付风险,不要只看价格。"这里既有目标,也有判断标准。Agent 后续调用搜索、表格或邮件工具,都应该围绕这个目标服务。
如果系统还有任务编排层,可以把用户输入整理成结构化状态,但不要过度改写原意。尤其是限制条件、否定条件和偏好,最容易在"总结需求"时丢失。
Tool Result 不应该全部进入 Context
这是 Agent 设计里很容易踩的坑。
工具返回的是原始证据,Context 需要的是当前决策所需的证据,两者并不等价。
假设搜索工具返回二十条结果,真正影响判断的可能只有三条;数据库返回一百行记录,当前步骤也许只需要异常项;网页抓取整篇文档,但模型只是要确认交付日期。
更合理的做法,是先过滤、提取、压缩,再进入后续 Context。保留关键字段、结论、来源和必要原文。可能需要追溯的信息,可以放到外部状态或日志里,需要时再取回。
但也不能压缩过头。涉及数字核对、法律条款、代码报错或精确引用时,原始内容本身可能就是证据,这时应保留足够上下文,避免摘要失真。
Plan 不必常驻,应该沉淀成状态
很多 Agent 会先生成 Plan:搜集资料、比较方案、生成结论、输出报告。
问题是,当任务执行到第三步时,完整 Plan 往往已经不重要。真正有用的是:完成了什么、得到什么、下一步做什么。
例如可以把计划更新成:
"供应商资料已收集;A 价格最低,但交付不稳定;B 价格高 8%,交付更稳定;还需要确认 C 的售后条款。"
这段状态比早期计划更有价值,因为它反映了任务现在处于哪里。
复杂任务仍然需要保留高层目标和关键里程碑,防止执行过程中偏航。应该删除的是已经失效的中间计划,而不是任务方向本身。
判断 Context,只问一个问题
设计 Context 时,只需问:
"如果删掉这条信息,Agent 的下一步决策会不会明显变差?"
如果不会,它大概率不该继续留在 Context。
一个健康的 Context 通常是分层的:最上层是稳定规则,中间是当前任务与关键约束,下面是压缩后的任务状态和最近必要证据。历史信息、完整工具输出、过期计划放在外部存储,需要时再加载。
这和人的工作方式很像。我们不会为了写一封邮件,把过去十年的记忆全部加载到脑中;只会调取和这封邮件真正相关的部分。
Agent 的能力和模型有关,但系统质量也取决于一个问题:你是否在正确的时刻,把正确的信息放到了它面前。
与其追求"更大的 Context",不如建立 Context 管理规则:什么必须常驻,什么按需加载,什么需要压缩,什么执行后就退出。
一个成熟的 Agent,不是记住得最多,而是每一步都清楚自己现在需要知道什么。
