Weave Router压缩级联详解:tool-result清理、摘要与trim的完整链路

发布时间:2026/9/17 20:50:36

Weave Router压缩级联详解:tool-result清理、摘要与trim的完整链路 Weave Router压缩级联详解tool-result清理、摘要与trim的完整链路【免费下载链接】routerModel router for agentic systems. Routes every prompt to the right model in 50ms. Cut costs 40-70% with just an endpoint change.项目地址: https://gitcode.com/GitHub_Trending/router101/routerWeave Router 是一个面向 Agent 系统的模型路由器能在 50ms 内把每个 prompt 路由到最合适的模型仅改一个 endpoint 就能降低成本 40-70%。除了路由它还内置了一条上下文压缩级联compaction cascade当会话过长、逼近模型上下文窗口时按「tool-result 清理 → 结构化摘要 → 渐进 trim」三层逐级收缩请求让超长会话不会死在无可用模型上。本文带你走完整条链路。为什么 Agent 会话需要压缩级联Agent 场景下上下文膨胀的主力不是聊天文本而是工具调用结果——一次read文件、一次grep搜索动辄几千 token。会话越跑越长直到超过所有可用模型的窗口路由层无模型可派请求直接失败。Weave Router 的做法是主动压缩在路由之前就把过长的会话压瘦而不是等溢出报错。核心编排在 internal/proxy/compaction.go// maybeCompact 在 needed ≥ compactionTriggerPct * MaxWindow 时运行级联 // (1) 清理旧 tool results(2) 用窗口感知的模型做摘要(3) 渐进 trim。触发条件85% 窗口阈值而不是溢出才动手级联的入口判断在 maybeCompact基准所有可用路由模型中最大的有效上下文窗口maxEligibleContextWindow触发线默认是最大窗口的85%DefaultCompactionTriggerPct 0.85可用环境变量ROUTER_COMPACTION_PCT调整设为 0 则完全关闭需求值请求体 token 估算 输出预留needed() 估算 OutputReserve。为什么不在溢出时才压因为摘要模型也需要吃下整段历史。提前在 85% 处动手摘要器还有足够窗口摄入完整历史压缩质量才有保证。Tier-1tool-result 清理零模型调用最便宜的一层第一层完全本地执行、不调用任何模型保留最近 5 个工具结果其余全部替换为占位符[Old tool result content cleared]。实现见 internal/translate/compaction.go占位符刻意模仿 Claude Code 自己的措辞让模型或人类明白内容是被省略而非丢失结构完整保留tool_use块、消息数量、配对关系都不动只换tool_result的正文保证请求在协议层面依然合法同时覆盖 Anthropic / OpenAI / Gemini 三种线格式。单元测试 TestClearOldToolResults_Anthropic 验证了旧结果被替换、最近结果逐字保留、消息总数不变。Tier-1 若把请求压回触发线以下级联直接结束——很多工具密集型会话到这一层就够了。Tier-39 段式结构化摘要Tier-1 不够时进入最重的一层调用模型对整段历史做结构化摘要然后用「摘要 最近 12 轮」重写历史。选一个吃得下的摘要模型selectCompactionSummarizer 按候选优先级挑选会话当前钉住的 Anthropic 模型prompt cache 是热的摘要更快更省部署配置的摘要模型ROUTER_COMPACTION_MODEL大窗口家族模型。候选模型必须满足两个硬条件属于 precompaction 策略评审目录、且窗口 ≥ 历史 token 摘要输出预留4000 8000 tokens。没有任何模型吃得下时跳过摘要直接走 trim——失败绝不阻塞主流程。摘要 Prompt9 个编号段落摘要指令在 internal/proxy/handover.go借鉴了 Claude Code 的压缩格式要求输出 9 段段落内容1主要请求与意图逐条明细2关键技术概念3文件与代码片段含为什么重要4错误与修复5问题解决路径为何选此方案6所有用户消息逐字引用约束不可转述7待办任务8当前工作状态精确到文件名9下一步动作输出上限 4000 tokensDefaultCompactionMaxTokens超时 90 秒DefaultCompactionTimeout。摘要比普通切换 handover 的 800 token 上限大得多——因为这段摘要是被省略历史的唯一记录必须承载任务状态而不只是一句话概要。摘要后安全重写RewriteForCompaction 把历史重写为「摘要带[handover summary]标签 最近 12 条非 system 消息」有两个细节保证正确性对齐用户文本轮保留窗口必须从一条带文本的 user 消息开始保证请求仍有一个路由边界剥离孤儿工具结果如果保留窗口的起点恰好是某个tool_result而它配对的tool_use已被省略则该结果被剥离避免协议非法。还有一个回滚保护如果摘要重写后请求反而放不下摘要比原历史更长整个重写被丢弃回退到压缩前的状态——宁可交给 trim也不让摘要把本来能服务的请求搞坏。Rescue Trim渐进裁剪兜底摘要也没救回来时走救援裁剪 TrimLastNMessages按12 → 6 → 3 → 1的档位逐级只保留最近 N 条消息每裁一级就检查一次是否放得下。如果连只留最后一条用户消息都超出最大窗口级联返回哨兵错误ErrContextWindowExceeded映射为 HTTP 413明确告诉调用方这段历史超过了所有可用模型的容量。两个容易忽略的设计① 让渡给客户端。Claude Code 这类客户端自己会做压缩若路由池能容纳它自报的压缩阈值Weave Router 就不插手DeferToClient避免双重压缩。Codex / Gemini CLI 则原样透传级联始终待命。② 摘要独立计费。Tier-3 的摘要调用会作为独立账目行入账billCompactionSummary使用量进遥测——你为压缩付出的 token 一目了然。相关测试覆盖了各层级行为见 internal/proxy/compaction_test.go部署配置入口在 cmd/router/main.go。总结一条链路的完整心智模型请求进入 → 估算 token ≥ 85% 最大可用窗口 ├─ 否 → 直接路由 └─ 是 → Tier-1 清理旧 tool-result保留最近5个 ├─ 回到阈值内 → 路由 └─ 否 → Tier-3 结构化摘要 保留最近12轮 ├─ 放得下 → 路由 └─ 否 → Rescue trim12→6→3→1 渐进裁剪 ├─ 放得下 → 路由 └─ 否 → HTTP 413这套先便宜后昂贵、每层失败都有兜底的级联设计正是 Weave Router 能把超长 Agent 会话稳稳接住、而不是粗暴报 413 的关键。【免费下载链接】routerModel router for agentic systems. Routes every prompt to the right model in 50ms. Cut costs 40-70% with just an endpoint change.项目地址: https://gitcode.com/GitHub_Trending/router101/router创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/17 21:50:50

