2026年4月1日星期三

Agent上下文管理策略与最佳实践:分层摘要+RAG混合方案

解析Agent上下文管理的核心挑战(token限制、信息衰减),系统介绍分层摘要、结构化记忆、多Agent协作等策略,并提供生产级混合方案(锚定+分层+RAG)的代码示例与选择对照表。

Tags:

上下文管理是构建可靠 AI Agent 的核心技术。本文系统梳理了主流的上下文管理策略和最佳实践。

为什么需要上下文管理?

LLM 有固定的 context window(上下文窗口)限制,需要解决三个核心问题:

  1. 长度限制
    :对话/任务越长,越容易超出 token 限制
  2. 信息衰减
    :早期关键信息在长上下文末尾被"稀释"
  3. 噪声干扰
    :无关步骤/错误尝试会干扰当前推理

常见的上下文管理策略

图片

2️⃣

分层上下文 + 摘要总结

将上下文分为两层:

  • 当前工作层
    :最近几轮完整对话(全部保留)
  • 历史摘要层
    :更早对话由 LLM 压缩成摘要
# 伪代码示例
class LayeredContext:
    def __init__(self, max_recent=5):
        self.max_recent = max_recent
        self.recent_messages = []  # 当前工作层
        self.summary = ""          # 历史摘要层

    def add_message(self, msg):
        self.recent_messages.append(msg)
        if len(self.recent_messages) > self.max_recent:
            # 触发摘要压缩
            old_messages = self.recent_messages[:-self.max_recent]
            self.summary = self.compress_to_summary(old_messages, self.summary)
            self.recent_messages = self.recent_messages[-self.max_recent:]

    def build_prompt(self):
        return [
            {"role": "system", "content": f"历史对话摘要:\n{self.summary}"},
            *self.recent_messages
        ]

✓ 优点

token 可控,保留历史信息

✗ 缺点

摘要可能丢失细节

适用场景:多步骤任务、编码助手

图片
图片


5️⃣

结构化记忆分区

Claude Code / OpenClaw 这类成熟 agent 常用:

分区
内容
保留方式
系统提示
规则、指令、工作流
永久保留(最顶部)
任务上下文
当前任务目标、约束、计划
全程保留
最近步骤
最近 N 轮工具调用/结果
滑动窗口
教训记忆
错误教训、避坑指南
摘要保留
归档区
已完成步骤的详细日志
只存不加载,需要时召回

6️⃣

多 Agent 协作的上下文管理

在多 agent 场景下:

  • 协调者 Agent
    :只保留任务目标、整体进度、各 agent 接口契约
  • 工作者 Agent
    :只拿到自己负责子任务的详细上下文
  • 上下文传递
    :通过"任务描述+结果摘要"的方式在 agent 间传递

推荐:生产级混合方案

class SmartContextManager:
    def __init__(self, max_tokens=100000, keep_recent=8):
        self.max_tokens = max_tokens
        self.keep_recent = keep_recent
        self.anchor_messages = []  # 锚定信息(目标、约束)
        self.recent_messages = []   # 最近轮次
        self.memory_db = None       # 向量记忆库(可选)

    def add_anchor(self, msg):
        """锚定信息永远不压缩"""
        self.anchor_messages.append(msg)

    def add_message(self, msg):
        self.recent_messages.append(msg)

        if self.estimate_tokens() > self.max_tokens * 0.7:
            self.compress()

    def compress(self):
        """分层压缩"""
        if len(self.recent_messages) > self.keep_recent:
            # 把超出的移到摘要/向量库
            to_archive = self.recent_messages[:-self.keep_recent]
            if self.memory_db:
                self.memory_db.add(to_archive)
            else:
                self.summary = self.summarize(to_archive, self.summary)
            self.recent_messages = self.recent_messages[-self.keep_recent:]

    def build_context(self, query=None):
        """构建最终上下文,支持检索"""
        context = self.anchor_messages.copy()

        if self.summary:
            context.append({"role": "system",
                           "content": f"之前对话摘要:\n{self.summary}"})

        if self.memory_db and query:
            # 动态召回相关记忆
            retrieved = self.memory_db.search(query, top_k=3)
            context.append({"role": "system",
                           "content": f"检索到的相关历史:\n{retrieved}"})

        context.extend(self.recent_messages)
        return context

选择对照表

场景
推荐方案
复杂度
简单对话机器人
滑动窗口
⭐ 低
多步骤编码/任务
分层摘要
⭐⭐ 中
复杂推理/规划
重要性过滤
⭐⭐⭐ 中高
长期项目/知识库
RAG + 检索
⭐⭐⭐⭐ 高
生产级 agent
混合方案(锚定+分层+RAG)
⭐⭐⭐⭐⭐

一句话总结

关键信息锚定置顶,近期对话完整保留,远期历史压缩归档,需要的时候检索召回 👍

对 ai感兴趣可以进群聊聊


图片

没有评论:

发表评论

PixVerse V6 AI视频模型上线:支持延时拍摄、慢动作,限时优惠7折

PixVerse V6 AI视频模型全新升级,支持延时拍摄、慢动作、复杂运镜与物理级真实还原,生成速度保持15秒极速。即日起至4月7日,会员购买享7折优惠,适用于内容创作者与小型团队。 Tags: AI视频模型 视频生成 PixVerse V6 限时优惠 ...