Agent效果优化——上下文工程

生产级Agent评估考量的指标

KVCache缓存命中率

效果优化

效果的稳定性

工具调用

在迭代过程中,动态添加或删除工具,容易导致模型选择错误行动或低效路径的概率升高。

  1. 在大多数LLM中,工具定义在序列化后位于上下文的前部,通常在系统提示之前或之后。因此任何更改都会使后续所有动作和观察的KV缓存失效。

当先前的动作和观察仍然引用当前上下文中不再定义的工具时,模型会感到困惑。如果没有约束解码,这通常会导致模式违规或幻觉动作。

使用状态机管理工具可用性
在解码过程中掩蔽token的logits,以基于当前上下文阻止(或强制)选择某些动作

上下文

128K上下文窗口通常不够用,主要痛点:

  1. 观察结果可能非常庞大,尤其是当代理与网页或PDF等非结构化数据交互时。很容易超出上下文限制。

  2. 模型性能往往会下降,超过一定的上下文长度后,即使技术上支持该窗口大小。

  3. 长输入成本高昂,即使使用前缀缓存。你仍然需要为传输和预填充每个token付费。

常用的解决方案:上下文截断或压缩。不可逆的压缩容易导致信息丢失,在多步之后的推理可能使用压缩前的信息效果更好,所以保留更多信息很重要。

使用文件系统作为上下文
大小不受限制,天然持久化,并且代理可以直接操作。
将文件系统作为存储和结构化的外部记忆。
另外,压缩策略始终设计为可恢复的。

复述目标到上下文末尾
Manus中的一个典型任务平均需要大约50次工具调用。这是一个很长的循环——由于Manus依赖LLM进行决策,它很容易偏离主题或忘记早期目标,尤其是在长上下文或复杂任务中。

通过不断重写待办事项列表,Manus将其目标复述到上下文的末尾。这将全局计划推入模型的近期注意力范围内,避免了”丢失在中间”的问题,并减少了目标不一致。实际上,它使用自然语言来使自己的注意力偏向任务目标——而不需要特殊的架构变更。

将错误的尝试保留在上下文中
将错误的尝试保留在上下文中。

少样本提示中通过受控的随机性增加多样性
在行动和观察中引入少量的结构化变化——不同的序列化模板、替代性措辞、顺序或格式上的微小噪音。

成本控制

推理成本按token计费,命中缓存的输入token比未命中缓存的token成本低很多,设计注意的两个点:

  1. 提高命中缓存的概率
    1.1 保持提示前缀稳定
    1.1.1 大模型推理框架
    使用vLLM 这样的框架自托管模型,确保启用了前缀/提示缓存,并且你正在使用会话 ID 等技术在分布式工作节点之间一致地路由请求。
    1.2 上下文只追加内容,避免修改之前的内容
    1.3 在需要时明确标记缓存断点

参考

AI代理的上下文工程:构建Manus的经验教训
A Survey of Context Engineering for Large Language Models
Context-Engineering


Agent效果优化——上下文工程
https://summerchengh.github.io/tech-blog/2025/07/19/大模型-Agent-效果优化-上下文工程/
Author
Your Name
Posted on
July 19, 2025
Licensed under