zhoujie 1ec520b47e feat(content): 新增智能选题引擎、批量创作和图文协同优化
- 新增智能选题引擎 `TopicEngine`,整合热点数据与历史权重,提供多维度评分和创作角度建议
- 新增内容模板系统 `ContentTemplate`,支持从 JSON 文件加载模板并应用于文案生成
- 新增批量创作功能 `batch_generate_copy`,支持串行生成多篇文案并自动入草稿队列
- 升级文案质量流水线:实现 Prompt 分层架构(基础层 + 风格层 + 人设层)、LLM 自检与改写机制、深度去 AI 化后处理
- 优化图文协同:新增封面图策略选择、SD prompt 与文案语义联动、图文匹配度评估
- 集成数据闭环:在文案生成中自动注入 `AnalyticsService` 权重数据,实现发布 → 数据回收 → 优化创作的完整循环
- 更新 UI 组件:新增选题推荐展示区、批量创作折叠面板、封面图策略选择器和图文匹配度评分展示

♻️ refactor(llm): 重构 Prompt 架构并增强去 AI 化处理

- 将 `PROMPT_COPYWRITING` 拆分为分层架构(基础层 + 风格层 + 人设层),提高维护性和灵活性
- 增强 `_humanize_content` 方法:新增语气词注入、标点不规范化、段落节奏打散和 emoji 密度控制
- 新增 `_self_check` 和 `_self_check_rewrite` 方法,实现文案 AI 痕迹自检与自动改写
- 新增 `evaluate_image_text_match` 方法,支持文案与 SD prompt 的语义匹配度评估(可选,失败不阻塞)
- 新增封面图策略配置 `COVER_STRATEGIES` 和情感基调映射 `EMOTION_SD_MAP`

📝 docs(openspec): 归档内容创作优化提案和详细规格

- 新增 `openspec/changes/archive/2026-02-28-optimize-content-creation/` 目录,包含设计文档、提案、规格说明和任务清单
- 新增 `openspec/specs/` 下的批量创作、文案质量流水线、图文协同、服务内容和智能选题引擎规格文档
- 更新 `openspec/specs/services-content/spec.md`,反映新增的批量创作和智能选题入口函数

🔧 chore(config): 更新服务配置和 UI 集成

- 在 `services/content.py` 中集成权重数据自动注入逻辑,实现数据驱动创作
- 在 `ui/app.py` 中新增选题推荐、批量生成和图文匹配度评估的回调函数
- 在 `ui/tab_create.py` 中新增智能选题推荐区、批量创作面板和图文匹配度评估组件
- 修复 `services/sd_service.py` 中的头像文件路径问题,确保目录存在
2026-02-28 21:04:09 +08:00

53 lines
2.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## Requirements
### Requirement: Prompt 分层架构
系统 SHALL 将文案生成 Prompt 拆分为三个独立层,按顺序拼接后发送给 LLM
1. **基础层**`PROMPT_BASE`):通用的小红书写作规则和反 AI 检测规则
2. **风格层**`PROMPT_STYLE_{name}`):按风格类型(好物种草、日常分享、攻略教程等)定制的写作指导
3. **人设层**:基于用户选择的人设动态注入视角和语气约束
#### Scenario: 分层 Prompt 拼接
- **WHEN** 调用 `generate_copy(topic, style, persona=...)`
- **THEN** 系统 SHALL 按 基础层 → 风格层 → 人设层 的顺序拼接 system prompt各层之间用分隔标记区分
#### Scenario: 风格层缺失时退回基础层
- **WHEN** 指定的 `style` 没有对应的风格层 Prompt 模板
- **THEN** 系统 SHALL 仅使用基础层 + 人设层,不报错
### Requirement: LLM 多轮自检机制
系统 SHALL 在文案生成后调用一次自检 LLM 请求,检查文案的 AI 痕迹程度和质量评分,根据评分决定是否触发改写。
#### Scenario: 自检触发改写
- **WHEN** 自检返回的 `ai_score`AI 痕迹评分0-100≥ 60
- **THEN** 系统 SHALL 将原始文案连同自检反馈一起发送给 LLM 进行改写,最多改写 1 次
#### Scenario: 自检通过直接返回
- **WHEN** 自检返回的 `ai_score` < 60
- **THEN** 系统 SHALL 直接返回原始文案不触发改写
#### Scenario: 自检超时不阻塞
- **WHEN** 自检 LLM 请求超时或失败
- **THEN** 系统 SHALL 跳过自检直接返回原始文案并记录警告日志
### Requirement: 深度去 AI 化后处理管线
系统 SHALL `_humanize_content()` 方法中新增以下后处理步骤
1. **语气词注入**在合适位置随机添加""""""等真人语气词
2. **标点不规范化**随机删除部分逗号/句号模拟手机打字习惯
3. **段落节奏打散**确保连续段落字数差异 30%
4. **emoji 密度控制**全文 emoji 数量控制在 6-12 分布不均匀
#### Scenario: 后处理不改变语义
- **WHEN** 对文案进行后处理
- **THEN** 处理后的文案 SHALL 保留原始语义和关键信息标签核心观点仅改变表达风格
#### Scenario: 段落节奏检测
- **WHEN** 后处理完成后
- **THEN** 相邻段落的字数差异 SHALL 至少有 30% 的概率满足 30% 的差异要求基于随机化
### Requirement: 文案质量评分输出
`generate_copy()` 方法 SHALL 在返回的 JSON 中新增 `quality_meta` 字段包含 `ai_score`AI 痕迹评分)、`self_check_passed`是否通过自检)、`rewritten`是否经过改写)。
#### Scenario: 质量元数据完整
- **WHEN** 文案生成成功返回
- **THEN** 返回的字典 SHALL 包含 `quality_meta` 字段其中 `ai_score` 0-100 整数`self_check_passed` `rewritten` 为布尔值