v2.2.22

QMAI 更新日志

发布日期:2026-06-25 提交:3 次 涉及文件:12 个
编号 类型 问题描述 状态
FIX-01 Bug "跟随 AI 会话模型"复选框丢失且功能失效 已修复
FIX-02 Bug DeepSeek 模型写作卡顿、内容缺失 已修复
FIX-03 Bug 章节编辑器删除文字时滚动条跳动 已修复
FIX-04 Bug 备份导入后章节和大纲丢失 已修复
FEAT-01 功能 登录页新增"恢复数据"按钮 已上线
FIX-05 Bug 幽灵条目(文件已丢失)无法删除 已修复
FIX-06 Bug 嵌套路径虚拟化解析错误导致删除失败 已修复

FIX-01 Bug

"跟随 AI 会话模型"复选框丢失且功能失效
2026-06-25

现象:设置-小说-模型中,"跟随 AI 会话模型"后面的复选框消失,且勾选后模型未跟随切换。

根因:UI 层将复选框错误地渲染为按钮形式;模型回退优先级错误,defaultLlmModel 优先级高于 aiChatModel,导致跟随功能失效。

修复:将按钮改为复选框并实现禁用逻辑;调整 resolveNovelModel 中的模型回退优先级为 aiChatModel > defaultLlmModel

改动文件:
  • src/components/settings/novel-section.tsx
  • src/components/settings/chat-model-selector.tsx
  • src/lib/novel/model-resolver.ts

FIX-02 Bug

DeepSeek 模型写作卡顿、内容缺失
2026-06-25

现象:使用 DeepSeek 模型进行小说写作时持续卡顿,AI 会话中无法产生内容。

根因:resolveUserVisibleReasoning 函数将 auto 推理模式强制转换为 high,导致 DeepSeek 启用高强度推理,引发生成卡顿和内容缺失。

修复:修改 user-visible-reasoning.ts 使 auto 模式保持原值;移除 deep-chapter-generation.tsdeep-outline-generation.tsstyle-extraction-engine.ts 中对该函数的调用,改为直接使用 config.reasoning

改动文件:
  • src/lib/user-visible-reasoning.ts
  • src/lib/novel/deep-chapter-generation.ts
  • src/lib/novel/deep-outline-generation.ts
  • src/lib/novel/style-extraction-engine.ts

FIX-03 Bug

章节编辑器删除文字时滚动条跳动
2026-06-25

现象:在章节最后一行删除文字时,右侧滚动条自动滚动,导致难以定位删除位置。

根因:resize() 函数调整 textarea 高度时使用两步法(先设 height: auto 再设 scrollHeight),导致外层滚动容器 .immersive-scroll-containerscrollTop 跳动。

修复:在调整高度前后保存并恢复滚动容器的 scrollTopscrollLeft

改动文件:
  • src/components/editor/wiki-editor.tsx

FIX-04 Bug

备份导入后章节和大纲丢失
2026-06-25

现象:重装系统后原 QMBOOK 文件夹被删除,导入备份数据后章节和大纲均不显示。

根因:备份导出时知识目录名称可能为 wiki(旧版)或 QM(新版),导入后目录名不匹配,导致软件无法识别章节和大纲文件。

修复:导出时统一以 wiki 名称存入 zip 包;导入后自动执行目录迁移(wikiQM.llm-wiki.qmai);导入成功后使用备份中的项目名而非默认"已恢复项目"。

改动文件:
  • src-tauri/src/commands/backup.rs
  • src-tauri/src/commands/project.rs
  • src/lib/backup/types.ts
  • src/lib/backup/import.ts
  • src/components/project/welcome-screen.tsx

FEAT-01 功能

登录页新增"恢复数据"按钮
2026-06-25

功能:在青幕写作欢迎页面新增"恢复数据"按钮,用户无需打开项目即可从登录页一键导入备份数据。

实现:按钮点击后弹出文件选择器,选择 zip 备份文件后自动执行导入流程,完成后刷新最近项目列表。

改动文件:
  • src/components/project/welcome-screen.tsx

FIX-05 Bug

幽灵条目(文件已丢失)无法删除
2026-06-25

现象:导入后大纲树中出现文件不存在的"幽灵条目",点击删除时报错"系统找不到指定的文件",且无法删除。

根因:moveFileToTrash 函数在删除前先调用 readFile 读取文件内容(用于放入回收站),文件不存在时 readFile 抛出异常,中断整个删除流程。

修复:moveFileToTrashreadFile 失败时用空内容占位;deleteFile 失败时静默继续;handleDeleteFolder 中单个文件删除失败不中断整体流程;handleDeleteClickcleanupDeletedSourceMemory 失败不影响文件删除。

改动文件:
  • src/lib/trash.ts
  • src/components/layout/knowledge-tree.tsx

FIX-06 Bug

嵌套路径虚拟化解析错误导致删除失败
2026-06-25

现象:FIX-05 修复后部分幽灵条目仍无法删除,点击删除时提示文件找不到。

根因:由于错误导入导致磁盘上出现嵌套的 QM 目录结构(如 QM/outlines/1/QM/chapters/xxx.md)。路径虚拟化时前端看到路径含两个 wiki 段(wiki/outlines/1/wiki/chapters/xxx.md),但 resolve_project_storage_path 中的 replace_last_path_segment 只替换最后一个 wiki,导致解析后的路径与磁盘实际路径不匹配。

修复:新增 replace_all_path_segments 函数,替换路径中所有匹配的段(而非仅最后一个),用于 resolve_project_storage_pathwikiQM.llm-wiki.qmai 的全量替换。

改动文件:
  • src-tauri/src/commands/fs.rs