Files
TrueGrowth/docs/MULTI_IMAGE_HISTORY_STARRED_CONCURRENCY_LESSONS.md

4.3 KiB
Raw Blame History

多图生成历史收藏入口与 AI 并发经验

更新日期2026-04-30

背景

用户反馈“工具中,所有历史和收藏的 icon视觉可以加强一点现在用户没留意到”并要求把大模型调用最大并发统一放宽到 20。

这次问题横跨两个容易混淆的区域:

  • AI 输入栏里的提示词历史三点入口。
  • 多图生成、视频/音乐/MV 工具窗口顶部共享的历史/收藏入口。

真正要改的是第二类,也就是 WorkflowNavBar 渲染出的右上角历史和收藏按钮。

这次暴露的问题

1. 看到“历史/收藏”要先定位界面上下文

同样叫“历史”,项目里至少有提示词历史、生成历史、工作流历史、工具窗口历史。

经验规则:

  • 用户给了截图时,以截图所在组件为准,不要只按关键词搜索结果猜入口。
  • 先确认组件层级和复用范围,再动视觉。
  • 如果入口来自共享组件,优先改共享组件和对应共享样式,而不是只改某个业务页。

这次正确链路是:

ComicCreator -> WorkflowNavBar -> .va-nav-actions/.va-nav-btn

而不是:

AIInputBar -> PromptHistoryPopover -> MoreHorizontal

2. 共享导航按钮要用明确图标和常态可见反馈

原来的 📋 2 图标偏轻,且按钮几乎无常态容器,用户在窗口工具区里不容易注意到。

更稳的 UI 规则:

  • 用 lucide 图标替代 emoji保证尺寸、线宽和主题色一致。
  • 常态保留轻边框、弱背景和计数胶囊,不要只在 hover 时可见。
  • 有历史或收藏数量时加 has-count 高亮,让“这里有内容”成为第一眼信号。
  • 收藏状态要让图标本身填充色变化,不能只靠数字变化。

3. 历史列表里的收藏按钮也要同步加强

入口变醒目后,进入历史页的收藏操作也应该保持同一套视觉语言。

经验规则:

  • 历史入口、收藏入口、历史列表收藏按钮要使用一致的星形图标和品牌色。
  • 删除按钮保留低调常态,只在 hover 时转错误色,避免和收藏抢注意力。
  • 历史列表按钮需要 aria-label/title,图标按钮不能只靠视觉表达含义。

4. AI 并发和高内存并发要分开治理

“大模型调用最大并发到 20”不等于所有 concurrency 都改成 20。

应统一到 20 的是 AI/大模型生成调用:

  • 主任务执行器 pending/resume 执行上限。
  • 多图生成并行页生成上限。
  • PPT 批量页图生成上限。
  • 模型测试工具的可输入最大并发。

不应跟随调整的是高内存或非 AI 路径:

  • ZIP/Blob 批量下载。
  • 漫画导出抓图写 ZIP。
  • Service Worker 静态资源预缓存。
  • GitHub/Gist 分片同步。

这些路径会放大内存、网络或第三方限流风险,应该保留独立低并发。

5. 并发上限要抽成语义常量

多个业务点都写 53 时,后续很容易漏改。

经验规则:

  • 抽出 AI_GENERATION_CONCURRENCY_LIMIT = 20
  • 只有“AI/model generation calls”引用该常量。
  • 常量注释要明确非 AI Blob/ZIP/cache/GitHub 路径不复用它。
  • 测试不要断言旧魔法数,断言行为:串行为 1并行不超过选中数量和 AI 上限。

6. 跑测试要用包内 Vitest 配置

根目录直接跑 vitestReact/jsdom 和 alias 可能与包内配置不一致,容易出现误报。

经验规则:

  • 对 drawnix 组件测试优先在 packages/drawnix 下使用 --config ./vitest.config.ts
  • UI 小改优先跑目标测试和 nx run drawnix:typecheck,无必要不全量构建。
  • 如果旧测试失败,要区分是否命中本次改动路径,避免被无关 mock 问题牵走。

回归检查清单

  • 多图生成窗口右上角历史/收藏入口常态是否明显?
  • 有历史数量时,历史按钮是否高亮并显示计数?
  • 有收藏数量时,收藏星标是否填充并高亮?
  • 进入历史页后,收藏/取消收藏按钮是否同样清晰?
  • 主任务执行器、漫画并行、PPT 并行是否都引用统一 AI 并发常量?
  • 下载、ZIP、SW 预缓存、GitHub 同步是否仍保留独立低并发?

一句话

同名 UI 入口先按截图定位真实组件;同名并发先按资源类型分层治理。视觉强化改用户看见的共享入口,并发放宽只给 AI 调用链路。