SonarQube代码质量平台落地实践:从部署到CI流水线集成

接手这类“项目简介”性质的分享,其实是最考验功力的。光看“SOF”三个字母,很多人可能会觉得陌生,但你只要在代码质量治理这个圈子混过,立刻就明白了——这就是团队内部的一次静态代码扫描平台落地专项。我当时的项目代号就叫SOF…

2026/9/16 12:52:37

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/17 0:03:13

WiFi密码安全测试:从原理到实战的字典暴力破解指南

1. 写在前面:我为什么要研究WiFi密码这件事先交代一下背景。我身边有不少朋友,家里的WiFi密码常年是"12345678"或者"88888888",问就是"好记"。直到有一次,隔壁邻居蹭网蹭到我家路由器后台都进不去&…

2026/9/17 0:03:13

redis-py服务控制与监控函数实战:从ping到slowlog的巡检指南

我用 redis-py 写了快五年的业务代码,坦白说,真正让我觉得这个客户端“像一个成熟工具箱”的,不是 get/set 那套基本操作,而是它那批专门做服务控制与状态监控的辅助函数。日常开发里,大家把redis.Redis(host..., deco…

2026/9/17 0:03:13

SpringBoot+Vue3实现中小企业设备管理系统开发实践

1. 项目概述与核心价值中小企业设备管理系统是制造业、服务业等领域的基础信息化工具。传统设备管理往往依赖Excel表格或纸质记录,存在数据孤岛、流程混乱、维护成本高等痛点。这套基于Java SpringBootVue3MyBatis的技术方案,通过前后端分离架构实现了设…

2026/9/16 22:55:57

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/16 22:56:09

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/16 22:56:16

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码