Open Agents 上下文管理:提示词压缩与缓存控制全解析

Open Agents 上下文管理:提示词压缩与缓存控制全解析 Open Agents 上下文管理提示词压缩与缓存控制全解析【免费下载链接】open-agentsAn open source template for building cloud agents.项目地址: https://gitcode.com/GitHub_Trending/op/open-agentsOpen Agents 是一个用于构建云端 AI 智能体的开源模板其核心 Agent 内置了一套精巧的上下文管理机制通过提示词压缩压缩历史工具调用数据和缓存控制标记可缓存的请求前缀两大手段让长对话不爆上下文窗口、同时显著降低 Token 成本。本文带你完整解析这套机制的工作原理。一、为什么 AI Agent 需要上下文管理AI 智能体在长任务中会不断调用工具读文件、执行命令、搜索代码……每轮工具调用和结果都会追加到对话历史里。这带来两个痛点上下文膨胀对话越长每次请求携带的历史越多最终撞上模型的上下文窗口上限成本浪费重复发送相同的历史内容意味着为相同的 Token 反复付费。Open Agents 在 packages/agent/context-management/ 目录下给出了两个针对性答案缓存控制解决重复付费提示词压缩解决历史膨胀。二、缓存控制让相同的请求前缀免费复用1. 核心思路增量缓存缓存控制由 cache-control.ts 中的addCacheControl函数实现。它专为 AnthropicClaude模型设计通过cacheControl: { type: ephemeral }标记告诉服务商这段前缀可以缓存对消息标记最后一条消息为缓存点让会话可以增量缓存——每轮对话只新增一小段内容前面的历史直接命中缓存按缓存价计费对工具只标记最后一个工具。因为 Anthropic 最多支持 4 个缓存断点工具标记与消息标记会共享配额因此 cache-control.ts 刻意只给最后一个工具打标记避免超限。对非 Anthropic 模型函数会原样返回数据不做任何修改——一套代码按需生效。2. 在 Agent 中的接入点缓存控制并非孤立的工具函数而是挂接在 Agent 生命周期的两个钩子上见 open-agent.tsprepareCall每次调用前对工具集执行缓存标记open-agent.tsprepareStep每个执行步骤前对消息列表执行缓存标记open-agent.ts。这样无论对话进行到哪一步发给模型的都是带缓存标记的最优请求。三、提示词压缩给历史工具数据瘦身1. 压缩什么——旧的工具调用与结果Agent 对话中占比最大的是tool-call工具调用请求和tool-result工具返回结果一次bash或文件读取动辄数千字符。Open Agents 的策略是保留最近使用的工具数据把冷数据压缩成一行通知。压缩算法的四个步骤全部在 aggressive-compaction-helpers.ts 中步骤函数作用① 建立索引indexToolCalls扫描所有消息为每个工具调用建立位置 → 唯一标识的索引② 找出候选findPendingCompactionCandidates排除最近还在用的工具调用剩下的才允许压缩③ 预估收益estimateCompactionSavings按4 个字符 ≈ 1 个 Token估算能省下多少 Token④ 执行压缩compactToolData把旧数据替换为简短的压缩通知2. 压缩前后对比压缩前一个工具结果可能是output: 5000 字符的完整文件内容 / 命令输出压缩后见 compactToolResultPartoutput: 该工具结果已被压缩以节省上下文工具调用部分则被替换为{ compacted: true, message: ... }compactToolCallPart。模型仍然知道这里发生过一次工具调用却不再需要为几千字符的历史买单。3. 两个巧妙的设计细节幂等保护isCompactedToolCallPart等判断函数会检查数据是否已被压缩过避免重复压缩造成通知套通知无 ID 兼容没有toolCallId的匿名工具结果通过计数方式单独统计findPendingCompactionCandidates保证任何来源的消息都能安全压缩。四、两者如何协同工作在 open-agent.ts 中可以看到完整的协作关系缓存控制守住新增内容——让每轮新对话只多付新增部分的钱提示词压缩清理陈旧内容——把不再被参考的历史工具数据瘦身防止上下文无限膨胀模块入口 context-management/index.ts 统一导出addCacheControl压缩助手则供上层按需调用两者正交、互不干扰。对使用这个模板的开发者来说这是一份可以直接借鉴的上下文经济学方案热数据走缓存、冷数据做压缩长任务的 Token 成本因此可以被控制在可预期的范围内。五、小结 上下文管理的代码集中在 packages/agent/context-management/逻辑独立、易于复用 缓存控制只标记最后一个工具与最后一条消息精准利用 Anthropic 的 4 断点缓存上限✂️ 提示词压缩保新弃旧按字符数估算收益约 4 字符/token幂等且安全 通过prepareCall/prepareStep钩子自动生效使用者无需任何额外配置。理解这套机制你不仅能更好地使用 Open Agents也能在自己的 Agent 项目里复制这套压缩 缓存的最佳实践。【免费下载链接】open-agentsAn open source template for building cloud agents.项目地址: https://gitcode.com/GitHub_Trending/op/open-agents创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考