# 提示词 AI 优化功能

**状态**：待开发
**创建日期**：2026-04-17

## 需求背景

用户写提示词时，经常写得过于简单或不符合 Seedance 2.0 的提示词规范（如没用「图片n」引用素材、缺少核心要素、镜头语言模糊等），导致生成效果不理想。

引入火山官方的 SKILL.md（Seedance 2.0 Prompt Optimizer）能力，让用户在写完提示词后一键优化。

## 功能设计

### 用户视角
1. 用户在提示词输入框输入原始提示词（带 @素材引用）
2. 点击输入框旁的「AI 优化」按钮
3. 弹出预览弹窗，显示优化后的提示词
4. 用户点「采纳」→ 替换原提示词；点「取消」→ 保留原文
5. 消耗一定 token 数（计入团队 token 池）

### 技术方案

**后端**
- 新接口：`POST /api/v1/prompt/optimize`
- 入参：`prompt`（原始提示词，含 `@素材` 标记）、`asset_refs`（素材引用列表：label + type + url）
- 调用豆包模型（推荐 `doubao-seed-2.0` 最新版本，具体 model id 需确认）
- System prompt：基于 SKILL.md 改造成**一次性输出**模式（不做多轮交互）
- 返回：`optimized_prompt`（优化后的文本）+ `token_used`（消耗 token 数）
- 同时扣减团队 token 池

**前端**
- `PromptInput` 组件右侧加「AI 优化」按钮（带 ✨ 图标）
- 点击后：loading 状态 → 调用后端接口 → 弹出 `PromptOptimizeModal` 预览弹窗
- 弹窗显示：原始 vs 优化对比、token 消耗提示、采纳/取消按钮
- 采纳后：把优化结果写回 editor（保持 @mention 标签正确渲染）

**SKILL.md 改造要点**
- 去掉 Step 0（主动引导提问）→ 一次输入一次输出
- 去掉 Step 3 的「多选模板交互」→ 如遇歧义/冲突，在输出里以备注形式标注（如 `【注：检测到 X 冲突，已按 Y 处理】`）
- 保留 Step 2（素材自动映射 `@图N`）、Step 4（结构化输出：优化后提示词 / 优化问题 / 相关原则）

## 计费设计
- 提示词优化和视频生成共用**同一个 token 池**（用户已熟悉的计费机制）
- 不单独限额，按实际 token 消耗扣减
- 前端展示："本次优化消耗约 X token"

## 模型选择
- **首选**：豆包 2.0 系列最强模型（需查火山文档确认最新 model id）
- 备选：`doubao-1-5-pro-32k`（成本更低，任务够用）

## 待确认事项
- [ ] 豆包 2.0 系列当前最强模型的具体 model id
- [ ] Token 池扣减逻辑是否需要团队/个人双重配额
- [ ] 优化失败时（LLM 报错、token 超限）的前端兜底提示

## 验收标准
1. 用户输入粗糙提示词（如「美女跳舞」）→ 优化后符合 SKILL.md 的三段式结构（全局设定 / 时间线脚本 / 质感风格与约束）
2. 带 `@素材` 的提示词 → 优化后正确使用 `@图1/@图2/@视频1` 等标记
3. 冲突/缺失场景 → 在输出中以备注标明，不擅自填充
4. Token 消耗正确扣减到团队池
5. 用户可在弹窗中选择采纳或取消

## 参考文件
- SKILL.md（火山提供的原始技能文件）
- `docs/API文档/seedance 2.0 系列教程.MD` 第 2152 行起的「提示词技巧」部分
