跳到主要内容

Agent 上下文管理最佳实践:如何让 AI 记住 100 轮对话

让 AI 记住上下文不难,难的是记住该记的、忘掉该死的、在该想起来时准确召回。这是 Agent 工程中最被低估的挑战。


问题的本质

大模型的上下文窗口是有限的(即使 200K tokens 也有边界),而且:

  • 上下文越长,推理越慢、越贵
  • 无关信息越多,注意力越分散
  • 有价值的上下文往往分散在多个会话中

所以核心问题不是「怎么塞更多」,而是「怎么筛更好的」。


分层记忆架构

YingClaw 采用四层记忆模型:

┌─────────────────────────────┐
│ 会话上下文(当前对话) │ ← 完整保留
├─────────────────────────────┤
│ 短期记忆(7 天自动过期) │ ← 每日笔记
├─────────────────────────────┤
│ 长期记忆(永久) │ ← 用户偏好、项目约定
├─────────────────────────────┤
│ 核心记忆(永久) │ ← 不可变事实
└─────────────────────────────┘

关键原则

层级存什么不存什么
会话当前对话全部
短期阶段进展、调试记录API Key、密码
长期「用户偏好 TypeScript」当天吃了什么
核心「项目 MSRV 是 1.75」临时配置

三个实践技巧

1. 压缩而非截断

不要简单地丢弃旧消息。用 Agent 对历史对话做摘要,保留关键决策和上下文:

原文(500 tokens):
"我先试了方案 A,发现不行,又试了方案 B,然后调整了参数 x=3,
发现效果不错,但还需要优化 y..."

压缩后(50 tokens):
"已确认:方案 B 有效,x=3。待优化 y。"

2. 关键词触发记忆召回

不要让 Agent 每次都加载全部记忆。根据当前对话的关键词,召回相关的记忆片段:

用户问:"帮我审查 auth 模块"
→ 触发记忆召回关键词:"auth"、"安全"、"代码审查"
→ 召回:"项目使用 JWT + refresh token 方案(决策于 5 月)"

3. 定期复盘清理

每周让 Agent 自动执行一次记忆清理:

"回顾本周记忆,合并重复内容,删除过时信息,保留 5 条最重要的发现"


效果数据

采用分层记忆后,YingClaw 的内部测试显示:

指标改进前改进后
上下文相关度64%93%
平均 token 消耗12K5K
用户满意度3.2/54.5/5

上下文管理不是炫技,是让 Agent 从「能用」变成「好用」的关键工程问题