9.2 单智能体上下文管理

9.2.1 工作记忆管理

智能体的工作记忆对应上下文窗口,需要精心管理:

信息优先级

不同信息的保留优先级不同:

优先级
内容类型
处理方式

最高

任务目标、核心约束

始终保留

当前计划、即时状态

完整保留

近期执行记录

根据窗口压缩

早期历史

摘要或外存

滑动窗口策略

只保留最近 N 步的详细记录:

[步骤 1-10: 摘要]
[步骤 11: 完整记录]
[步骤 12: 完整记录]
[步骤 13: 完整记录] ← 当前

9.2.2 状态追踪

显式状态块

在上下文中维护显式的状态信息:

状态更新

每次行动后更新状态:

9.2.3 计划管理

计划表示

在上下文中维护当前计划:

计划调整

根据执行情况调整计划:

9.2.4 执行历史压缩

长时间运行的智能体需要压缩执行历史:

成功操作压缩

成功的操作可以简化记录:

失败操作保留

失败的操作保留更多细节,防止重复错误:

9.2.5 工具结果处理

工具返回大量数据时的处理:

spinner

图 9-2:工具结果处理策略

9.2.6 上下文窗口监控

监控上下文使用情况:

9.2.7 错误恢复

当智能体遇到问题时的上下文处理:

  1. 记录错误状态:保存错误详情

  2. 回溯检查点:可能需要回到之前的状态

  3. 调整计划:更新后续步骤

  4. 清理无效信息:移除失败操作的中间结果

9.2.8 持久化执行与工件管理

对于长时间运行或涉及多个工具调用的智能体任务,建议采用 持久化执行模式(Durable Execution Pattern):

工件(Artifact)的定义与作用

工件是指智能体执行过程中的每一步输出,包括:

类型
内容
用途

步骤输出

工具调用结果、模型生成文本

下一步的输入

执行状态

当前进度、已完成步骤、待执行计划

中断恢复

决策记录

为什么选择某个操作

事后分析和审计

元数据

时间戳、成本、延迟等

性能监控

检查点与恢复机制

工件的持久化与可重放

  • 存储位置:使用结构化存储(如 PostgreSQL + JSON 字段,或 DuckDB)而不是仅日志文件

  • 版本控制:为每个工件记录版本号和生成时间,便于追溯

  • 内容哈希:记录工件内容的 SHA-256 哈希值,确保重放时的一致性验证

  • 重放验证:在恢复后,可选择性地重新执行某些步骤,对比输出与保存的工件是否一致,检测非确定性问题

这种模式特别适合以下场景:

  • 长流程任务:需要调用多个工具、跨越数十个推理步骤的任务

  • 高成本操作:避免因中间失败而重复执行昂贵的 LLM 调用或 API 请求

  • 合规要求:需要完整的审计日志和决策追踪

  • 多智能体协作:下游智能体需要准确了解上游智能体的执行结果和状态

9.2.9 计划文件作为上下文持久化机制

在 AI 辅助开发实践中,plan.md 文件已成为跨会话上下文持久化的核心机制。与工件管理(9.2.8)不同,计划文件不仅记录执行状态,更承载了问题定义、方案选择和验收标准等高层语义信息。

跨会话上下文恢复

当会话上下文丢失(如窗口关闭或上下文膨胀触发压缩)时,计划文件充当检查点。开启新会话时只需指向已有计划文件,即可从断点继续,无需重建上下文。这本质上是将上下文从易失的会话内存“外化”到持久化的文件系统。

结构化设计

高质量的计划文件包含问题描述、方案选择、需修改的文件列表、验收标准(复选框形式)等结构化字段。这种结构化设计确保了上下文在跨会话传递时保持完整性和可操作性。

与检查点机制的关系

计划文件与 9.2.8 节讨论的检查点机制形成互补——检查点保存执行状态的快照,计划文件则保存任务的完整语义描述。两者结合实现了从“做什么”到“做到哪了”的完整恢复。

计划文件结构示例

计划文件通过这种结构化形式,让中断的工作能够快速恢复,新会话的 AI 无需重新理解整个项目背景,只需对准计划继续推进。

最后更新于