- [流水线通用归一化与签名保真] Tool Call ID 全链路规范化,根治多轮思考工具调用 400 报错 (Fixes #3529, #3531, Thanks to @Mortalit, @ddmixi):
- 根因根除: 客户端(如 OpenCode、Antigravity IDE)在执行本地工具后将结果发回第二轮生成时,常剥离 tool_id 中的下划线(如将
call_573077转换为call573077),导致网关从缓存匹配签名失败,向上游发出的functionCall缺失签名而引发 Google 报错Function call is missing a thought_signature in functionCall parts (400)。 - 流水线 Step 0 统一前置清洗: 入站流水线
InboundThinkingPipeline第一道节点将上下文内所有functionCall.id与functionResponse.id全量规范化为带下划线的标准格式(call_<digits>),使得后续水合、签名缓存与终审门禁均在纯净规范上下文之上运行。 - 缓存与持久化双向兼容: 统一
tool_signatures与thinking_records表及 L1 内存缓存以归一化 ID 存储;点查时自动兼容未归一化的历史遗留记录并执行静默自愈。 - 思考还原强关联:
ThinkingStore的by_tool索引与 Phase 1 工具调用锚定匹配统一对齐归一化 ID,彻底终结工具调用轮次签名断链死循环。
- 根因根除: 客户端(如 OpenCode、Antigravity IDE)在执行本地工具后将结果发回第二轮生成时,常剥离 tool_id 中的下划线(如将
- [签名保真与在位自愈根治] 根除 Claude 适配层破坏性 Base64 解码,支持原始 Protobuf 签名并引入反向入库优化自愈机制:
- 根除破坏性 Base64 解码: 彻底移除
claude/streaming.rs与claude/response.rs中误将 Gemini 签名尝试用String::from_utf8转为原始字符串的逻辑。Gemini 的thoughtSignature为原始 Protobuf 二进制(首字节为0x12),当字节序列全在 ASCII 范围时曾被硬解为 40 字节控制字符,导致下轮带回时因长度< 50被当做无效数据过滤而引发上游签名校验失败。 - 阈值放宽与 Protobuf 自动容错: 全协议统一将最小有效签名校验长度从 50 放宽至 32;在
SignatureCache、ThinkingStore和proxy_db增加对首字节0x12的二进制 Protobuf 签名的特征识别与自动转码标准 Base64 兜底保护。 - 全链路反向入库自愈写回 (In-Place Self-Healing Write-Back):
tool_signatures表:load_tool_signature读取历史记录时若命中旧版损坏或二进制签名,就地自动修复并通过save_tool_signature反向覆写更新 SQLite。thinking_records表:load_thinking_by_tool_id、load_thinking_by_signature、load_thinking_by_fingerprint与 UI 兜底展示检索时,若命中脏签名,立即在位执行UPDATE thinking_records SET signature = ? WHERE id = ?治愈历史数据。- 轮次签名锚定时,若锚点为工具调用,通过
cache_tool_signature同步热刷入 L1 内存缓存并反向持久化。
- 根除破坏性 Base64 解码: 彻底移除
- [首个非思考 Part 锚点签名保障] 严格对齐官方报文,杜绝占位思考块注入:
- 废除假占位符: 严格遵守官方形态,无实质思考内容(占位/空思考)时绝不强行注入
..././·等占位思考块。 - 权威锚点保真: 确保每轮第一个非思考 part(无论正文还是工具调用)作为权威锚点,均稳定携带有效的
thoughtSignature,杜绝 Gemini 上游签名校验失败。 - 清理无用压缩逻辑: 移除旧版将历史思考块压缩为
"..."的 Layer-2 占位压缩代码,保留纯净的上下文回退与摘要机制。
- 废除假占位符: 严格遵守官方形态,无实质思考内容(占位/空思考)时绝不强行注入
- [原生自动更新增强] 支持自定义更新源、原生更新器检查与下载跳转:
- 多端点原生更新检查: 新增
check_native_updateTauri 指令,支持根据渠道动态探测并传入实际可用的updater_json_url(支持 Beta 预览与 Stable 正式双端点)。 - SemVer 版本比对器扩展: 原生更新器集成预发布版本兼容比对逻辑,并在更新失败时优雅回退至系统浏览器打开外部直链下载,提升全平台更新可用性。
- 多端点原生更新检查: 新增
- [Docker 部署与文档规范] 补充预览版镜像拉取指引并修复代码块排版:
- 在
README.md、README_EN.md与docker/README.md明确增加拉取和运行独立 Beta 预览版 Docker 镜像(如lbjlaq/antigravity-manager:v4.8.4-beta.1)的说明与命令示例。 - 修复 Docker 部署章节 Markdown 围栏未独立闭合导致后续说明文字与标题被误高亮为 Bash 代码的问题。
- 补充 JeikCode 快速接入指南与多工具调用实践。
- 在
Full Changelog: v4.8.3...v4.8.4