## ADDED 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` 为布尔值