AI代理的上下文工程:构建Manus的经验教训

1. AI 代理的上下文工程:构建 Manus 的经验教训

作者:Yichao ‘Peak’ Ji | 发布日期:2025/7/18 | 分类:技术

1.1. 引言

上下文工程绝非易事

这是一门实验科学——我们已经重建了我们的代理框架四次,每次都是在发现了更好的塑造上下文的方式之后。

我们亲切地将这种手动架构搜索、提示调整和经验猜测的过程称为"随机研究生下降"(Stochastic Grad Student Descent)。

这并不优雅,但它有效。

1.2. 围绕 KV 缓存进行设计

1.2.1. KV 缓存的重要性

在典型的 AI 代理工作流中(如下图所示),输入与输出 token 的比例高度倾斜。

以 Manus 为例,其平均输入/输出 token 比例约为 100:1。

KV 缓存示意图

1.2.2. 提升缓存命中率的实践

  1. 保持提示前缀稳定

    • 避免在系统提示中包含秒级时间戳等易变动内容
    • 推荐使用固定格式的日期表示(如 YYYY-MM-DD)
  2. 保持上下文只追加特性

    • 避免修改历史操作记录
    • 使用确定性序列化方法(如按键名排序的 JSON)
  3. 合理使用缓存断点

    • 在系统提示结束处标记缓存边界
    • 使用会话 ID 实现分布式缓存路由

1.3. 上下文管理进阶技巧

1.3.1. 文件系统作为持久化上下文

将文件系统视为终极上下文

  • 大小不受限制
  • 天然持久化
  • 可直接操作

文件系统上下文

1.3.2. 注意力控制机制

# 典型的 todo.md 文件示例
- [x] 收集用户需求
- [ ] 分析技术方案
- [ ] 实现核心功能

注意力控制示意图

1.3.3. 错误处理与恢复

警告:擦除失败痕迹会移除改进证据!建议保留错误记录以帮助模型学习:

  • 保留失败的工具调用记录
  • 记录详细的错误观察结果
  • 保留堆栈跟踪信息

错误处理示意图

1.4. 进阶优化技巧

1.4.1. 避免少样本学习陷阱

说明:语言模型具有模仿倾向,建议采取以下措施:

  • 引入结构化变化
  • 使用多样化序列化模板
  • 添加微小格式噪音

模式困境示意图

1.5. 结论

成功要点:上下文工程三要素

  • 记忆管理
  • 环境交互
  • 反馈机制

智能体的未来将一次构建一个上下文。好好设计它们吧。