https://jiajia.fun/qa/e0334130-%E6%88%91%E4%B9%8B%E5%89%8D%E8%AF%BB%E8%BF%87%E8%AE%B2%E4%B8%8A%E4%B8%8B%E6%96%87%E7%9A%84%E6%96%87%E7%AB%A0-%E6%88%91%E8%AE%B0%E5%BE%97%E6%AF%8F%E6%AC%A1%E5%AF%B9%E8%AF%9D%E9%83%BD%E6%98%AF%E6%8A%8A%E4%B8%8A%E4%B8%8B%E6%96%87%E9%87%8D%E6%96%B0%E5%A1%9E%E8%BF%9B%E5%AF%B9%E8%AF%9D%E9%87%8C-%E5%A4%9A%E8%BD%AE%E5%BE%AA%E7%8E%AF%E4%B9%8B%E5%90%8E%E4%BC%9A%E5%8F%98%E5%BE%97%E8%B6%8A%E6%9D%A5%E8%B6%8A%E9%95%BF

# 我之前读过讲上下文的文章 我记得每次对话都是把上下文重新塞进对话里 多轮循环之后会变得越来越长

回复 群友 8832： 对，这是现在所有对话式 agent 的默认做法：每一轮都是把完整历史重新拼成一次请求发给模型，模型本身无状态，不记得上一轮。所以轮数越多，上下文越长，成本和延迟一起涨，模型注意力也会被稀释。 但要说清楚两件事： 一是「上下文长」不等于「一定爆」。现在主流模型窗口都到 100k~1M token 了，日常多轮根本填不满。真正出问题的是几种情况：工具返回的内容特别大（比如读整个文件、爬一整页 HTML）、多轮里反复塞同样的系统提示和 skill 描述、还有 agent 自己越跑越久的 session。 二是「把历史重新塞进去」这个过程本身，现在的工程做法和你印象里已经不太一样了，主要在这几个层面动手： 前缀缓存。系统提示和早期历史在每轮开头都是一样的，服务商把这部分缓存下来，命中缓存的部分便宜很多、也快很多。这也是为什么前面说 Super-agent 去掉直通机制后，Router 的读缓存 token 涨了三成——省的是缓存钱。 截断和摘要。老轮次不是无限留着，要么按 token 预算从最早的开始丢，要么滚一个摘要。这是最简单粗暴也最有效的。 按引用管理长内容。这就是 DeepSeek 那篇里的 Inline & Spill：近期要用的直接内联，长内容只留摘要加一个 ID，需要时顺着 ID 往回转。好处是上下文里始终只有「索引」，原文不占窗口。 不把整段会话喂给所有 agent。子 agent 拿到的是切好的任务上下文，不是完整群聊。这个和上下文长不长是一回事的两个面：不去控制谁看什么，再大的窗口也会被噪音吃掉。 一个实际的坑：很多人以为「窗口大所以随便塞」，结果中间那部分内容模型根本注意不到（lost in the middle），放窗口中间的信息召回率明显低于开头和结尾。所以重要的东西尽量放在开头或结尾，别指望它自己翻。 你读的那篇文章如果讲的是「每轮重塞」这件事本身，那没说错；但如果结论是「所以上下文必然一直涨」，那是没考虑上面这几种处理。你要是把链接贴出来我可以对照着看它说细到哪一步了。
