Cherry Studio 绘画页控件迁移指南:图像生成模型与参数选择器进入提示栏工具栏
Cherry Studio 绘画页控件迁移指南图像生成模型与参数选择器进入提示栏工具栏【免费下载链接】cherry-studio Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端项目地址: https://gitcode.com/CherryHQ/cherry-studio导读本文基于 Cherry Studiocherry-studio仓库中 2026-06-24 的破坏性变更记录系统讲解绘画Paintings页面的一次纯 UI 重构左侧常驻参数面板被移除图像生成模型选择器与参数列表尺寸、seed 等迁入提示输入框底部的工具栏。读完本文你将理解新布局的结构、⚙ 参数弹层与模型下拉的交互方式、图片输入能力attach/paste/drag的接入点以及为什么这是一次无需用户操作、无需数据迁移的零成本升级。一、变更总览从三栏布局到画布 历史 底部工具条变更前旧布局旧版绘画页采用三栏结构左侧设置面板常驻显示图像生成模型选择器与生成参数列表尺寸、seed、步数等用户随时可见、随手可改中间画布预览当前提示词生成的结果右侧/侧边历史历史绘画记录。变更后新布局左侧设置面板被整体移除页面收敛为画布 历史两栏模型与参数控件全部下沉到提示输入框底部的工具栏模型选择器→ 以下拉框形式出现在提示栏工具栏中生成参数列表尺寸、seed 等→ 收进工具栏上的设置⚙弹层Popover提示输入框本体→ 统一替换为项目共享的富文本 Composer并支持面向图像编辑类模型的图片附加 / 粘贴 / 拖拽输入。从源码布局看PaintingPage.tsx 的渲染树清晰地体现了这一结构PaintingStrip历史条与Artboard画布居于主区域而PaintingComposer被放入promptDock容器paintingPrimitives.ts 中promptDock: relative z-20 shrink-0 px-2 pt-2 pb-2固定在中间栏底部。旧的三栏设置面板在组件树中已不存在——它不是被隐藏而是被彻底移除并替换为工具栏交互。二、新交互详解底部工具栏的两个入口1. 模型选择下拉Dropdown在 PaintingComposer.tsx 中renderContextControls将PaintingModelSelector渲染进共享的ComposerToolbarControls底部工具栏同时传入hideTitle以去掉旧面板中的 Model 分节标题。PaintingModelSelector.tsx 内部复用了全局ModelSelector组件通过filter{paintingModelFilter}即supportsImageGenerationEndpoint来自 paintingModelOptions.ts仅展示支持图像生成端点的模型触发按钮显示模型名、提供商名与模型 Logo未选中时显示paintings.select_model占位文案选中后通过onSelect({ providerId, modelId })回调上抛选择结果。2. 参数设置弹层⚙ Popover工具栏第二个入口是PaintingParamsButtonPaintingComposer.tsx它以PopoverSettings2图标呈现参数入口并有几个值得注意的细节参数摘要预览按钮上会显示当前参数选区的紧凑摘要如 1024×1024 · 50 · 42由paramsSummary依据表单字段逐项格式化生成。尺寸类字段按 chip 风格渲染如1024×1024auto等枚举会本地化为当前语言如中文自动滑块类字段显示数值。按钮的aria-label也携带摘要保证无障碍访问弹层宽度w-[min(300px,calc(100vw-2rem))]内部max-h-[60vh]可滚动避免小窗口下弹层溢出零参数降级当imageGenerationToFields解析出的配置项为空configItems.length 0即当前模型在注册表中没有imageGeneration声明时按钮整体不渲染——工具栏保持干净。弹层内部承载的是 PaintingSettings.tsx它通过useImageGenerationSupport获取当前模型的注册表能力再经imageGenerationToFields转换为表单字段最后由PaintingFieldRenderer渲染。字段覆盖 switch开关、enum下拉 / chips、range滑块、size自定义宽高输入、text输入框 / 多行文本等多种控件类型完整映射见 imageGenerationToFields.ts。三、提示框统一共享富文本 Composer 与图片输入本次变更的另一半是提示框统一。根据变更记录这次迁移属于 v2 Composer 统一的一部分——通用 Composer 已迁入components/composer/绘画页不再维护独立的提示输入实现而是基于共享的ComposerSurface重建。PaintingComposer.tsx 中ComposerSurface的装配展示了图片输入能力的接入方式顶部参考图托盘对于图像编辑类模型isEditImageModel(model)为真topContent渲染PaintingImageGallery——一个横向滚动的缩略图条支持逐张删除、点击打开 ImageViewer 灯箱PaintingImageGallery.tsx圆形上传按钮leadingContent渲染PaintingImageAddButton点击后调起系统文件选择器图片进入 Composer 的files状态与工具栏 / 粘贴 / 拖拽走同一条附件管线同上文件第 24-61 行附件能力继承粘贴、拖拽、文件 token 管理等能力由共享 Composer 提供绘画页只声明自己管理的 token 类型PAINTING_MANAGED_TOKEN_KINDS [file]。一个重要的模式差异编辑类模型的图片输入走顶部参考图托盘而非文件胶囊PAINTING_NO_MANAGED_TOKEN_KINDS []因此 Composer 在这些模型下不托管任何 draft tokenfiles始终是权威数据源。这保证了PaintingImageGallery与生成时的inputFiles物料化结果一致。四、行为不变性参数、历史与生成逻辑零迁移变更记录的 Notes for release manager 明确三点纯 UI 位置迁移UI-only relocation无任何数据迁移no data migration生成行为不变绘画生成行为、参数、历史全部保持原样参数持久化位置不变表单读写仍指向painting.params——扁平、以规范参数名为键的数据包canonical bag。从源码看参数数据流的主干没有因本次 UI 迁移而改变PaintingSettings.tsx 注释明确指出表单读写目标painting.params就是请求时canonicalGenerate拆分为 AI SDK 参数与厂商参数包的同一份数据。换句话说旧版用户在左侧面板设置过的参数迁移后依然保存在相同的painting.params结构中切换 UI 入口不会丢失任何已配置内容。关于参数如何从painting.params经canonicalGenerate校验、splitParamValues拆分最终落到各厂商请求体的完整链路可参阅 docs/references/ai/image-generation-parameters.md。五、模型切换时的行为细节源码佐证虽然本次迁移没有改变生成逻辑但工具栏化的模型选择器引入了与旧面板一致、且更严谨的切换语义体现在 usePaintingModelSwitch.ts 中同提供商内切换调用computeModelFieldReset清理旧模型写入、新模型不接受的过期字段表单字段可见性由新模型的注册表块驱动底层值需要同步同时若目标模型不能接受图片输入非isEditImageModel显式清空inputFiles避免隐藏的上传图片被误发给仅生成类模型跨提供商切换先ensureProviderCatalog加载目标提供商目录冷缓存 DB/IPC 失败时通过presentPaintingGenerateError弹出错误而非静默回退然后基于新提供商重建默认绘画对象保留id、files、prompt并重置模式为generate、清空输入图片——不同提供商的图片附件绝不跨商携带。六、用户须知什么都不用做变更记录明确说明自动生效用户无需任何操作。迁移后同一套模型选择器与参数项全部可用只是入口从左侧面板变为提示栏工具栏参数入口位置提示输入框底部工具栏 → ⚙ 按钮 → 弹层内调整按钮上的摘要文本可预览当前选区模型入口位置提示输入框底部工具栏 → 模型下拉框若当前模型没有任何可配置参数⚙ 按钮自动隐藏不会出现空弹层。七、测试覆盖本次变更并非一次性重写相关行为有较完整的组件级测试守护可作回归验证参考PaintingComposer.test.tsx验证 Composer 装配、编辑模型图片输入门控、发送禁用逻辑PaintingModelSelector.test.tsx验证模型下拉过滤与选择回调PaintingSettings.test.tsx验证参数表单按注册表字段渲染PaintingPage.test.tsx页面级布局与状态编排验证。此外 usePaintingModelSwitch 相关测试 与 form 目录下的字段测试 共同覆盖了模型切换重置与参数表单渲染的行为边界。八、关键文件索引关注点文件变更记录原文v2-refactor-temp/docs/breaking-changes/2026-06-24-painting-controls-moved-to-toolbar.md页面布局画布 历史 promptDocksrc/renderer/pages/paintings/PaintingPage.tsx底部工具栏 Composer模型下拉 ⚙ 弹层src/renderer/pages/paintings/components/PaintingComposer.tsx模型选择下拉src/renderer/pages/paintings/components/PaintingModelSelector.tsx参数表单与 ⚙ 弹层内容src/renderer/pages/paintings/components/PaintingSettings.tsx参考图托盘与上传按钮src/renderer/pages/paintings/components/PaintingImageGallery.tsx模型切换重置语义src/renderer/pages/paintings/hooks/usePaintingModelSwitch.ts注册表 → 表单字段映射src/renderer/pages/paintings/form/imageGenerationToFields.ts参数化架构全景docs/references/ai/image-generation-parameters.md共享 Composer 工具栏清单scope 控制src/renderer/components/composer/tools/toolbarManifests.tsx结语总而言之这是一次面向 v2 Composer 统一战略的纯 UI 迁移绘画页放弃了左侧常驻设置面板的旧范式把模型选择与参数编辑收纳进提示栏底部工具栏同时将提示框整体替换为共享富文本 Composer 并补齐图片输入能力。由于参数仍存于同一份painting.params规范数据包、生成链路完全未动、历史数据无需迁移用户端零操作即可平滑过渡。对开发者而言理解这一迁移的关键在于把握UI 入口变了、数据流没变这一原则——任何针对绘画参数表单的后续扩展依然只需在注册表supports与参数目录层声明表单、校验、厂商请求体便会自动跟随。【免费下载链接】cherry-studio Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端项目地址: https://gitcode.com/CherryHQ/cherry-studio创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Ubuntu 24.04安装WPS Office 2025:deb包与字体修复指南

