- [流水线通用拓扑稳定分区与并发多模态回执治理] 进站流水线实现协议无关稳定双阶段分区,彻底根除并发多图 tool_result 插队引发的 Claude 上游 400 校验截断 (Fixes #3560, #3094, Thanks to @Xueshen6):
- 协议无关稳定双阶段分区 (Stable Partition): 在统一进站流水线(
InboundThinkingPipeline::normalize_function_response_roles)中,针对所有包含functionResponse的回执轮次实施严格的稳定分区。无论客户端发来何种穿插形态或拆散轮次,流水线统一保证该轮中所有functionResponse连续置顶在前,所有随行多模态媒体(inlineData、图片等)与辅助部件统一延后沉底([fs1, fs2, ..., img1, img2, ...])。 - 根治 Claude 上游转译截断与 400 报错 (Fixes #3560, #3094): 彻底消除了单轮并发读取多图时随行图片插队阻断工具匹配状态机的问题。上游逆向转译器在面对 Claude 目标模型时,可连续无阻碍地完成上一轮所有
tool_use与tool_result的 1:1 状态机闭环,彻底根除tool_use ids were found without tool_result blocks immediately after单侧缺失报错。 - 全模型拓扑同构衔接: Gemini 原生目标模型(
role: "model")在双阶段分区后自然衔接随行媒体拆分逻辑(zwx-patch),产出纯净连续的model [fs1, fs2]与紧随其后的user [img1, img2],状态机零断层。 - 适配器瘦身与公共化收拢: 清理 Claude 适配器(
claude/request.rs)在循环内即时穿插 push 图片的局部缺陷,彻底废除历史残留的"result"方言统一对齐官方标准"output";工具回执空文本统一在流水线层注入"Command executed successfully."防幻觉兜底。
- 协议无关稳定双阶段分区 (Stable Partition): 在统一进站流水线(
- [流水线协议无关 Token 估算引擎、Serde 缺省容错与终态安全规整] 彻底消除 Agent 算力致盲与 400 校验死锁,全协议共享高并发估算缓存 (Fixes #3561, #3562, Thanks to @cubelikeplayDaniel):
- 协议无关通用 Token 估算引擎与全局高并发缓存 (
PipelineTokenEstimator, Fixes #3562): 在流水线核心层引入跨协议通用的PipelineTokenEstimator与基于请求特征 SHA256 摘要的全局高并发内存缓存(TokenEstimationCache)。统一支持 Canonical Gemini IR、Claude、OpenAI 原生报文及多模态媒体计算;缓存命中< 0.05ms极速返回,彻底免除重复遍历长上下文的 CPU 负载与网络往返开销。 - Claude
/v1/messages/count_tokens官方 Schema 严格合规 (Fixes #3562): 彻底替换历史全零 Stub 占位,全面接入通用估算引擎;严格对齐 Anthropic 官方规范仅返回{"input_tokens": <int>},彻底移除非标冗余output_tokens字段,杜绝下游 SDK 类型校验报错与 Agent 上下文修剪“致盲”引发的窗口超限。 - Gemini 端点与离线降级极速感知: Gemini
:countTokens全面接入通用估算作为离线/上游限流兜底;内部流量监控未携带上游 usage 时统一步调估算,全链路逻辑归一。 - Serde 反序列化缺省字段容错 (Fixes #3561): 为
ContentBlock::ToolUse.input增加缺省空对象{},为ToolResult.content增加#[serde(default)]容错,并同步防御ServerToolUse与WebSearchToolResult,彻底根治 Claude Code CLI 发起无参工具或空回执时触发的HTTP 400 untagged enum MessageContent报错。 - 终态轮次安全规整斩断 Gemini 400 死锁 (Fixes #3561): 修正
ensure_gemini_payload_ends_with_user防御逻辑。针对进站流水线把 Gemini 工具回执对齐为role: "model"的规范形态,只要末尾为model轮次(无论包含文本、functionCall还是functionResponse),一律注入中性合规user引导轮次,杜绝 Google Gemini 上游严格校验抛出400 Requests ending with a model turn are not supported。
- 协议无关通用 Token 估算引擎与全局高并发缓存 (
- [强制工具调用全协议治理与流水线透传保护] 贯彻客户端有就传没有就不传原则,彻底根治 tool_choice / functionCallingConfig 瘫痪 (Fixes #3562, Thanks to @cubelikeplayDaniel):
- 适配器特性归一化 (
map_claude_tool_choice_to_gemini,map_openai_tool_choice_to_gemini): 在 Claude 模型定义补齐tool_choice声明,并在 Claude 与 OpenAI 协议适配器中将客户端传入的tool_choice(auto,any,required,none, 指定函数名等)精确翻译为 Google Gemini 标准的toolConfig.functionCallingConfig,消除协议方言鸿沟。 - 流水线拓扑治理原则落地(有就传,没有就不传): 彻底废除进站流水线一刀切强行剥除
toolConfig的历史激进逻辑。客户端未指定时不主动伪造注入任何配置,100% 保持官方 IDE 干净拓扑同构;客户端显式指定时完整保留并置于tools之后有序发送至上游,彻底解禁各类 Coding Agent(LangChain、LlamaIndex 等)强制调用指定工具的核心能力。
- 适配器特性归一化 (
- [Claude Cowork 响应式自愈压缩门禁与特定 Agent 收纳架构] 流水线四段式分流破除超长上下文卡死与二次误杀,前端首发 Claude Desktop 独立可调配置 (Fixes #3563, Thanks to @cubelikeplayDaniel):
- 四段式全链路生命周期感知与自愈分流 (Pipeline First):
- 分流 A(生命线放行): 识别 Header
x-stainless-helper: compaction与 Prompt 官方总结签名,全协议通用无条件直通,绝对不误杀压缩请求; - 分流 B(已压缩接续保护 - Post-Compaction Immunity): 识别
This session is being continued...或已注入<summary>,已提纯会话赋予长上下文永久豁免,由 Gemini 1M 承接绝不再二次拦截,彻底消除客户端This conversation is too long弹窗崩溃; - 分流 C(超限假报警门禁): 仅在用户显式开启且双重确权(tools 包含
mcp__cowork/mcp__workspace)且未命中 A/B 时介入,达到门限时返回 Anthropic 官方 400 假报警,激活 Desktop 原生 Summarizer 打上compact_boundary自愈折叠历史与截图,恢复秒级极速响应; - 分流 D(常规透传): 普通请求 100% 保持纯净线缆直通,完全保留 Gemini 100万 Token 超长上下文优势。
- 分流 A(生命线放行): 识别 Header
- 前端模型配置新增「特定 Agent 配置」独立收纳菜单: 在多模态设置下方增设专属折叠卡片,首发 Claude Desktop 板块,提供开关与自由调节的门限数字编辑框(默认 200,000,步长 10,000,带快捷预设)和安全确权说明。
- 全屏截图多模态精准折算: 在
PipelineTokenEstimator中将全屏截图 Base64 精确折算为标准的 ~1600 tokens/张,并在工具回执中剥离 Base64 计算,消除了 80+ 张全屏截图被抹零或误算爆的失真问题。
- 四段式全链路生命周期感知与自愈分流 (Pipeline First):
Full Changelog: v4.8.6-beta.5...v4.8.6-beta.6