Cherry Studio 升级 @ai-sdk/deepseek 至 2.0.57:修复 DeepSeek 视觉模型图片输入被丢弃的问题
Cherry Studio 升级 ai-sdk/deepseek 至 2.0.57修复 DeepSeek 视觉模型图片输入被丢弃的问题【免费下载链接】cherry-studio Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端项目地址: https://gitcode.com/CherryHQ/cherry-studio导读本文基于仓库.changeset/deepseek-vision-image-input.md这一变更记录讲解 Cherry Studio 如何通过将ai-sdk/deepseek升级到 2.0.57使 DeepSeek 视觉模型能够真正接收用户消息中的图片内容。此前旧版本 SDK 会把多模态 user 消息拍扁成纯文本字符串丢掉所有非文本部分导致视觉模型拿不到图片。读完本文你将了解这一回归的成因、修复方案在仓库中的落点SDK 版本解析、provider 注册、本地补丁清理以及仓库中可验证该能力的数据与测试依据。变更内容概览.changeset/deepseek-vision-image-input.md是一份针对cherrystudio/ai-core包的 patch 级变更声明核心内容可概括为两点升级依赖将ai-sdk/deepseek升级到2.0.57使 DeepSeek 视觉模型可以接收图片输入修复回归旧版本会把 user 消息扁平化为纯字符串plain string丢弃所有非文本部分同时该包不再需要本地补丁no longer patched locally。由于是patch级别的 changeset该变更被归类为 bug 修复而非破坏性变更遵循了 contrib/development.md 中关于语义化版本的管理约定。问题根因多模态消息被拍扁成纯字符串在 AI SDK 的多模态消息模型中一条 user 消息由content数组组成数组中可同时包含文本部分与图片部分。仓库测试 AiService.test.ts 展示了这种消息形态messages: [{ role: user, content: [{ type: image, image: new Uint8Array() }] }]当用户向视觉模型发送这张图里有什么 描述文字时消息内容在 SDK 层面应当被序列化为类似 OpenAI Chat Completions 的多模态格式content为数组含type: image_url/type: text等部分。旧版本ai-sdk/deepseek的问题在于它在构造请求时把整个content数组拼接成一个普通字符串字符串化过程中非文本部分图片被直接丢弃。结果就是视觉模型收到的请求里只有文字、没有图片图片理解能力形同虚设。这一点在 changeset 原文中有明确表述The previous version flattened user messages into a plain string and dropped every non-text part旧版本将 user 消息扁平化为纯字符串并丢弃所有非文本部分。修复方案升级 ai-sdk/deepseek 到 2.0.57修复方式不是打本地补丁去覆盖 SDK 的序列化逻辑而是直接升级上游依赖让新版 SDK 自身具备正确的多模态消息序列化能力变更记录.changeset/deepseek-vision-image-input.md受影响包cherrystudio/ai-core升级对象ai-sdk/deepseek2.0.57锁文件 pnpm-lock.yaml 中记录了ai-sdk/deepseek2.0.57的解析条目Node 18peer 依赖zod^3.25.76 || ^4.1.8与 changeset 声明保持一致。仓库中同时存在更新的2.0.62解析条目同文件第 2167 行说明依赖树中保留了多个版本以供不同导入方解析。仓库中的落地证据1. DeepSeek provider 的创建入口cherrystudio/ai-core通过动态导入的方式按需创建 DeepSeek provider见 initialization.tscreate: async (settings) (await import(ai-sdk/deepseek)).createDeepSeek(settings)这里从ai-sdk/deepseek包导入createDeepSeek工厂函数。正因为 provider 创建直接依赖该 SDK 包SDK 版本从会拍扁消息的旧版升级到 2.0.57 后所有经由 ai-core 发往 DeepSeek 的多模态请求都会自动获得正确的图片传输行为无需改动业务层代码。2. 视觉模型在 Provider Registry 中的声明仓库的 provider 目录packages/provider-registry/明确声明了支持图片输入的 DeepSeek 视觉模型。在 creators/deepseek.ts 中{ id: deepseek-v4-flash-vision-exp, name: DeepSeek V4 Flash Vision Exp, family: deepseek-flash, capabilities: [function-call, image-recognition, reasoning, structured-output], contextWindow: 1048576, maxOutputTokens: 393216, inputModalities: [text, image], outputModalities: [text], ... }关键字段字段值说明iddeepseek-v4-flash-vision-exp视觉实验版模型标识capabilities含image-recognition声明模型具备图片识别能力inputModalities[text, image]输入模态包含图片是 SDK 允许下发图片数据的模型侧前提outputModalities[text]输出为纯文本contextWindow/maxOutputTokens1048576 / 393216百万级上下文与输出上限同文件第 51-63 行的deepseek-flashDeepSeek V4.1 Flash同样声明了image-recognition能力与inputModalities: [text, image]。此外providers/deepseek.ts 中为deepseek-v4-flash-vision-exp配置了三种可用的协议端点openai-responses、openai-chat-completions、anthropic-messages说明该模型在多种端点形态下都可用。3. 本地补丁已移除changeset 提到该包 is no longer patched locally不再需要本地补丁。对比 patches/ 目录可验证仓库中仍保留着ai-sdk__anthropic.patch、ai-sdk__google3.0.113.patch、ai-sdk__openai-compatible2.0.72.patch、ai-sdk__openai3.0.109.patch、ai-sdk__react3.0.187.patch等一批对 AI SDK 相关包的本地补丁但不存在ai-sdk__deepseek.patch。这说明 DeepSeek 相关能力完全交由上游 2.0.57 版本负责Cherry Studio 不再通过 pnpm patch 机制改写其源码——这对维护者而言意味着更少的版本升级摩擦和更低的被上游变更破坏的风险。4. 相关测试佐证provider-registry 的测试套件对 DeepSeek 视觉模型进行了覆盖provider-endpoint-matrix.test.ts将deepseek-v4-flash-vision-exp纳入端点矩阵校验验证其在各协议端点下的可用性catalog-invariants.test.ts校验视觉模型的定价与同系列deepseek-v4-flash保持一致等目录不变式provider-reasoning-contracts.test.ts验证视觉模型的推理契约。主进程侧 AiService.test.ts 也包含携带{ type: image, image: new Uint8Array() }图片部分的 user 消息用例从端到端角度印证了图片作为独立消息部分传输这一多模态消息模型在项目中的实际使用方式。对使用者与开发者的实际意义用户侧升级后在 Cherry Studio 中向 DeepSeek 视觉模型如deepseek-v4-flash-vision-exp、deepseek-flash发送带图片的对话图片数据能够随请求送达模型而不是在序列化阶段被丢弃。图片输入的具体传输通道由 AiService.ts 中的图片传输注册表imageTransportRegistry等机制统一管理模型侧是否接收图片则受 provider registry 中inputModalities的约束。开发者侧对于基于cherrystudio/ai-core构建 provider 的开发者应确保ai-sdk/deepseek不低于 2.0.57否则多模态 user 消息会被旧版 SDK 拍扁成纯文本视觉模型将静默丢失图片输入。维护者侧DeepSeek 包已脱离本地补丁体系升级上游 SDK 时无需再同步维护 patch 文件但仍需在升级后回归验证 provider-endpoint-matrix 与 catalog-invariants 等测试确保视觉模型的端点矩阵、定价与推理契约不被破坏。小结.changeset/deepseek-vision-image-input.md记录了一次典型的上游修复、本地收敛式 bug 修复通过把ai-sdk/deepseek升级到 2.0.57让 DeepSeek 视觉模型重新获得图片输入能力同时移除本地补丁、简化依赖维护。该变更与仓库中 aiCore 的 provider 初始化、provider-registry 的视觉模型声明以及配套测试共同构成完整闭环是理解 Cherry Studio 多模态消息在 SDK 层的序列化边界与依赖管理策略的良好切入点。【免费下载链接】cherry-studio Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端项目地址: https://gitcode.com/CherryHQ/cherry-studio创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

