上下文管理
上下文管理 是对话持续进行的关键。当对话越来越长、工具输出越来越多时,系统通过 三层压缩机制 智能管理上下文窗口——保留关键信息,释放宝贵空间,让对话永不断裂。
三层压缩架构
Section titled “三层压缩架构”| 层级 | 名称 | 触发条件 | 压缩粒度 | 成本 |
|---|---|---|---|---|
| 1 | Microcompact | 时间间隔 | 单个工具结果 | 零 |
| 2 | Auto Compact | token 达到阈值 | 一批消息 → 摘要 | 一次 LLM 调用 |
| 3 | Session Memory Compact | Auto Compact 触发时 | 会话记忆 → 摘要 | 零 |
Microcompact — 工具结果清理
Section titled “Microcompact — 工具结果清理”Microcompact 是最轻量的压缩——不生成摘要,只清理占用大量空间的旧工具结果。
可清理的工具
Section titled “可清理的工具”只有产生大量输出的工具才会被清理:
| 工具 | 典型输出 |
|---|---|
📖 read | 文件内容 |
✏️ write | 写入结果 |
🔍 grep | 搜索结果 |
🔎 find | 文件列表 |
⚡ script | 脚本执行结果 |
| 策略 | 触发条件 | 原理 |
|---|---|---|
| 🕐 Time-based | 距上次 assistant 消息 > 60 分钟 | 直接替换旧工具结果为占位符,保留最近 5 个 |
💡 Time-based 策略至少保留 5 个最近的工具结果,避免模型完全失去工作上下文。
Auto Compact — 自动摘要压缩
Section titled “Auto Compact — 自动摘要压缩”当 Microcompact 不够用时,Auto Compact 启动——将一批旧消息压缩为一段精炼摘要。
| 配置项 | 默认值 | 说明 |
|---|---|---|
contextTokensLimit | 25,000 | 上下文 token 上限 |
autoCompactBufferTokens | 13,000 | 安全缓冲区 |
| 触发阈值 | 12,000 | contextTokensLimit - autoCompactBufferTokens |
Auto Compact 使用 9 部分结构 的提示词,确保摘要涵盖所有关键维度:
| 序号 | 部分 | 内容 |
|---|---|---|
| 1 | Primary Request and Intent | 用户的核心请求和意图 |
| 2 | Key Technical Concepts | 涉及的关键技术概念 |
| 3 | Files and Code Sections | 相关文件与代码片段(含完整代码) |
| 4 | Errors and Fixes | 遇到的错误及修复方案 |
| 5 | Problem Solving | 问题解决过程 |
| 6 | All User Messages | 所有用户消息(非工具结果) |
| 7 | Pending Tasks | 待处理的任务 |
| 8 | Current Work | 当前正在进行的工作 |
| 9 | Optional Next Step | 可选的下一步操作 |
消息保留策略
Section titled “消息保留策略”压缩时不会丢弃所有旧消息,而是 保留最近的消息:
| 配置项 | 值 | 说明 |
|---|---|---|
minTokens | 10,000 | 至少保留的 token 数 |
minTextBlockMessages | 5 | 至少保留的有文本块的消息数 |
maxTokens | 40,000 | 最多保留的 token 数 |
📌 API 不变量保护:保留消息中的
tool_result必须能找到对应的tool_use,压缩时会向前扩展保留范围以确保配对完整。
Session Memory Compact
Section titled “Session Memory Compact”当 记忆系统 中有 Session Memory 时,压缩可以 零成本 完成:
这正是记忆系统与上下文管理的 交汇点——对话过程中持续积累的 Session Memory,在压缩时直接变成高质量摘要,无需额外调用 LLM。
压缩后的上下文恢复
Section titled “压缩后的上下文恢复”压缩后,系统会自动恢复最近读取的文件,帮助模型快速回到工作状态:
| 配置项 | 值 | 说明 |
|---|---|---|
| 最多恢复文件数 | 5 | 最近读取的 5 个文件 |
| 总 token 预算 | 10,000 | 所有恢复文件的总上限 |
| 单文件 token 上限 | 2,000 | 每个文件的最大 token |
系统提示词组装
Section titled “系统提示词组装”系统提示词由 SystemPrompt 配置项提供,作为 Agent 的 Instruction 传入。Agent 定义存在时,使用 Agent 的系统提示词;否则使用默认的系统提示词。
消息组装流程
Section titled “消息组装流程”每次 API 调用前,消息经历完整的组装管线:
附件系统在对话过程中动态注入上下文信息:
| 附件类型 | 注入时机 | 说明 |
|---|---|---|
| 📋 AgentPrompt | 每轮 | AGENT.md 快照,包含 Agent 能力描述 |
| 📝 TodoList | 每轮 | 待办事项列表 |
| 🧠 SessionMemory | 每轮 | 最近 5 条会话记忆(最多 5,000 tokens) |
| 🗂️ UserMemory | 每轮 | 按重要性过滤的用户记忆 |
- 记忆系统 — 深入了解 Session Memory 和 User Memory 的工作原理
- Remote Tool Calling — 了解工具调用的完整生命周期
- 会话管理 — 了解上下文管理在会话中的位置