✨ feat(config): 更新模型配置与LLM提示词指南

- 将默认LLM模型从gemini-2.0-flash升级为gemini-3-flash-preview
- 将博主人设从"性感福利主播"更改为"二次元coser"
- 优化LLM生成SD提示词的指南,新增中国审美人物描述规则
- 为各SD模型添加颜值核心词、示范prompt和禁止使用的关键词
- 新增三维人物描述法(眼睛/肤色/气质)和专属光线词指导

📦 build(openspec): 归档旧规范并创建新规范

- 将improve-maintainability规范归档至2026-02-25目录
- 新增2026-02-26-improve-ui-layout规范,包含UI布局优化设计
- 新增2026-02-26-optimize-image-generation规范,包含图片生成优化设计
- 在根目录openspec/specs下新增图片质量、后处理、中国审美和LLM提示词规范

♻️ refactor(sd_service): 优化SD模型配置和图片后处理

- 为各SD模型添加中国审美特征词和欧美面孔排除词
- 新增高画质预设档,SDXL模型启用Hires Fix参数
- 将后处理拆分为beauty_enhance和anti_detect_postprocess两个独立函数
- 新增美化增强功能,支持通过enhance_level参数控制强度

♻️ refactor(services): 更新内容生成服务以支持美化增强

- 在generate_images函数中新增enhance_level参数
- 将美化强度参数传递至SDService.txt2img调用

♻️ refactor(ui): 优化UI布局和添加美化强度控件