oh-my-openagent 的 ULW 自动续跑指令:深入解析 omo-codex 的 ulw-execute-continuation 机制

oh-my-openagent 的 ULW 自动续跑指令:深入解析 omo-codex 的 ulw-execute-continuation 机制

oh-my-openagent 的 ULW 自动续跑指令:深入解析 omo-codex 的 ulw-execute-continuation 机制 【免费下载链接】oh-my-openagent OmO: Just type "mass ulw" keyword with your prompt. Now you are the master of graph engineering. 项目地址: https:…

2026/9/24 18:53:45 阅读更多 →
SpringBoot 2.7.18在线教育系统:可运行可答辩的毕设工程实践

SpringBoot 2.7.18在线教育系统:可运行可答辩的毕设工程实践

简介:本资源是一份面向计算机专业本科生的毕业设计论文,聚焦SpringBoot技术栈构建B/S架构在线教育系统,适用于Java Web开发初学者与毕业设计实践者。论文完整覆盖系统可行性分析、多角色功能设计(含管理员、教师、用户三级权限&am…

2026/9/24 18:52:12 阅读更多 →
深度解析 LifeOS Cortex:不部署任何服务,让本地记忆库可检索、可验证、可拒写

深度解析 LifeOS Cortex:不部署任何服务,让本地记忆库可检索、可验证、可拒写

深度解析 LifeOS Cortex:不部署任何服务,让本地记忆库可检索、可验证、可拒写 【免费下载链接】LifeOS ⛰️ LifeOS — The universal AI Harness designed to move you from Current to Ideal state in both life and work. 项目地址: https://gitcod…

2026/9/22 17:51:09 阅读更多 →

最新新闻

Flutter在OpenHarmony上的家庭相册实战:分组设计与性能优化

Flutter在OpenHarmony上的家庭相册实战:分组设计与性能优化

做 OpenHarmony 应用也有一段时间了,最近刚好在做一个家庭相册 App 的实战项目,框架用的是社区维护的 Flutter for OpenHarmony,功能里最有意思、也是最花心思的部分,就是“家庭分组”的实现。整个项目做完,我对 Flutt…

2026/9/24 18:58:32 阅读更多 →
AVEVA InTouch HMI底层原理与工业确定性设计解析

AVEVA InTouch HMI底层原理与工业确定性设计解析

1. 项目概述:为什么AVEVA InTouch HMI在工业现场仍被老工程师悄悄压箱底? AVEVA InTouch HMI不是“新锐网红”,而是工业自动化圈里那种你查维修记录时总在2012年投产的产线PLC柜里翻出的、外壳泛黄但触控依然跟手的HMI工程文件——它不常上热…

2026/9/24 18:58:32 阅读更多 →
手机靓号到底值不值钱?从结构估值到避坑实操全解析

手机靓号到底值不值钱?从结构估值到避坑实操全解析

前天帮一个搞招商的朋友挑了组尾号,他拿到手第一句话是:“这号是不是太炸眼了?”我说你搞连锁加盟的,电话一天几十通,客户记不住号码,你前面全白干。这年头流量贵、信任难建,一个让人一眼记住、…

2026/9/24 18:58:32 阅读更多 →
Flutter + OpenHarmony 跨端实战:家庭相册分组功能落地全解析

Flutter + OpenHarmony 跨端实战:家庭相册分组功能落地全解析

前一阵子在评估OpenHarmony设备的跨端方案,团队的旧App要迁一部分到OpenHarmony上,又不想把现有的Flutter代码推倒重写。正好赶上社区里Flutter for OpenHarmony的适配链路逐渐跑通,就挑了一个家庭相册App作为试点项目,把核心的家…

2026/9/24 18:58:32 阅读更多 →
红队渗透测试实战复盘:从入口突破到内网横向的完整攻击链拆解

红队渗透测试实战复盘:从入口突破到内网横向的完整攻击链拆解

红队测试这行干久了,你会发现一个有意思的现象:很多企业觉得自己的安全防护做得不错,等真正被红队模拟真实攻击者打一轮,往往撑不过两周。我印象最深的一次项目,目标是互联网上一家成熟的软件公司,防守方部…

2026/9/24 18:58:32 阅读更多 →
Ubuntu云服务器部署OpenClaw并接入飞书机器人全指南

Ubuntu云服务器部署OpenClaw并接入飞书机器人全指南

最近帮一个做SaaS的团队把OpenClaw部署到了他们的Ubuntu云服务器上,顺手把飞书机器人也接上了。这事听起来简单,实际做起来环节不少:云服务器初始化、Docker runtime、OpenClaw配置、飞书开放平台应用创建、channel对接、消息联调&#xff0c…

2026/9/24 18:57:31 阅读更多 →

日新闻

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为…

2026/9/24 0:00:19 阅读更多 →
单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

简介:一份基于单细胞RNA测序数据的细胞类型注释算法研究Python毕业设计源码,针对计算机相关专业正在做毕设或需要项目实战的学习者,可用于课程设计与期末大作业。项目代码完整、经导师指导评审通过,可直接运行,覆盖数据…

2026/9/24 0:00:19 阅读更多 →
C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

第一次在项目里被反射卡住,是在一个老旧的WinForms模块里:几十个类依赖PropertyChanged通知,运行时反射读属性、发通知,每次启动慢半拍不说,一上.NET Native/AOT裁剪模式几乎全面崩盘。后来我把这段逻辑全部改成C#源生…

2026/9/24 0:00:19 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/24 9:10:42 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →