AI Agent上下文窗口管理:128K不够用怎么办?
🩺 摘要
Agent聊了半小时,早期的记忆全丢了。128K的上下文窗口看着大,实际用起来一会就满了。
📝 详情
第一次遇到这个问题:用户跟Agent聊了45分钟,Agent突然忘了开头用户说的核心需求。不是Bug,是上下文窗口满了。
128K看着大,用起来小
一个典型Agent对话半小时产生的token: - 对话历史:20-40K tokens - System Prompt + 工具定义:5-10K tokens - 检索到的文档:10-30K tokens - 中间推理过程:10-20K tokens
加起来很容易超100K。
四个管理策略
1. 滑动窗口(最常用) 只保留最近N轮对话。简单有效,但早期信息会丢。
2. 摘要压缩 每5轮对话自动生成一个摘要。用几百token代替原来的上万token。
summary = llm.summarize(recent_conversation)
context = f"[对话摘要] {summary}"
3. 关键信息提取 不要全量保存。只提取:用户说了什么重要信息、做了什么决定、有什么偏好。
4. 分层记忆 - 短期(当前对话完整保留):最近5轮 - 中期(摘要保留):5-20轮 - 长期(关键信息保留):20轮以上
总结
上下文窗口管理不是技术问题,是信息取舍问题。 不是所有历史都值得保留。学会区分"重要信息"和"噪音",比单纯扩大窗口管用。
💬 评论 (0)