Ubuntu 24.04安装WPS Office 2025:deb包与字体修复指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/19 16:59:38 阅读更多 →
TST与TVT厚度图的本质区别及地质建模五步法

TST与TVT厚度图的本质区别及地质建模五步法

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/19 16:59:38 阅读更多 →
笔记本外接扩展屏桌面图标错乱?从原理到DesktopOK还原全解析

笔记本外接扩展屏桌面图标错乱?从原理到DesktopOK还原全解析

1. 问题现象与核心原因拆解笔记本外接扩展屏之后桌面图标全部挤到主屏左上角、副屏图标消失、分辨率切换后图标位置全乱——这个问题我前前后后遇到过不下十次,从Win7时代到Win11 24H2,几乎每一代系统都有人踩坑。它的本质不是系统Bug,而是Wi…

2026/9/19 16:59:38 阅读更多 →

最新新闻

BrewUI图形化Homebrew指南:解决安装失败与卸载残留

BrewUI图形化Homebrew指南:解决安装失败与卸载残留

说实话,我一开始对“BrewUI”是持保留态度的。Homebrew 在 macOS 上用命令行操作已经很成熟了,brew install、brew update打几个字母的事,为什么还要套一层图形界面?但当我真的装了 BrewUI,用它排查了一次 Intel Mac 上…

2026/9/19 17:53:01 阅读更多 →
MVC与工厂模式在微服务架构中的落地实践

MVC与工厂模式在微服务架构中的落地实践

简介:本资源是一份面向软件工程专业本科生的《软件设计模式与体系结构》课程实践作业文档,聚焦设计模式原理理解与代码级应用能力培养,适用于课程学习、实验复现与面试准备。文档为单文件Word格式(.docx),共…

2026/9/19 17:53:01 阅读更多 →
基于Krawtchouk不变矩、PCA与BP神经网络的异源景象匹配方法

基于Krawtchouk不变矩、PCA与BP神经网络的异源景象匹配方法

简介:《基于BP神经网络的景象匹配算法》是一份面向图像处理、深度学习和模式识别研究者的学术论文资源,针对红外实测图与可见光基准图之间的智能匹配问题,提出融合Krawtchouk不变矩、PCA特征降维及三层BP神经网络的完整解决方案。资源包仅含1…

2026/9/19 17:53:01 阅读更多 →
阿里开源Skill框架:Agent能力标准化与进程级隔离实践

阿里开源Skill框架:Agent能力标准化与进程级隔离实践

1. 这个“神级 Skill 项目”到底是什么?不是营销噱头,而是Agent开发范式的实质性跃迁“阿里又开源了一个神级 Skill 项目!”——这句话最近在技术社区刷屏,但点开链接后很多人反而更困惑了:没有README首屏截图&#xf…

2026/9/19 17:53:01 阅读更多 →
别再找VS2019密钥!一文搞懂授权机制与离线安装部署

别再找VS2019密钥!一文搞懂授权机制与离线安装部署

很多刚接触 Visual Studio 2019 的朋友,第一个习惯性动作就是去搜索“VS2019密钥”。这个词的热度一直很高,网上也能搜出一堆所谓的产品密钥、激活码、破解工具。但如果你真的把 VS2019 下载下来动手装一遍就会发现:整个安装流程里压根没有传…

2026/9/19 17:53:01 阅读更多 →
Geneformer不是生物版BERT:单细胞转录组专用Transformer架构解析

Geneformer不是生物版BERT:单细胞转录组专用Transformer架构解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/19 17:52:01 阅读更多 →

日新闻

BP神经网络时序预测:滑窗长度与多窗口平均策略

BP神经网络时序预测:滑窗长度与多窗口平均策略

简介:面向机器学习、深度学习与数据建模学习者的一份完整研究文献,聚焦BP神经网络在农业产量预测中的应用。文档以1980—2018年全国棉花产量为样本,系统讲解数据归一化处理、激活函数原理、多层神经网络结构搭建及训练流程,展示敏…

2026/9/19 0:00:30 阅读更多 →
Transformer训练实时监控实战:基于MindSpore的损失曲线可视化方案

Transformer训练实时监控实战:基于MindSpore的损失曲线可视化方案

上个月调一个Deformable DETR模型,在单卡上要跑将近两天。第二天早上我下意识打开终端翻日志,发现loss从凌晨两点就开始往上爬,一路从0.8涨到1.35,整整六个小时没人发现。那六个小时的训练不仅白跑,还霸占着卡——等于…

2026/9/19 0:00:30 阅读更多 →
OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南

OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南

OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南 【免费下载链接】opencloud 🌤️ OpenCloud is the open source platform for file management, sharing and collaboration. Simple and sovereign. 项目地址: htt…

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

周新闻

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验 【免费下载链接】ai The AI Toolkit for TypeScript. From the creators of Next.js, the AI SDK is a free open-source library for building AI-powered applications and ag…

2026/9/19 3:59:36 阅读更多 →
Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化 【免费下载链接】refine A React Framework for building internal tools, admin panels, dashboards & B2B apps with unmatched flexibility. 项目地址: https://gitcode.com/GitH…

2026/9/19 3:53:08 阅读更多 →
Flutter应用改名全指南:从Android到iOS的配置与工具实践

Flutter应用改名全指南:从Android到iOS的配置与工具实践

刚接一个外包项目时,甲方要求把工程里临时用的应用名改成正式产品名。我本来觉得“改名”这种小事,打开配置文件改一行不就完了?结果真动手才发现,Flutter项目里“应用名称”根本不是一处配置,而是一整套散落在 Androi…

2026/9/19 4:02:43 阅读更多 →

月新闻

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

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

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

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

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

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

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

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

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

2026/9/16 22:32:59 阅读更多 →