- 注入自定义CSS主题层,优化字体、按钮和卡片样式
- 将全局设置迁移至独立的"⚙️ 配置"Tab,优化Tab顺序
- 在内容创作Tab的高级设置中添加美化强度滑块控件
- 优化自动运营Tab布局,改为2列卡片网格展示
This commit is contained in:
2026-02-26 22:58:05 +08:00
parent b635108b89
commit b5deafa2cc
53 changed files with 1578 additions and 387 deletions
@@ -0,0 +1,2 @@
schema: spec-driven
created: 2026-02-25
@@ -0,0 +1,86 @@
## Context
当前系统使用 Stable Diffusion WebUI API 生成图片,通过 `sd_service.py` 中的 `SD_MODEL_PROFILES` 静态配置各模型的参数预设(快速/标准/精细三档)和 prompt 增强词。图片生成后经 `anti_detect_postprocess()` 做反 AI 检测后处理。`llm_service.py` 的 `get_sd_prompt_guide()` 向 LLM 提供绘图 Prompt 写作指南。
**现状痛点:**
- 各模型的"精细"档步数(35-40步)和分辨率偏低,SDXL 模型未充分利用 Hires Fix 提升细节
- `prompt_prefix` 中的中国人面孔特征词偏弱或措辞泛化(如 `asian girl` 无权重),欧美面孔偏向风险未完全规避
- `anti_detect_postprocess` 将噪声扰动与美化处理混在一起,无法独立调节美化强度
- LLM Prompt 指南缺少针对人物真实感/中国审美的专项指导词模板
**约束:**
- 不引入新的外部 Python 依赖
- Hires Fix 仅对 SDXL 模型启用(SD 1.5 显存不足)
- 现有 `txt2img` API 接口签名不做 breaking change,新参数均使用默认值向后兼容
## Goals / Non-Goals
**Goals:**
- 为各模型新增"高画质"预设档,SDXL 启用 Hires Fix 参数
- 系统性强化各模型 `prompt_prefix` 中的中国人审美特征词(精致五官、白皙透亮、杏眼、减龄感、中式气质)
- 将 `anti_detect_postprocess` 拆分为独立的 `beauty_enhance()` + `anti_detect_postprocess()` 两段,支持通过 `enhance_level` 参数控制美化强度
- 扩充 LLM Prompt 指南中的人物真实感描述规则,加入中国审美专项指导词模板
- 在 UI 绘图参数面板新增"美化强度"控件,通过 `services/content.py` 传递至后处理管线
**Non-Goals:**
- 不新增 SD 模型支持(不修改模型识别逻辑)
- 不做图片超分(Real-ESRGAN 等外部工具)
- 不修改 ReActor 换脸逻辑
- 不改变发布流程或队列逻辑
## Decisions
### 决策 1:Hires Fix 仅对 SDXL 模型启用
**选择:** 在 `txt2img` payload 中,当模型 `arch == "sdxl"` 且 `quality_mode` 为高画质档时注入 Hires Fix 参数(`enable_hr: true`, `hr_scale: 1.5`, `hr_upscaler: "4x-UltraSharp"`, `denoising_strength: 0.4`)。
**理由:** SD 1.5 模型显存通常不足以做 Hires Fix,SDXL 的 832×1216 基础分辨率放大 1.5x 可达 1248×1824,大幅提升皮肤/五官细节,代价是生成时间增加约 50%。
**替代方案:** 后处理做 PIL 超分 → 效果差、无 AI 重绘细节;全模型启用 → 触发 SD 1.5 OOM 风险。
---
### 决策 2:beauty_enhance 作为独立函数,enhance_level 控制强度
**选择:** 将原 `anti_detect_postprocess` 中的美化逻辑(锐化、色彩增强)抽取为 `beauty_enhance(img, level: float = 1.0) -> Image`,`level=0` 跳过,`level=1` 为默认,`level=2` 为强化。`anti_detect_postprocess` 保持仅做扰动逻辑,调用顺序:`beauty_enhance → anti_detect_postprocess`。
**理由:** 当前两者混在同一函数中,美化参数硬编码无法从 UI 调节;分离后可独立测试,且 UI 控件可直接映射到 `enhance_level`。
**替代方案:** 在 `anti_detect_postprocess` 中增加 flag 参数 → 函数职责混乱,不符合单一职责原则。
---
### 决策 3:中国审美词以"权重词组"方式注入 prompt_prefix
**选择:** 在各模型 `prompt_prefix` 中为中国人面孔特征词加入权重括号,如 `(almond eyes:1.2)`, `(delicate nose:1.1)`, `(porcelain skin:1.2)`, `(youthful appearance:1.1)`, `(chinese beauty:1.2)`,同时在 `negative_prompt` 中补充 `deep-set eyes, strong jawline, prominent brow ridge` 等欧美特征排除词。
**理由:** SD 权重词是最直接有效的方式;不引入新依赖;各模型独立配置可针对其风格微调权重值。
---
### 决策 4:LLM Prompt 指南新增中国审美人物描述模板
**选择:** 在 `get_sd_prompt_guide()` 中新增"人物描述词库"段落,按五官/肤色/气质/发型四个维度分别给出推荐词,并加一条规则:描述人物时优先从该词库选词,禁用 `beautiful girl` 等无导向泛化词。
**理由:** LLM 倾向于使用泛化美感词,不加约束时易生成欧美审美偏向的描述,规则化词库可强制对齐目标审美。
## Risks / Trade-offs
- **[风险] Hires Fix 生成时间大幅增加** → 缓解:仅在新增"极致 (约5分钟)"档才默认开启,其他档保持原速;UI 标注预计用时
- **[风险] 中国审美词过强导致所有图片千人一面** → 缓解:权重控制在 1.1-1.2 之间,不超过 1.3;`PERSONA_SD_PROFILES` 各人设保留差异化风格词
- **[风险] beauty_enhance 引入 numpy 依赖(实际已存在)** → 无风险,现有代码已 `import numpy`
- **[Trade-off] enhance_level UI 控件增加 UI 复杂度** → 接受:放在"高级设置"面板折叠区,不影响主流程
## Migration Plan
1. 修改 `sd_service.py`:更新各模型 `prompt_prefix`/`negative_prompt`,新增高画质预设,拆分 `beauty_enhance`
2. 修改 `llm_service.py`:更新 `get_sd_prompt_guide()` 指南内容
3. 修改 `services/content.py`:`generate_images` 新增 `enhance_level` 参数(默认 `1.0`,向后兼容)
4. 修改 `ui/tab_create.py`:在"高级设置"中新增"美化强度"滑块,范围 0.0-2.0,默认 1.0
无数据库迁移,无配置文件格式变更。回滚:git revert 即可。
## Open Questions
- Hires Fix 的 `hr_upscaler` 在用户环境中是否普遍可用(需确认 "4x-UltraSharp" 模型是否已下载);若不存在应降级为 "Latent" 作为 fallback
- `beauty_enhance` 的最优参数值(锐化半径、色彩增益系数)需在实际出图中调试确认
@@ -0,0 +1,31 @@
## Why
当前图片生成管线存在两个核心问题:一是 SD 参数预设偏保守(步数少、CFG 偏低),LLM 绘图 Prompt 对真实感与美感的引导词不够精准,后处理未做美化增强直接引入扰动,导致出图偏平、细节不足;二是人物面孔与气质的正向引导词缺乏针对中国审美的专项优化(精致五官、白皙透亮肤色、杏眼桃花眼、减龄气质、中式温柔感等小红书目标用户偏好特征),导致生成人物不够符合用户审美认同。现在正是系统内容数量稳定增长、需要提升质量口碑与用户共鸣的时机。
## What Changes
- 新增"高画质"生成预设,提升各模型的步数、采样器(DPM++ 2M SDE Karras 等),增加 Hires Fix / 放大修复支持
- 优化 LLM 生成绘图 Prompt 的系统指导词,注入更多真实感/光影/皮肤细节关键词,区分人物与场景图风格指导
- 在各模型 `prompt_prefix` 与 `PERSONA_SD_PROFILES` 中系统性强化中国人审美特征词(精致五官、白皙透亮、杏眼/桃花眼、减龄感、中式气质),并剔除容易偏向欧美面孔的泛化词
- 将后处理管线拆解为"美化增强"(锐化、肤色修正、色彩提升)→ "反 AI 检测扰动"两个独立阶段,确保美化先于扰动执行
- 在 `services/content.py` 的 `generate_images` 调用链中暴露"美化强度"参数,传递至后处理管线
## Capabilities
### New Capabilities
- `image-quality-presets`:各 SD 模型的高画质预设参数(高步数、高分辨率、Hires Fix 支持),以及预设选择逻辑优化
- `image-post-enhancement`:生成后专用美化增强管线(智能锐化、肤色色调微调、饱和度提升),在反 AI 扰动之前执行
- `llm-prompt-aesthetics`:LLM 绘图 Prompt 生成指南的美感/真实感强化规则,针对人物与场景分别给出增强词模板
- `chinese-aesthetic-profile`:针对中国审美偏好的人物面孔与气质关键词体系,包含模型级 `prompt_prefix` 增强词库和各人设档位的面孔风格词,覆盖"精致五官、白皙透亮、减龄感、中式气质"等维度
### Modified Capabilities
(无现有 spec 涉及图片生成质量,无需修改现有 spec)
## Impact
- **`sd_service.py`**:`SD_MODEL_PROFILES` 各模型的 `presets` 字段(新增高画质档)、`prompt_prefix`/`negative_prompt`(中国审美词优化)、`PERSONA_SD_PROFILES` 各人设的 `prompt_boost`(面孔风格词强化)、`txt2img` 方法(Hires Fix 参数注入)、`anti_detect_postprocess`(拆分为 beauty_enhance + anti_detect 两段)
- **`llm_service.py`**:`get_sd_prompt_guide()` 方法中的系统指导词内容(含中国审美人物描述指南)
- **`services/content.py`**:`generate_images()` 函数签名新增 `enhance_level` 参数
- **`ui/tab_create.py`**:绘图参数面板新增"美化强度"滑块控件
@@ -0,0 +1,35 @@
## ADDED Requirements
### Requirement: 各 SD 模型 prompt_prefix 包含中国审美面孔特征词
系统 SHALL 在 `SD_MODEL_PROFILES` 每个模型的 `prompt_prefix` 中包含以下中国审美特征词(具体权重值由各模型风格微调,但不得省略):
- 眼型:`(almond eyes:1.2)` 或 `(delicate almond-shaped eyes:1.2)`
- 肤色:`(porcelain skin:1.2)` 或 `(fair porcelain skin:1.2)` 或 `(luminous fair skin:1.2)`
- 五官精致感:`(delicate facial features:1.2)` 或 `(refined features:1.2)`
- 气质:`(youthful appearance:1.1)` 或 `(elegant temperament:1.1)`
#### Scenario: 生成的人物图像呈现中国大众偏好的精致感
- **WHEN** 使用任意 SD 模型生成含人物的图片
- **THEN** `prompt_prefix` 中包含杏眼、白皙肤色、精致五官三类词汇中各至少一个
### Requirement: 各 SD 模型 negative_prompt 补充欧美面孔排除词
系统 SHALL 在 `SD_MODEL_PROFILES` 每个模型的 `negative_prompt` 中包含以下欧美面孔特征排除词(在现有基础上补充):
- `strong jawline`、`prominent brow ridge`、`deep-set eyes`(如已存在则保留权重)
- `angular facial structure`、`square jaw`、`heavy brow`
#### Scenario: negative_prompt 明确排除欧美面孔结构特征
- **WHEN** 任意模型进行人物图片生成
- **THEN** negative_prompt 中包含 `strong jawline`、`prominent brow ridge`、`deep-set eyes` 至少两个排除词
### Requirement: PERSONA_SD_PROFILES 各人设包含中式气质差异化增强词
系统 SHALL 在 `PERSONA_SD_PROFILES` 中,每个人设的 `prompt_boost` 包含至少 1 个与中国审美相关的气质词,且各人设之间的气质词须有差异化区分(如:甜妹-减龄感、知性-优雅气质、赛博博主-精致感 + 未来感)。
#### Scenario: 不同人设生成的人物具有可感知的气质差异
- **WHEN** 分别以"甜妹"和"知性"人设各生成一批图片
- **THEN** 两批图片中 `prompt_boost` 的核心气质词不重复,体现差异化风格
### Requirement: 美化增强对肤色偏向做修正
`beauty_enhance()` 函数 SHALL 在饱和度提升时对色调偏暖方向微调(暖白/自然肤色),避免饱和度提升导致肤色偏黄或偏红。具体实现通过调整 PIL 色调(Hue)向暖白方向 ±5° 以内微调。
#### Scenario: 美化后肤色不发黄不发红
- **WHEN** 调用 `beauty_enhance(img, level=1.0)` 对含人物的图片处理
- **THEN** 输出图片肤色区域饱和度提升的同时,色调保持在自然暖白范围内(目视无偏黄/偏红现象)
@@ -0,0 +1,38 @@
## ADDED Requirements
### Requirement: beauty_enhance 作为独立美化增强函数
系统 SHALL 在 `sd_service.py` 中提供 `beauty_enhance(img: Image.Image, level: float = 1.0) -> Image.Image` 函数,支持以下增强操作(所有操作的强度随 `level` 线性缩放):
- 智能锐化(基于 `ImageFilter.UnsharpMask`,强调五官轮廓与发丝细节)
- 亮度与对比度微增(`level=1.0` 时各 +2-3%,`level=2.0` 时各 +4-6%)
- 饱和度提升(`level=1.0` 时 +5%,`level=2.0` 时 +10%,令肤色更均匀饱满)
- `level=0` 时 SHALL 直接返回原图,跳过所有处理
#### Scenario: 正常调用增强管线
- **WHEN** 调用 `beauty_enhance(img, level=1.0)`
- **THEN** 返回经过锐化、亮度微调、饱和度提升处理的 PIL Image,图片尺寸不变
#### Scenario: level=0 时跳过处理
- **WHEN** 调用 `beauty_enhance(img, level=0)`
- **THEN** 直接返回原始 img 对象,不执行任何增强操作
#### Scenario: level=2 时增强效果加倍
- **WHEN** 调用 `beauty_enhance(img, level=2.0)`
- **THEN** 锐化、亮度、饱和度的调整幅度均为 level=1.0 时的 2 倍
### Requirement: 后处理管线顺序为美化先于反 AI 扰动
系统 SHALL 在 `txt2img` 和 `img2img` 生成流程中,对每张输出图片依次执行:`beauty_enhance(img, level) → anti_detect_postprocess(img)`,确保美化增强在扰动引入之前完成。
#### Scenario: 生成图片经过完整两阶段后处理
- **WHEN** `txt2img` 成功生成图片
- **THEN** 每张图片先经过 `beauty_enhance`,再经过 `anti_detect_postprocess`,最终返回给调用方
### Requirement: enhance_level 参数从 UI 传递至后处理管线
系统 SHALL 支持 `enhance_level: float` 参数从 Gradio UI 经 `services/content.py` 的 `generate_images()` 函数传递至 `SDService.txt2img()`,最终传入 `beauty_enhance()`。新参数默认值为 `1.0`,向后兼容。
#### Scenario: UI 美化强度滑块值传递到生成结果
- **WHEN** 用户在"高级设置"中将美化强度滑块调整为 2.0 并点击生成
- **THEN** 生成图片经过 `beauty_enhance(img, level=2.0)` 处理
#### Scenario: 旧调用方不传 enhance_level 时行为不变
- **WHEN** `generate_images()` 未传入 `enhance_level` 参数
- **THEN** 默认使用 `level=1.0`,行为与优化前相同
@@ -0,0 +1,23 @@
## ADDED Requirements
### Requirement: 各 SD 模型新增高画质预设档
系统 SHALL 在 `SD_MODEL_PROFILES` 的每个模型 `presets` 字典中新增 `"高画质 (约5分钟)"` 档位,参数须满足:SD 1.5 模型步数 ≥ 50、CFG 6.5-7.5、采样器为 `DPM++ SDE`;SDXL 模型步数 ≥ 40、CFG 5.5-6.5、采样器为 `DPM++ 2M SDE`,并启用 Hires Fix 参数(`enable_hr: true`)。
#### Scenario: 用户选择高画质档后生成请求包含 Hires Fix
- **WHEN** 用户将质量模式切换为"高画质 (约5分钟)"且当前模型为 SDXL 架构
- **THEN** `txt2img` API 请求 payload 中包含 `enable_hr: true`、`hr_scale: 1.5`、`hr_upscaler` 字段
#### Scenario: SD 1.5 模型高画质档不启用 Hires Fix
- **WHEN** 用户将质量模式切换为"高画质 (约5分钟)"且当前模型 `arch == "sd15"`
- **THEN** payload 中不含 `enable_hr` 字段,以避免 OOM
#### Scenario: Hires Fix upscaler 不存在时降级
- **WHEN** `hr_upscaler` 指定的放大器模型(如 "4x-UltraSharp")在 SD WebUI 中不可用
- **THEN** 系统 SHALL 自动降级为 `"Latent"` 作为 fallback,并通过日志记录警告
### Requirement: 预设名称在 UI 中按模型动态更新
系统 SHALL 在用户切换 SD 模型后,更新 UI 质量模式单选按钮的选项列表,使其始终反映当前模型的可用预设档名称。
#### Scenario: 切换模型后预设列表刷新
- **WHEN** 用户在连接设置中切换 SD 模型
- **THEN** 创作页"生成模式"单选按钮的选项 SHALL 更新为该模型 `presets` 中的键名列表
@@ -0,0 +1,29 @@
## ADDED Requirements
### Requirement: LLM Prompt 指南包含人物真实感描述规则
`get_sd_prompt_guide()` 返回的指南 SHALL 包含"人物描述规则"段落,内容要求:
- 明确禁止使用 `beautiful girl`、`pretty woman`、`good looking` 等无导向泛化词
- 要求从五官(眼型、鼻型、唇型)、肤色(白皙、透亮、均匀)、气质(减龄、温柔、知性)三个维度分别提供具体描述词
- 对于有人物的 Prompt,要求至少包含 2 个五官/肤色词和 1 个气质词
#### Scenario: LLM 生成含人物的 Prompt 时使用规范词汇
- **WHEN** LLM 根据指南生成包含人物描述的 SD Prompt
- **THEN** Prompt 中不含 `beautiful`、`pretty`、`good looking` 等泛化词,而是包含如 `almond eyes`、`porcelain skin`、`youthful appearance` 等具体描述词
### Requirement: LLM Prompt 指南区分人物图与纯场景图的写作策略
`get_sd_prompt_guide()` 返回的指南 SHALL 明确区分两种写作模式:人物主体图(需详细描述人物特征)和纯场景/物品图(无需人物词,优先描述氛围、色彩、光线)。
#### Scenario: 生成场景图 Prompt 时不误加人物词
- **WHEN** 文案主题为室内布置或产品展示(无人物)
- **THEN** LLM 生成的 Prompt 中不包含人物特征描述词
#### Scenario: 生成人物图 Prompt 时包含完整人物描述
- **WHEN** 文案主题为穿搭、美妆或生活场景(含人物)
- **THEN** LLM 生成的 Prompt 中包含五官、肤色、气质三个维度的描述词各至少 1 个
### Requirement: LLM Prompt 指南包含光影与摄影感描述规范
`get_sd_prompt_guide()` 返回的指南 SHALL 包含光影描述规则,要求生成 Prompt 时指定具体光源类型(如 `soft window light`、`golden hour`、`studio lighting`)而非泛化词(如 `good lighting`)。
#### Scenario: Prompt 中包含具体光影词而非泛化词
- **WHEN** LLM 根据指南生成 SD Prompt
- **THEN** Prompt 中包含 `soft window light`、`golden hour`、`studio lighting`、`diffused natural light` 等具体光影词之一
@@ -0,0 +1,50 @@
## 1. sd_service.py — 中国审美词优化
- [x] 1.1 更新 `majicmixRealistic` 模型 `prompt_prefix`:添加 `(almond eyes:1.2)`、`(porcelain skin:1.2)`、`(youthful appearance:1.1)`,确保 `delicate facial features` 带权重
- [x] 1.2 更新 `realisticVision` 模型 `prompt_prefix`:添加 `(almond eyes:1.1)`、`(luminous fair skin:1.2)`、`(refined features:1.2)`、`(elegant temperament:1.1)`
- [x] 1.3 更新 `juggernautXL` 模型 `prompt_prefix`:添加 `(almond eyes:1.2)`、`(porcelain skin:1.2)`、`(delicate facial features:1.2)`、`(youthful appearance:1.1)`,`asian girl` 改为 `(chinese beauty:1.2)`
- [x] 1.4 在三个模型 `negative_prompt` 中补充 `strong jawline, prominent brow ridge, angular facial structure, square jaw, heavy brow`
- [x] 1.5 更新各 `PERSONA_SD_PROFILES` 人设的 `prompt_boost`:确保每个人设包含至少 1 个与中国审美相关的差异化气质词(甜妹-减龄感、知性-优雅气质、赛博博主-精致感 + 未来感等)
## 2. sd_service.py — 高画质预设与 Hires Fix
- [x] 2.1 在 `majicmixRealistic` `presets` 中新增 `"高画质 (约5分钟)"`:steps=50, cfg_scale=7.0, width=640, height=960, sampler="DPM++ SDE", scheduler="Karras", batch_size=1
- [x] 2.2 在 `realisticVision` `presets` 中新增 `"高画质 (约5分钟)"`:steps=50, cfg_scale=7.0, width=640, height=960, sampler="DPM++ SDE", scheduler="Karras", batch_size=1
- [x] 2.3 在 `juggernautXL` `presets` 中新增 `"高画质 (约5分钟)"`:steps=40, cfg_scale=6.0, width=832, height=1216, sampler="DPM++ 2M SDE", scheduler="Karras", batch_size=1,并增加 `enable_hr: True, hr_scale: 1.5, hr_upscaler: "4x-UltraSharp", hr_second_pass_steps: 20, denoising_strength: 0.4`
- [x] 2.4 在 `txt2img` 方法中:当 preset 包含 `enable_hr` 字段时,将该字段注入 SD API payload;当架构为 sd15 时强制忽略 `enable_hr`
- [x] 2.5 添加 Hires Fix upscaler fallback 逻辑:捕获 SD API 返回的 upscaler 不存在错误,降级为 `"Latent"` 并记录 warning 日志
## 3. sd_service.py — 美化增强管线拆分
- [x] 3.1 新增 `beauty_enhance(img: Image.Image, level: float = 1.0) -> Image.Image` 函数:`level=0` 时直接返回原图
- [x] 3.2 实现 `beauty_enhance` 锐化逻辑:使用 `ImageFilter.UnsharpMask(radius=1.5*level, percent=int(120*level), threshold=2)`
- [x] 3.3 实现 `beauty_enhance` 亮度/对比度/饱和度增强:亮度系数 `1.0 + 0.02*level`,对比度系数 `1.0 + 0.02*level`,饱和度系数 `1.0 + 0.05*level`
- [x] 3.4 实现 `beauty_enhance` 暖白肤色微调:对皮肤色调区域做降红提蓝校正(numpy 实现,无 numpy 时跳过)
- [x] 3.5 修改 `txt2img` 方法:在 `anti_detect_postprocess(img)` 调用前插入 `beauty_enhance(img, level=enhance_level)`,`enhance_level` 参数从方法签名传入(默认 `1.0`)
- [x] 3.6 修改 `img2img` 方法:同样应用 `beauty_enhance → anti_detect_postprocess` 两阶段后处理
## 4. llm_service.py — Prompt 指南优化
- [x] 4.1 在 `get_sd_prompt_guide()` 中添加"人物描述规则"段落:明确禁止 `beautiful girl`/`pretty woman`/`good looking` 等泛化词
- [x] 4.2 在指南中添加五官/肤色/气质三维度词库:眼型推荐词(`almond eyes`, `phoenix eyes`, `bright doe eyes`)、肤色推荐词(`porcelain skin`, `luminous fair skin`, `translucent skin`)、气质推荐词(`youthful`, `elegant temperament`, `gentle charm`, `intellectual beauty`)
- [x] 4.3 在指南中添加人物图 vs 纯场景图写作策略区分说明
- [x] 4.4 在指南中添加光影具体描述规范:要求使用 `soft window light`/`golden hour`/`studio lighting`/`diffused natural light` 等词,禁用 `good lighting`
## 5. services/content.py — 参数传递
- [x] 5.1 为 `generate_images()` 函数增加 `enhance_level: float = 1.0` 参数
- [x] 5.2 将 `enhance_level` 传入 `svc.txt2img()` 调用
## 6. ui/tab_create.py — UI 控件
- [x] 6.1 在"高级设置 (覆盖预设)"折叠面板中新增 `enhance_level` 滑块:`gr.Slider(0.0, 2.0, value=1.0, step=0.1, label="美化强度", info="0=关闭 1=默认 2=强化")`
- [x] 6.2 将 `enhance_level` 滑块值存入配置(`fn_cfg_set("enhance_level", ...)`)并在加载时读取
- [x] 6.3 将 `enhance_level` 加入 `btn_gen_img.click` 的 `inputs` 列表,并更新 `fn_gen_img` 函数签名
## 7. 验证与测试
- [ ] 7.1 生成含人物的测试图片:确认 `majicmixRealistic` 和 `juggernautXL` 输出人物具有明显中国面孔特征
- [ ] 7.2 测试高画质档:SDXL 模型 API payload 中确认包含 `enable_hr: true`
- [ ] 7.3 测试 `beauty_enhance(img, level=0)` 返回原图不变
- [ ] 7.4 测试 `beauty_enhance(img, level=2.0)` 效果目视无偏黄/偏红
- [ ] 7.5 验证 `generate_images()` 不传 `enhance_level` 时行为与修改前一致(回归测试)