Kiro.rs 0.6.5
主题:Claude Code 字面工具调用容错 + 退化复读熔断。这一版聚焦 Anthropic 兼容层在上游退化输出下的稳定性:当 Claude Code 场景中本应结构化返回的工具调用泄漏成字面 <invoke> 文本时,中转层会在严格边界内恢复为真实 tool_use;同时新增异常引导词复读熔断,避免 call / count / card 等垃圾文本刷屏、耗尽输出预算或污染会话历史。
✨ 新功能 — 来自社区贡献
感谢以下 PR 贡献者 🙏
- 字面
<invoke>工具调用泄漏容错(PR #15 @xiaojiou176):当上游把<invoke name="...">...</invoke>作为普通文本输出时,流式路径会在行首、非代码围栏、工具名已声明的前提下恢复为结构化tool_use,避免客户端看到原始 XML 或漏执行真实工具调用。web_search agentic loop 复用同一嗅探逻辑,但web_search本身仍作为内部搜索处理,不会作为 raw clienttool_use暴露给宿主。 - 退化 stray token 复读熔断(PR #16 @xiaojiou176):流式文本出口会检测
call/count/card等引导词的连续独占行复读,超过阈值后丢弃本轮后续文本,避免上游退化输出刷屏和耗尽max_tokens。非流式与 web_search 路径也会在<invoke>嗅探前折叠同类复读洪水,避免垃圾文本进入最终响应或后续会话历史。
🛠 修复
- 避免重复执行同一工具调用(PR #15 @xiaojiou176):若退化模型同时返回文本泄漏和结构化
tool_use,会按工具名与规范化 input 去重,防止客户端收到两个相同调用并重复执行。超长工具名被缩短发送给上游后,泄漏恢复路径会识别短名并还原为客户端原始工具名。 - 保留 stray token 剥离前的换行(PR #16 @xiaojiou176):剥离
call/count/card独占行时保留前一行换行,避免把叙述文本和后续<invoke>压到同一行而漏判真实工具调用。
⚡ 优化
- 减少 invoke 嗅探缓冲复制(PR #16 @xiaojiou176):
drain_invoke_sniff_buffer改为一次性取出本地 buffer 处理,避免退化大缓冲下每轮 clone 带来的额外开销。
Docker image:
zyphrzero/kiro-rs:0.6.5
zyphrzero/kiro-rs:latest
Release assets include SHA256SUMS.txt for checksum verification.