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

发布时间:2026/11/5 18:17:08

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/11/5 16:51:33

EasyU优启通PE维护盘实战指南:制作、启动与核心操作全解析

1. 为什么一个PE维护盘值得单独拿出来聊装系统、修引导、救数据、清病毒,这些活儿但凡干过几次的人都知道,真正决定效率的往往不是你手速多快,而是手边那套PE环境靠不靠谱。EasyU(圈内习惯叫优启通)就是在这个场景下被…

2026/11/5 16:26:13

Rust原来很简单二:所有权系统

Part 2 核心篇 —— 所有权系统 本篇覆盖 第 6 ~ 10 章:所有权、借用与引用、生命周期、字符串与切片、内存模型。 ⚠️ 这是全书最重要的一篇。 把它吃透,Rust 从此“很简单”;跳过它,你会处处碰壁。请慢下来,动手敲每一段代码。 第 6 章 所有权:Rust 的第一性原理 6…

2026/11/5 15:00:49

基于Hadoop+Spark的民宿智能推荐系统设计与实现

1. 项目概述:大数据时代的民宿智能推荐这个毕业设计项目融合了当前大数据领域最主流的技术栈,构建了一个完整的民宿推荐系统解决方案。作为一名长期从事大数据系统开发的工程师,我认为这个选题非常贴合实际应用场景——随着旅游业的复苏和共享…

2026/11/5 14:10:30

ADS122U04IPWR+STM32F427ZI工业级温度测量信号链设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 14:10:30

UART接口24位ADC搭配RS485,解决远距离温度监控难题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 14:10:30

UART接口24位ADC搭配PIC18F46K22的RTD与热电偶测温实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 15:39:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/4 21:04:25

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 0:02:07

多智能体协作系统架构设计与实践优化

1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中…

2026/11/5 0:02:07

大模型系统性入门实战指南:从原理到部署微调的全链路路线

提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#…

2026/11/5 0:02:07

鸿蒙文件系统沙箱机制解析与开发实践

1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的…

2026/11/5 15:39:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/4 21:04:25

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

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

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

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