Files
EmailBill/openspec/changes/archive/2026-02-14-optimize-category-icon-prompts/design.md
SunCheng a88556c784 fix
2026-02-15 10:10:28 +08:00

4.1 KiB
Raw Blame History

Context

当前系统使用 AI 服务生成分类图标,但生成的图标过于复杂,用户难以识别图标与分类名称的对应关系。问题根源在于 AI 提示词缺乏对简约风格的明确约束,导致生成的图标细节过多、视觉杂乱。影响范围涉及 Service 层的 AI 调用逻辑、Application 层的提示词配置以及前端的图标展示效果。

Goals / Non-Goals

Goals:

  • 优化 AI 图标生成的提示词,确保生成简约、清晰的图标
  • 建立图标与分类名称的明确视觉关联规则
  • 提升图标生成的一致性和可识别性
  • 改善用户体验,降低识别成本

Non-Goals:

  • 不改变现有的 AI 服务提供商
  • 不重构整体的图标生成流程架构
  • 不涉及图标存储或缓存机制的变更
  • 不改变分类数据模型

Decisions

提示词策略选择

  • 决策: 采用分层提示词策略,在基础提示词中明确"简约、扁平、单色"等风格约束,在动态部分注入分类名称的语义信息
  • 替代方案: 考虑过完全重写提示词模板,但风险较大,可能影响现有其他功能的稳定性
  • 理由: 分层策略既能控制生成风格,又能灵活适配不同分类,改动范围小、风险低

提示词模板化

  • 决策: 将提示词抽象为可配置的模板,支持通过配置文件调整生成风格参数
  • 替代方案: 考虑过硬编码简化提示词,但缺乏灵活性,后续调整需要重新部署
  • 理由: 模板化便于 A/B 测试不同提示词效果,快速迭代优化

生成参数调整

  • 决策: 在 AI 服务调用中增加风格强度参数(如 style_strength控制简约程度
  • 替代方案: 完全依赖提示词控制,但部分 AI 服务支持通过参数微调生成风格
  • 理由: 结合参数调优能更精准控制生成效果,提升成功率

Risks / Trade-offs

风险: 简约提示词可能导致部分抽象分类(如"其他"、"通用")生成的图标过于相似,难以区分

  • 缓解: 针对抽象分类添加特殊的视觉元素(如特定的几何形状或颜色编码)

风险: 提示词优化需要多次迭代,可能影响用户体验一致性

  • 缓解: 采用灰度发布策略,逐步验证新提示词效果,必要时支持回滚

权衡: 简约风格可能牺牲图标的细节表现力,但可识别性更重要

  • 决策: 优先保证可识别性,后续可考虑提供可选的详细风格模式

权衡: 模板化提示词增加了配置复杂度,但提升了可维护性和灵活性

  • 决策: 通过默认配置降低使用门槛,仅在需要调整时暴露模板参数

Migration Plan

第一阶段:提示词模板化

  1. 在 Application 层创建图标提示词配置类(如 IconPromptConfig
  2. 将现有提示词提取为模板,支持风格参数替换
  3. 实现模板引擎(可使用字符串插值或轻量级模板库)

第二阶段:提示词优化

  1. 设计简约风格提示词模板,明确约束:扁平化、单色、少细节、高对比度
  2. 建立分类名称到视觉元素的映射规则(如"餐饮" → 餐具形状)
  3. 集成 AI 服务调用时的风格强度参数

第三阶段:测试与验证

  1. 对现有分类批量生成新图标,对比可识别性
  2. 邀请用户进行 A/B 测试,收集反馈
  3. 根据测试结果微调提示词和参数

第四阶段:灰度发布

  1. 先在测试环境验证新图标生成效果
  2. 灰度发布到生产环境(如 10% 用户)
  3. 监控用户反馈和图标生成成功率,逐步扩大比例

回滚策略

  • 保留旧提示词模板的备份,通过配置开关快速回滚
  • 灰度期间出现异常立即回滚并分析原因
  • 记录每次提示词迭代版本,支持追溯和对比

Open Questions

  • 当前使用的 AI 服务是否支持风格强度参数?需要查阅 API 文档或进行技术验证。
  • 现有分类中是否有语义特别抽象的分类,需要特殊处理?(需要统计分类名称分析)
  • 用户对图标风格的偏好是否有特定趋势?(可以通过历史用户行为数据或调研获取)