ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

长对话上下文如何不爆炸?open-multi-agent 4种上下文压缩策略:sliding-window到compact对比指南

长对话上下文如何不爆炸?open-multi-agent 4种上下文压缩策略:sliding-window到compact对比指南 长对话上下文如何不爆炸open-multi-agent 4种上下文压缩策略sliding-window到compact对比指南【免费下载链接】open-multi-agentTypeScript AI agent orchestration framework with dynamic workflows. Describe the goal, not the graph: a coordinator plans the task DAG at runtime and runs it on any LLM (Claude, ChatGPT, Gemini, DeepSeek, or local models).项目地址: https://gitcode.com/gh_mirrors/op/open-multi-agent长对话上下文如何不爆炸open-multi-agent 是一个 TypeScript 编写的 AI 智能体编排框架只需描述目标协调器coordinator就会在运行时规划任务 DAG并驱动任意 LLMClaude、ChatGPT、Gemini、DeepSeek 或本地模型完成任务。而长对话、长任务跑着跑着上下文爆炸是每个新手都会踩的坑。这篇文章带你 1 分钟看懂它的4 种上下文压缩策略——sliding-window、summarize、compact、custom并给出清晰的选型对比帮你把 token 账单和超时报错一次解决。为什么长对话的上下文会爆炸Agent 每走一轮turn都会往对话历史里追加新的消息你的提问、模型的回复、工具调用的入参和工具输出。一个grep或file_read的结果动辄上万字符十几轮下来输入 token 就能轻松突破模型的上下文上限——轻则报错重则越聊越糊涂。好消息是open-multi-agent 把这件事收敛成了一个配置项contextStrategy。在定义 Agent 时挑一种策略框架会在每一轮 LLM 调用之前自动帮你瘦身你完全不用手写压缩逻辑。策略的类型定义在 packages/core/src/types.ts完整说明见 docs/context-management.md。1 分钟上手如何配置上下文压缩策略配置入口只有一个在AgentConfig里写入contextStrategy字段四选一const agent: AgentConfig { name: long-runner, model: claude-sonnet-4-6, // 四种策略任选其一 contextStrategy: { type: sliding-window, maxTurns: 20 }, // contextStrategy: { type: summarize, maxTokens: 80_000, summaryModel: claude-haiku-4-5 }, // contextStrategy: { type: compact, maxTokens: 100_000, preserveRecentTurns: 4 }, // contextStrategy: { type: custom, compress: (messages, estimatedTokens) ... }, }下面逐个拆解它们的工作方式、适用场景和代价。策略一sliding-window滑动窗口——最快最省心的断舍离工作方式只保留最近 N 轮对话maxTurns更早的内容直接丢弃。特点说明额外 LLM 调用❌ 无零成本信息保留只留最近 N 轮早期细节全部丢失关键细节始终保留第一条用户消息tool_use/tool_result配对不会被拆散适合谁对话是任务驱动而非记忆驱动的场景——每一轮都能基于最近上下文独立推进的任务比如批量处理文件、循环执行某个流程。一句话评价最便宜、最可预测的上下文压缩策略新手默认起步首选但别指望模型还记得第 2 轮你提过的约束条件。策略二summarizeLLM 摘要——用便宜小模型换完整记忆工作方式当历史估算 token 超过maxTokens阈值时把旧轮次交给一个摘要模型summaryModel可指定更便宜的小模型生成摘要用[Conversation summary]...前缀替换原始历史最近轮次原样保留。几个值得注意的工程设计实现见 packages/core/src/agent/runner.ts 的summarizeMessages摘要会明确要求保留用户目标、约束、决策、关键工具输出和未解决问题摘要结果会按历史签名缓存旧轮次没变就不重复调用摘要模型省一次调用是一次的钱图片等附件在送摘要前会被替换为文字占位符防止一张 1MB 图片让压缩调用本身膨胀到 25 万 token。代价这是 4 种策略中唯一产生额外 LLM 费用的且摘要质量依赖摘要模型。适合谁长周期对话客服、研究助理、多轮代码评审既要记住早期决策又能接受一定细节损耗。策略三compact规则式压缩——不调用 LLM 的精准瘦身compact是三者之间最微妙的平衡点纯规则、零 LLM 调用但比 sliding-window 更聪明。触发条件历史估算 token 超过maxTokens才动手否则原样返回。触发后它会内容处理方式最近preserveRecentTurns轮默认 4 轮✅ 完整保留旧轮次里的tool_use块决策记录✅ 完整保留旧的长tool_result默认 ≥200 字符✂️ 替换为[Tool result: 工具名 — 大小, compacted]标记旧的长助手文本块默认 ≥2000 字符✂️ 截断为开头 200 字符 省略标记错误类工具结果✅ 永不压缩排障线索不能丢图片块✂️ 替换为[Image compacted]一句话评价既不像滑动窗口那样一刀切遗忘又不像摘要那样花额外的钱是生产环境长任务的推荐档位。相关边界行为有大量测试覆盖见 packages/core/tests/context-strategy.test.ts。策略四custom自定义压缩——完全自主的逃生舱给框架一个compress(messages, estimatedTokens)回调每次 LLM 调用前包括第一次都会执行你可以拿到完整的消息数组和估算 token 数自由返回压缩后的数组。适合谁有自己压缩方案向量库、外部记忆服务或特殊保留规则比如永远保留法律条款轮次的进阶用户。注意回调里要自行判断阈值——它每轮都会被调用。4 种上下文压缩策略对比与选型建议策略额外 LLM 调用信息保留度配置复杂度推荐场景sliding-window无低只留最近 N 轮极低短记忆任务、成本敏感summarize有摘要模型带缓存高摘要最近原文低长周期对话、需要记忆compact无中高骨架完整、大块瘦身低长任务生产环境的默认选择custom自定自定高已有自研压缩/记忆体系新手速查拿不准就先上sliding-window验证流程任务变长后换compact确实需要记得住早期对话再上summarize。进阶组合拳工具结果截断与压缩contextStrategy之外open-multi-agent 还提供了两个上下文不爆炸的好搭档可与策略叠加使用compressToolResults被模型消费过的工具结果后面已跟了助手回复在下次调用前替换为短标记默认 500 字符以上才压错误结果和子智能体委派输出豁免。配合任意contextStrategy可最大化上下文余量maxToolOutputChars在工具执行时就把超长输出截成头 尾摘要从源头避免大文本进入对话历史。如上图的运行观测面板Run Viewer所示一次完整运行可以清晰看到INPUT TOKENS / OUTPUT TOKENS的累计消耗——当你启用上下文压缩策略后这里的输入 token 增长曲线会明显变平缓这就是策略生效最直观的证据。延伸阅读关键文件路径速查想了解什么看哪里4 种策略的官方完整文档docs/context-management.md策略类型定义ContextStrategypackages/core/src/types.ts核心实现滑动窗口/摘要/compact 压缩packages/core/src/agent/runner.ts工具结果压缩辅助函数packages/core/src/tool/result.ts行为测试含边界条件packages/core/tests/context-strategy.test.ts更多示例长对话、跨 Provider 推理保留packages/core/examples/常见问题 FAQQ4 种策略可以同时配多个吗AcontextStrategy一次只能生效一种但可以再叠加compressToolResults/maxToolOutputChars官方文档明确建议组合使用以获得最大上下文余量。Qcompact 压缩后模型会忘事吗A不会丢关键信息。tool_use决策记录、错误结果、最近 4 轮原文都完整保留被替换的只是冗长的工具输出和长文本且替换标记里仍标注了工具名和原始大小模型知道这里曾有一份大输出。Qsummarize 会不会每轮都多花一次摘要钱A不会。摘要按旧历史签名缓存旧轮次内容没变就直接复用缓存摘要零额外调用。一句话总结sliding-window省钱、summarize记性好、compact最均衡、custom全自由——按任务长度和预算对号入座长对话上下文从此不爆炸。【免费下载链接】open-multi-agentTypeScript AI agent orchestration framework with dynamic workflows. Describe the goal, not the graph: a coordinator plans the task DAG at runtime and runs it on any LLM (Claude, ChatGPT, Gemini, DeepSeek, or local models).项目地址: https://gitcode.com/gh_mirrors/op/open-multi-agent创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进