CodeWhale v0.8.52 发布 —— 图片 attach 终于不再只是摆设,多模态模型这次真能看见了

图片 attach 的曲折修复
v0.8.51 的 changelog 写了一项「Multimodal image forwarding」,标了 #2584 和 #2607 两个 PR。但 release note 末尾有个不起眼的说明:这个改动是在 v0.8.51 tag 之后才合并的。换句话说,装了 v0.8.51 的用户,attach 图片后模型依然看不到——那个修复根本没有被包含进去。
v0.8.52 才是第一个真正包含这个功能的版本。Attached images 现在以 OpenAI 兼容的 image_url content blocks 发送(#2584, #2587, #2607),不是以前那种简单的 base64 嵌入。Claude Vision、GPT-4o、Gemini 这些多模态模型都能识别这个标准格式。
有意思的是,这个改动从 PR 合并到出现在可安装的 release 中,隔了一个完整的发布周期。原因是合并时间刚好错过了 v0.8.51 的打包窗口。
国内用户的 SiliconFlow 专属节点
以前国内用户用 SiliconFlow,走的是国际节点——不是不能用,但延迟和可用性都受影响。这次加了 siliconflow-CN 作为 provider 变种(#2588, #2615),共用现有的 SILICONFLOW_API_KEY 环境变量,不需要额外注册一套凭证。
这个设计的关键是不增加心智负担:同一个 API key、同一个 [providers.siliconflow] 配置块,只是在 provider picker 里多了一个「国内节点」选项。如果你是国内开发者,选这个就自动走国内 endpoint。
有一个小插曲:这个改动在合并时漏了 CLI 端的枚举分支,首次编译不通(#2616, #2618, #2619)。发布前补上了缺失的分支,确保用户拿到的是可用的版本。
子 agent 不再无限等待
Sub-agent 有一个长期痛点:如果子 agent 因为网络断开但进程没退出,父 agent 会一直等待,直到你手动 kill。v0.8.52 加了一个 heartbeat 超时机制(#2603, #2614, #2620):子 agent 定期向 manager 上报存活信号,超过 [subagents] heartbeat_timeout_secs(默认 300 秒)没有收到 heartbeat,自动 cancel,释放并发槽位。
这套机制是纯社区驱动的。反过来看,这个功能直到 0.8.52 才补上,说明项目早期没有把「子 agent 异常处理」当优先级——但现在 agent 嵌套越来越深,这个缺口迟早要填。
其他修复精选
Work 面板不再「失忆」(#2606, #2616):sidebar 缓存最后一次成功的 Work 摘要。当引擎短暂持有 todo/plan 锁时,面板不再显示「Work state updating...」这种无信息状态。
缓存计费双源合并(#2567, #2609):DeepSeek 用 prompt_cache_hit_tokens,OpenAI 用 cached_tokens——两个字段反映同一件事但名字不同。以前 CodeWhale 混着读,DeepSeek 上会算错缓存命中,TUI 中的费用估算随之偏高。这次统一用一个 telemetry source。
Cygwin/MSYS2 配置路径(#2369, #2610):Windows 上的 Cygwin/MSYS2 环境,$HOME 如果被显式设置了,配置路径应该优先用用户设定的值,而不是 fallback 到 Windows 的 home 目录。
Legacy SSE MCP 重连(#2597):老的 SSE 协议 MCP 服务器在 POST /messages 被关闭后,不会触发重连。现在和 SSE 流断开一样,走统一的 reconnect-and-retry 路径。
升级
# 首次安装
npm install -g codewhale
# 已安装用户优先用内置更新
codewhale update
⚠️ npm 包与 GitHub Release 可能有短暂延迟,
codewhale update直接走 GitHub Release 二进制,不受 npm 包滞后影响。
完整更新日志:GitHub Release
📢 关注我,获取最新开源更新日志和开发者工具动态。
#CodeWhale #多模态 #AI编程工具 #开源更新