
🧠 记忆锚点:上下文管理不是盲目追加历史,而是围绕当前任务,在 Token 预算内选择、压缩和检索可溯源状态。
💡 答案要点
上下文管理策略:
| 策略 | 说明 | 适用场景 |
|---|---|---|
| 滑动窗口 | 只保留最近 N 轮对话 | 简单聊天 |
| 摘要压缩 | 用 LLM 总结历史对话 | 长对话 |
| 向量检索 | 把历史存向量库,按需检索 | 知识库问答 |
| 分层管理 | 重要信息摘要 + 最近对话原文 | 复杂任务 |
实现示例:
python
class ConversationManager:
def __init__(self, max_tokens=4000):
self.max_tokens = max_tokens
self.history = []
def add_message(self, role, content):
self.history.append({"role": role, "content": content})
# 如果超出限制,压缩历史
if self.get_token_count() > self.max_tokens:
self.compress()
def compress(self):
# 用 LLM 总结前 50% 的对话
summary = llm.summarize(self.history[:len(self.history)//2])
self.history = [
{"role": "system", "content": f"历史对话摘要:{summary}"},
*self.history[len(self.history)//2:]
]面试话术:
"多轮对话的核心是平衡上下文完整性和成本。我用分层策略:最近 3 轮保留原文,更早的对话用 LLM 总结。同时加入向量检索,如果用户提到之前的内容,可以从向量库检索相关历史,而不是盲目压缩。"