跳转到内容

上下文管理

上下文管理 是对话持续进行的关键。当对话越来越长、工具输出越来越多时,系统通过 三层压缩机制 智能管理上下文窗口——保留关键信息,释放宝贵空间,让对话永不断裂。

层级名称触发条件压缩粒度成本
1Microcompact时间间隔单个工具结果
2Auto Compacttoken 达到阈值一批消息 → 摘要一次 LLM 调用
3Session Memory CompactAuto Compact 触发时会话记忆 → 摘要

Microcompact 是最轻量的压缩——不生成摘要,只清理占用大量空间的旧工具结果。

只有产生大量输出的工具才会被清理:

工具典型输出
📖 read文件内容
✏️ write写入结果
🔍 grep搜索结果
🔎 find文件列表
script脚本执行结果
策略触发条件原理
🕐 Time-based距上次 assistant 消息 > 60 分钟直接替换旧工具结果为占位符,保留最近 5 个

💡 Time-based 策略至少保留 5 个最近的工具结果,避免模型完全失去工作上下文。

当 Microcompact 不够用时,Auto Compact 启动——将一批旧消息压缩为一段精炼摘要。

配置项默认值说明
contextTokensLimit25,000上下文 token 上限
autoCompactBufferTokens13,000安全缓冲区
触发阈值12,000contextTokensLimit - autoCompactBufferTokens

Auto Compact 使用 9 部分结构 的提示词,确保摘要涵盖所有关键维度:

序号部分内容
1Primary Request and Intent用户的核心请求和意图
2Key Technical Concepts涉及的关键技术概念
3Files and Code Sections相关文件与代码片段(含完整代码)
4Errors and Fixes遇到的错误及修复方案
5Problem Solving问题解决过程
6All User Messages所有用户消息(非工具结果)
7Pending Tasks待处理的任务
8Current Work当前正在进行的工作
9Optional Next Step可选的下一步操作

压缩时不会丢弃所有旧消息,而是 保留最近的消息

配置项说明
minTokens10,000至少保留的 token 数
minTextBlockMessages5至少保留的有文本块的消息数
maxTokens40,000最多保留的 token 数

📌 API 不变量保护:保留消息中的 tool_result 必须能找到对应的 tool_use,压缩时会向前扩展保留范围以确保配对完整。

记忆系统 中有 Session Memory 时,压缩可以 零成本 完成:

这正是记忆系统与上下文管理的 交汇点——对话过程中持续积累的 Session Memory,在压缩时直接变成高质量摘要,无需额外调用 LLM。

压缩后,系统会自动恢复最近读取的文件,帮助模型快速回到工作状态:

配置项说明
最多恢复文件数5最近读取的 5 个文件
总 token 预算10,000所有恢复文件的总上限
单文件 token 上限2,000每个文件的最大 token

系统提示词由 SystemPrompt 配置项提供,作为 Agent 的 Instruction 传入。Agent 定义存在时,使用 Agent 的系统提示词;否则使用默认的系统提示词。

每次 API 调用前,消息经历完整的组装管线:

附件系统在对话过程中动态注入上下文信息:

附件类型注入时机说明
📋 AgentPrompt每轮AGENT.md 快照,包含 Agent 能力描述
📝 TodoList每轮待办事项列表
🧠 SessionMemory每轮最近 5 条会话记忆(最多 5,000 tokens)
🗂️ UserMemory每轮按重要性过滤的用户记忆