Downloads / 下载 (v2.1.0)
| Platform | Architecture | Global | China Edition |
|---|---|---|---|
| Windows | x64 | Installer · Portable | Installer · Portable |
| Windows | arm64 | Installer · Portable | Installer · Portable |
| macOS | Apple M Series | DMG · ZIP | DMG · ZIP |
| macOS | Intel | DMG · ZIP | DMG · ZIP |
| Linux | x64 | AppImage · DEB · RPM | AppImage · DEB · RPM |
| Linux | arm64 | AppImage · DEB · RPM | AppImage · DEB · RPM |
Break Change/ 破坏性更新
Mac OS minimum supported version upgraded to Mac OS 13 (Ventura)
Mac OS 支持最小版本升级到Mac OS 13 (Ventura)
Release Notes / 发布说明
English
Cherry Studio 2.1.0 - System Doctor, Browser Control, and Office Transform
✨ New Features
- [Doctor] Add System Doctor with AI diagnosis, system checks, guided fixes, diagnostic export, and feedback. Checks cover installation, permissions, storage, providers, MCP, managed tools, and recent errors. Diagnose individual chats or Agent sessions separately from full system reports; opening feedback or export does not start a health check.
- [Browser] Agents and chat assistants can use the built-in browser, with an animated pointer showing Agent actions. Agents can find page elements, recover them after page updates, inspect console and network activity, and use website WebMCP tools. Also supports browsing history search, browser data import, and separate history or cache clearing.
- [Office] Add the office-transform skill: agents can extract worksheet ranges, document paragraphs, PDF pages, and slide shapes into new files.
- [Selection] Turn on “Select region” to pick a worksheet range, Word paragraph, PDF page, or slide and quote it as a precise structural reference.
- [Web Search] Add Serply as a web search provider.
- [Models] Add DeepSeek V4.1 Flash model with reasoning effort control and web search support.
- [Agent] Agents can opt out of Claude Code commit attribution in Settings → General.
- [Sidebar] Pin Apps, Mini Apps, Agents, Assistants, Knowledge Bases, Topics, Agent Sessions, Files, and Code CLI tools as shortcuts.
- [Chat] Add conversation link context menus for opening in built-in or external browser.
- [History] Add Ctrl+A/Cmd+A select-all, Shift-click range selection, and partial-selection indicator.
- [Mobile] Device Connections now visible to all users with a localized mobile app download card.
- [Trash] Deleting topics, agents, assistants, or files now moves them to Settings → Data → Recycle Bin for restore or permanent deletion.
- [Markdown] LaTeX code blocks now show formula previews by default.
- [Markdown] Bare local file and folder paths in assistant responses are now clickable.
- [Logs] Add log retention setting (7/14/30/90 days) with automatic cleanup.
🐛 Bug Fixes
- [Code Block] Fixed edits being saved to wrong code block or lost; toolbar stays visible on scroll.
- [Composer] Fixed paste silently doing nothing when file could not be read.
- [Composer] Preserve input focus when sending messages.
- [Conversation List] Show more now expands all remaining conversations.
- [History] Keep history open after deleting conversations.
- [Markdown] Prevent raw message flashes during lazy loading.
- [Markdown] Fix display math rendering across blank lines.
- [Windows] Fixed repeated “fsync(dir) failed” warnings in log.
- [Models] Enable web search for tool-capable LMStudio/Ollama models.
- [Models] List LM Studio models from /api/v0/models.
- [Provider] Cap DeepSeek V4 output at 384000 tokens; correct GLM-5.3 and MiMo V2.5 limits.
- [DSH] Launch DSH with bundled Bun; preserve OpenCode session headers.
- [DSH] Fail fast on incompatible upgraded DSH home.
- [Error] Classify Chromium net::ERR_* transport failures; preserve structured provider failure messages.
- [Image] Restore HDR reference image compatibility; fix image rotation flip.
- [Migration] Keep malformed MCP server record from aborting v2 migration.
- [Shortcuts] Warn when shortcut collides with main-process shortcut.
- [Chat] Restore bottom-follow after sending; preserve sidebar state when switching tabs.
- [Chat] Show multi-model scrollbar on hover; prevent scroll rebound.
- [Knowledge] Show file reader scrollbars.
- [Smooth Stream] Flush buffered text on completion.
- [Claude Code] Treat dangling symlinks as workspace escapes; preserve Linux desktop session bus.
- [Copilot] Route GPT-6 Astra through Responses API.
简体中文
Cherry Studio 2.1.0 - 系统诊断、浏览器控制与 Office 转换
✨ 新功能
- [诊断] 新增系统诊断,支持 AI 诊断、系统检查、引导修复、导出诊断信息和问题反馈,涵盖安装、权限、存储、服务商、MCP、托管工具及最近错误。可单独诊断对话或智能体会话,与全系统报告分离;打开反馈或导出不会自动启动健康检查。
- [浏览器] 智能体和对话助手均可使用内置浏览器,并以动画指针展示智能体操作。智能体支持查找页面元素、在页面更新后恢复元素、检查控制台和网络活动,以及调用网站的 WebMCP 工具;同时支持搜索浏览历史、导入浏览器数据和单独清理历史或缓存。
- [Office] 新增 office-transform 技能:智能体可将工作表范围、文档段落、PDF 页面和幻灯片形状提取为新文件。
- [选择] 开启”选择区域”可选取工作表范围、Word 段落、PDF 页面或幻灯片,作为精确的结构化引用。
- [网络搜索] 新增 Serply 网络搜索服务商。
- [模型] 新增 DeepSeek V4.1 Flash 模型,支持推理力度控制和网络搜索。
- [智能体] 智能体可在设置 → 通用中关闭 Claude Code 提交署名。
- [侧边栏] 可将应用、小程序、智能体、助手、知识库、话题、智能体会话、文件和代码 CLI 工具固定为快捷方式。
- [对话] 新增对话链接右键菜单,可在内置或外部浏览器中打开。
- [历史] 支持 Ctrl+A/Cmd+A 全选、Shift 点击范围选择、部分选择指示器。
- [移动端] 设备连接对所有用户可见,新增本地化的移动端下载卡片。
- [回收站] 删除话题、智能体、助手或文件现在移入设置 → 数据 → 回收站,支持恢复或永久删除。
- [Markdown] LaTeX 代码块默认显示公式预览。
- [Markdown] 助手回复中的本地文件和文件夹路径现在可点击。
- [日志] 新增日志保留时间设置(7/14/30/90 天),支持自动清理。
🐛 问题修复
- [代码块] 修复编辑保存到错误代码块或丢失的问题;滚动时工具栏保持可见。
- [输入框] 修复粘贴文件读取失败时静默无反应的问题。
- [输入框] 发送消息时保持输入焦点。
- [对话列表] 点击”显示更多”现在展开所有剩余对话。
- [历史] 删除对话后保持历史窗口打开。
- [Markdown] 防止懒加载时的原始消息闪烁。
- [Markdown] 修复跨空行的显示公式渲染。
- [Windows] 修复日志中重复出现的”fsync(dir) failed”警告。
- [模型] 为支持工具的 LMStudio/Ollama 模型启用网络搜索。
- [模型] 从 /api/v0/models 列出 LM Studio 模型。
- [服务商] 将 DeepSeek V4 输出限制为 384000 tokens;修正 GLM-5.3 和 MiMo V2.5 限制。
- [DSH] 使用内置 Bun 启动 DSH;保留 OpenCode 会话头。
- [DSH] 对不兼容的升级版 DSH 主目录快速失败。
- [错误] 分类 Chromium net::ERR_* 传输失败;保留结构化服务商失败消息。
- [图片] 恢复 HDR 参考图片兼容性;修复图片旋转翻转。
- [迁移] 防止格式错误的 MCP 服务器记录中断 v2 迁移。
- [快捷键] 当快捷键与主进程快捷键冲突时发出警告。
- [对话] 发送后恢复底部跟随;切换标签时保持侧边栏状态。
- [对话] 悬停时显示多模型滚动条;防止滚动回弹。
- [知识库] 显示文件阅读器滚动条。
- [流畅流] 完成时刷新缓冲文本。
- [Claude Code] 将悬空符号链接视为工作区转义;保留 Linux 桌面会话总线。
- [Copilot] 通过 Responses API 路由 GPT-6 Astra。
What's Changed
- docs(contributing): restore the missing DCO sign-off example by @c020627 in #20295
- fix(data): backfill legacy file cleanup policy by @userInner in #19287
- fix(image-generation): normalize HDR reference images before upload by @zhibisora in #20261
- Revert "fix(image-generation): normalize HDR reference images before upload" by @DeJeune in #20317
- feat(provider-registry): add DeepSeek V4.1 Flash GA model by @DeJeune in #20325
- chore(release): sync v2.0.14 metadata by @kangfenmao in #20293
- chore(typescript): adopt TypeScript 7 by @DeJeune in #17719
- chore(oxlint): enable tsgolint 7 by @DeJeune in #17720
- chore(format): migrate to Oxfmt by @DeJeune in #17721
- chore(ui-contract): migrate parser to Oxc by @DeJeune in #17723
- chore(build-toolchain): upgrade to Vite 8 by @DeJeune in #17724
- chore(build-toolchain): drop @electron-toolkit/tsconfig by @DeJeune in #17744
- chore(oxlint): enable no-useless-default-assignment rule by @DeJeune in #17747
- chore(oxlint): enable no-unnecessary-type-assertion (clear the tsgolint 7 backlog) by @DeJeune in #17749
- fix(shortcuts): report conflicts between main and renderer keybindings by @kovsu in #20339
- fix(agent-runtime): honor per-server MCP timeout in Pi and dsh runtimes by @GeorgeDong32 in #20297
- feat(log-cleanup): clean up logs manually and on a retention schedule by @DeJeune in #20330
- feat(messages): add select-all to multi-select by @GeorgeDong32 in #20257
- chore(v2-refactor): retire temporary refactor directory by @DeJeune in #20385
- feat(global-search): show conversation owner and workspace context by @ousugo in #20352
- docs(changelog): remove the v2 breaking-change log by @DeJeune in #20396
- chore(dsh-runtime): upgrade SDK to 0.1.2-rc.1 by @WhiteZeek in #20214
- docs(main): drop the stale bootstrap.ts cleanup note from core README by @c020627 in #20409
- fix(mcp-runtime): clamp oversized tool-result images before they reach agents by @DeJeune in #20348
- fix(quick-assistant): preserve dark surface on Windows by @Dante-dan in #20319
- docs(migrations): correct the stale package manager in the migrations README by @c020627 in #20410
- docs(references): fix dead heading anchors in the reference docs by @c020627 in #20418
- fix(image-export): serialize renderer capture lifecycles by @squarepots in #20227
- fix(message-service): keep surviving replies on the branch after deleting the active node by @EurFelux in #20254
- fix: restore window focus on Windows after hiding main window by @404-Page-Found in #16277
- fix(agent-channels): stop trusting platform-declared attachment types by @kovsu in #20388
- fix(chat): render remote video results by @userInner in #19404
- chore(pnpm): upgrade the package manager to pnpm 12.3.4 by @DeJeune in #20411
- fix(claude-code): preserve Linux desktop session bus by @SiinXu in #20448
- fix(stream-manager): wait for terminal dispatch before admitting a follow-up stream by @kovsu in #20393
- chore(tests): stop returning mocks from lifecycle hooks by @kovsu in #20387
- fix(api-gateway): report truncated Responses output as incomplete by @kovsu in #20375
- fix(composer-tokens): render knowledge refs as compact in-composer chips by @404-Page-Found in #20442
- fix(topic-list): keep pinned indicator visible without hover by @404-Page-Found in #20441
- fix(notes): keep inline rename editor alive when the context menu closes by @tommyzhang100504 in #20427
- fix(composer): hide focus shortcut hint from layout when editor is focused by @NatsUIJM in #20276
- fix(paintings): save prompt edits before creating a new draft by @ousugo in #20213
- fix(chat): show multi-model scrollbar on hover by @ousugo in #20247
- feat(history): add select-all shortcuts and shift range selection by @ousugo in #20278
- fix(image-preview): flip images along screen axes after rotation by @ousugo in #20188
- fix(chat): preserve sidebar state when switching tabs by @ousugo in #20341
- fix(provider-settings): explain edition-hidden providers on cn builds by @404-Page-Found in #20447
- fix(notes): unblock markdown parsing freeze on block-dense notes by @GeorgeDong32 in #20475
- fix(right-pane): drop the close tooltip when the panel closes by @NatsUIJM in #20110
- fix(chat): restore bottom-follow after sending by @Dante-dan in #20491
- fix(logger): strip unbounded error fields before writing file logs by @404-Page-Found in #20437
- fix(assistant-tools): expose prepare_diagnostic_report in default tool set by @404-Page-Found in #20446
- test(scripts): make the release-workflow suite pass on Windows by @fszcd in #20497
- fix(provider-registry): resolve CherryIN Qwen 3.5 9B metadata by @lorenzozanee in #20495
- fix(agent-data): persist clearing agent plan/small model tiers by @NatsUIJM in #20482
- fix(composer): stop pasted-text data loss on copy and over-limit insert by @NatsUIJM in #18855
- feat(settings-search): add zh/latin aliases for buried rows by @GeorgeDong32 in #20494
- fix(migration-v2-window): preserve portable relaunch path by @SiinXu in #20468
- fix(agent): tolerate malformed tool search output by @userInner in #19487
- fix(markdown): preserve table cell word boundaries by @Dante-dan in #20502
- fix(model-selector): improve tag filter chips spacing and overflow behavior (closes #18411) by @xxiaoxiong in #19710
- fix(tool-search): remove unnecessary test type assertion by @DeJeune in #20506
- fix(agents): emit native-separator memory paths in the prompt and unbreak the suite on Windows by @fszcd in #20498
- fix(image-export): render capture clones faithfully and retire the CDP compositor path by @NatsUIJM in #20492
- fix(v2-migration): surface the driver reason behind a failed schema migration by @DeJeune in #20399
- fix(mcp-catalog): keep the failure backoff when a tools refresh fails by @kovsu in #20507
- fix(composer): stop rewriting the input with a stale snapshot after a long-text paste by @kovsu in #20508
- fix(composer): persist atomic chat draft snapshots by @ActiveSky in #19901
- fix(image-generation): restore HDR reference image compatibility by @zhibisora in #20318
- fix(preference-hooks): stabilize multi-key subscriptions by @DeJeune in #18624
- fix(provider): normalize reasoning_effort for GitHub Copilot (rebases #18368, closes #11140) by @xxiaoxiong in #19720
- fix(scheduled-tasks): wrap long prompt tab text by @SiinXu in #19463
- fix(pi): emit invocation timing metrics so agent sessions display TPS by @whb2016 in #20312
- docs(skills): add the missing language switcher to the skills README pair by @c020627 in #20413
- test: replace assertions CI flags as unnecessary with annotated variables by @NatsUIJM in #20521
- fix(markdown): preserve single-tilde text by @ActiveSky in #19783
- chore(deps): upgrade Electron from 41.8.0 to 44.2.0 by @DeJeune in #19350
- fix(ai-errors): preserve messages from structured provider failures by @AtomsH4 in #20525
- fix(deepseek-harness): fail fast on incompatible upgraded DSH home by @404-Page-Found in #20443
- fix(model-selector): merge and prioritize CherryAI models by @zhibisora in #20270
- fix(provider-registry): correct MiMo V2.5 output token limit by @DeJeune in #20542
- fix(markdown): bound mixed multiline math fences by @Dante-dan in #20469
- docs(ui): drop the deleted styles:legacy-vars command from the token guide by @c020627 in #20305
- fix(migration): keep a malformed MCP server record from aborting the v2 migration by @L4XB in #20372
- fix(preview-release): build artifacts without release approval by @kangfenmao in #20528
- fix(knowledge): show file reader scrollbars by @ActiveSky in #19833
- fix(reasoning-control): clarify localized effort labels by @kangfenmao in #20533
- fix(shortcut): label the Enter key as Return on macOS by @NatsUIJM in #20279
- feat(sentry): gate error reporting by user consent by @kangfenmao in #20400
- fix(linux-packaging): ship the selection-hook prebuilds instead of the cross-compiled rebuild by @DeJeune in #20534
- fix(dsh): preserve OpenCode session headers(补齐 OpenCode 会话头) by @LXD-8 in #20545
- fix(image-export): pre-inline remote images with content-type verification by @NatsUIJM in #20519
- fix(model-list): list LM Studio models from /api/v0/models by @DeJeune in #20346
- fix(directory-tree): release trees via WindowManager.onWindowDestroyed by @kovsu in #20566
- fix(agent-model): keep lookup inside startup transaction by @SiinXu in #20035
- test(ai-messages): preserve MCP tool history across turns by @lorenzozanee in #20563
- fix(binary-manager): refresh dependency state after update checks by @SiinXu in #20464
- fix(model-retry): skip fallback models whose provider is disabled by @L4XB in #20580
- fix(filesystem-mcp): reject dangling symlinks that escape the workspace root by @kovsu in #20505
- fix(global-search): debounce queries and skip IME composition intermediates by @NatsUIJM in #19253
- fix(code-block): keep toolbar visible on scroll by @LazyPeterGriffin in #19008
- ci(deps): bump actions/cache from 5 to 6 by @dependabot[bot] in #20382
- fix(lint-gate): restore Oxlint warning failures by @DeJeune in #20579
- fix(image-export): measure capture size after inlining images by @kovsu in #20626
- fix(chat-scroll): prevent multi-model scroll rebound by @SiinXu in #20289
- fix(provider-registry): require explicit model resolution context by @DeJeune in #20583
- fix(smooth-stream): flush buffered text on completion by @SiinXu in #20132
- fix(image-export): inline remote images through a bounded fetch pool by @kovsu in #20627
- fix(translate): cancel the in-flight stream before replacing output by @kovsu in #20152
- fix(chat-shell): prevent hidden layout scrolling by @AtomsH4 in #20585
- build(deps): upgrade electron-shutdown-handler to 1.2.0 by @ActiveSky in #20601
- fix(nutstore): accept SSO callback route by @kangfenmao in #20581
- fix(agent-session): target an idle connection at the agent's configured reasoning effort by @L4XB in #20615
- fix(markdown): keep
\[…\]display math together across a blank line by @L4XB in #20588 - feat(api-gateway): LAN device pairing and provider export for mobile by @zhangjiadi225 in #20262
- fix(copilot): route GPT-6 Astra through Responses API by @DeJeune in #20632
- fix(claude-code): treat dangling symlinks as workspace escapes by @kovsu in #20504
- test(agent): cover unsupported reasoning summary parameters by @lorenzozanee in #20608
- fix(toast): align action content by @AtomsH4 in #20634
- fix(history): keep history open after deleting conversations by @ousugo in #20288
- fix(translate): explain automatic bidirectional translation by @ousugo in #20638
- feat(markdown): preview LaTeX code blocks and preserve display math by @DeJeune in #20577
- fix(error-classifier): classify Chromium net::ERR_* transport failures by @lorenzozanee in #20595
- fix(dsh-runtime): launch DSH with bundled Bun by @DeJeune in #20535
- feat(webview): add element annotations by @DeJeune in #17842
- feat(webview): add reusable Agent Pane browser by @DeJeune in #17872
- feat(webview): add stable surfaces outside page activity by @DeJeune in #20366
- feat(browser-session): add shared CDP engine and migrate annotation capture by @DeJeune in #20128
- feat(browser-mcp): add actionable browser tools and managed session cleanup by @DeJeune in #20134
- feat(browser-mcp): add inspection tools and same-document ref recovery by @DeJeune in #20139
- feat(agent-browser): integrate browser control and cross-platform data import by @DeJeune in #20166
- refactor(webview): share guest hosting and navigation with mini apps by @DeJeune in #20241
- feat(browser-use): visualize agent pointer actions by @DeJeune in #20342
- feat(browser-use): integrate native website WebMCP tools by @DeJeune in #20582
- fix(global-search): distinguish recent settings destinations by @ousugo in #20639
- fix(chat-ui): adjust clear dialog focus and model group tooltip by @kangfenmao in #20629
- fix(backup): explain background task timeout failures by @kangfenmao in #20628
- feat(markdown): link bare file paths in assistant output by @userInner in #19534
- test(mcp): cover Agent catalog replacement after restart by @lorenzozanee in #20622
- feat(agent): let Agent sessions opt out of Claude Code commit attribution by @LXD-8 in #20645
- ci(regression-test): automate critical path testing by @kangfenmao in #19180
- feat(assistant-browser): add topic-scoped browser use by @DeJeune in #20642
- feat(selection-reference): structural selection anchors, FilePreview contract, and office-transform skill by @MyPrototypeWhat in #18422
- feat(file-preview): office suite selection producers and composer wiring by @MyPrototypeWhat in #19056
- refactor(office-transform): modularize by format inside the skill by @MyPrototypeWhat in #20242
- fix(provider-registry): correct GLM-5.3 output token limit by @zhangjiadi225 in #20665
- fix(error-classifier): point knowledge nav target to /app/knowledge by @kovsu in #20666
- fix(model-list): enable web search for tool-capable LMStudio/Ollama models by @404-Page-Found in #20664
- fix(provider-registry): cap DeepSeek V4 output at 384000 tokens by @zhangjiadi225 in #20667
- fix(composer): preserve input focus when sending messages by @ousugo in #20590
- feat(trash): archive instead of delete with recycle bin and retention purge by @DeJeune in #16746
- fix(export): keep code untouched when forcing dollar math by @kovsu in #20668
- fix(deepseek-harness): record dsh version on launch failure, guard archive-only homes by @404-Page-Found in #20660
- fix(markdown): prevent raw message flashes during lazy loading by @DeJeune in #20671
- fix(composer): reclaim input width from corner padding by @SiinXu in #20672
- feat(sidebar): support generic resource shortcuts by @DeJeune in #19735
- feat(device-connections): expose settings and add mobile download by @zhangjiadi225 in #20681
- fix(composer): hide the input focus reminder by @SiinXu in #20679
- fix(code-block): save edits to the block that was edited by @kovsu in #20680
- fix(agent-tasks): refresh task run history on job state changes by @kovsu in #20154
- feat(web-search): add Serply search provider by @googio in #20370
- docs(presets): fix the stale heading anchor in the presets README by @c020627 in #20419
- fix(rich-editor): revoke blob URLs created for pasted images by @kovsu in #20669
- feat(agent-session): add agent_list, session_read and cross-agent session_create tools by @vaayne in #20168
- fix(migration-v2): defer direct migration ceiling to v3.0.0 by @kangfenmao in #20698
- fix(composer): attach every pathless clipboard image in one paste by @superbigcup325 in #20691
- fix(sub-window): apply persisted zoom factor to detached tab windows by @NatsUIJM in #20696
- fix(conversation-list): expand all group items on show more by @kangfenmao in #20697
- fix(knowledge): read an EPUB chapter with the HTML reader, not a tag regex by @L4XB in #20633
- fix(composer): toast when pasted file lookup returns null by @404-Page-Found in #20704
- fix(file): silence EPERM/EACCES dir-fsync errors on Windows by @404-Page-Found in #20705
- docs(v2-refactor): remove remaining breaking-change records by @kangfenmao in #20707
- fix(html-to-markdown): convert a fetched table into a table by @L4XB in #20644
- feat(doctor): System Doctor infrastructure, NetworkService and entry points by @DeJeune in #19982
- feat(system-doctor): add backend diagnostic checks by @eeee0717 in #19992
- feat(system-doctor): implement Doctor V1 frontend by @AtomsH4 in #20006
- refactor(system-doctor): unify diagnostic presentation by @SiinXu in #20204
- feat(chat): add context menu actions for conversation links by @ousugo in #20646
- feat(doctor): scope diagnosis to the chat or agent that failed by @DeJeune in #20416
- docs(release-notes): consolidate v2.1.0 feature entries by @DeJeune in #20723
New Contributors
- @fszcd made their first contribution in #20497
- @whb2016 made their first contribution in #20312
- @L4XB made their first contribution in #20372
- @LXD-8 made their first contribution in #20545
- @LazyPeterGriffin made their first contribution in #19008
- @googio made their first contribution in #20370
- @superbigcup325 made their first contribution in #20691
Full Changelog: v2.0.14...v2.1.0