komga-creater/docs/plans/2026-02-28-manga-generator-validation-implementation.md
2026-03-03 17:59:27 +08:00

530 lines
14 KiB
Markdown
Raw 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.

# 漫画生成工具可行性验证实施计划
> **For Claude:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task.
**目标:** 验证从小说文本到漫画分镜图片提示词的端到端AI处理流程可行性
**架构:** 使用Dify工作流串联两个DeepSeek-R1模型节点第一个节点润色小说文本第二个节点生成Markdown格式的分镜提示词
**技术栈:** Dify本地自部署、DeepSeek-R1 API、JSON DSL工作流配置
---
## 准备工作
### 任务1验证Dify环境就绪
**步骤1检查Dify服务状态**
```bash
# 检查Dify服务是否运行
curl -s http://localhost:3000/api/status || echo "Dify服务未运行"
```
**预期输出:** JSON格式的状态信息或错误信息
**步骤2确认API访问权限**
```bash
# 测试Dify API端点
curl -X GET "http://localhost:3000/api/console/api-keys" \
-H "Authorization: Bearer YOUR_API_KEY"
```
**预期输出:** 返回API密钥列表或认证错误
**步骤3检查模型提供商配置**
1. 登录Dify管理界面
2. 导航到 "模型提供商" → "DeepSeek"
3. 确认已配置有效的API密钥
4. 测试模型连接性
**验证标准:** 所有基础服务正常运行
---
### 任务2准备DeepSeek-R1模型配置
**文件:** Dify管理界面配置
**步骤1添加DeepSeek模型提供商**
1. 在Dify中进入 "模型提供商"
2. 添加DeepSeek提供商
3. 配置:
- 提供商名称DeepSeek
- API密钥你的DeepSeek API密钥
- 端点https://api.deepseek.com
**步骤2创建DeepSeek-R1模型配置**
1. 进入 "模型"
2. 添加新模型:
- 模型名称deepseek-r1
- 提供商DeepSeek
- 模型IDdeepseek-r1
- 模式:聊天
- 最大令牌4096
- 温度0.7(默认)
**步骤3测试模型响应**
```bash
# 使用Dify API测试模型
curl -X POST "http://localhost:3000/v1/chat-messages" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"inputs": {},
"query": "测试消息",
"response_mode": "blocking",
"conversation_id": "",
"user": "test-user",
"model": "deepseek-r1"
}'
```
**预期输出:** 成功的模型响应
**验证标准:** DeepSeek-R1模型可通过Dify正常调用
---
### 任务3导入工作流DSL
**文件:** `workflow/manga-generator-dify-dsl.json`(需要创建)
**步骤1创建工作流DSL文件**
```bash
# 创建工作流目录
mkdir -p workflow
# 创建DSL文件
cat > workflow/manga-generator-dify-dsl.json << 'EOF'
{
"version": "1.0",
"name": "漫画生成工作流验证",
"description": "验证小说到漫画分镜提示词的AI处理流程",
"variables": [
{
"variable": "input_novel",
"value_type": "string",
"required": true,
"label": "小说原文",
"description": "用户输入的小说短段落300-1000字"
},
{
"variable": "edited_text",
"value_type": "string",
"required": false,
"label": "编辑后文本",
"description": "AI编辑润色后的叙述文本"
},
{
"variable": "storyboard_markdown",
"value_type": "string",
"required": false,
"label": "分镜提示词",
"description": "Markdown格式的分镜描述和图片提示词"
}
],
"nodes": [
{
"id": "editor_node",
"type": "llm",
"name": "小说编辑AI",
"description": "润色和增强小说文本描述",
"config": {
"model": {
"provider": "deepseek",
"name": "deepseek-r1",
"mode": "chat",
"temperature": 0.7,
"max_tokens": 2000
},
"prompt": {
"system": "你是一个专业的小说编辑。你的任务是将用户提供的小说段落进行润色和增强,使其更适合转换为视觉分镜。\\n\\n要求\\n1. 保持原有情节和人物设定不变\\n2. 增强场景描述、角色动作和情感表达\\n3. 让文本更具画面感和戏剧张力\\n4. 输出保持中文长度控制在原文本的1.2-1.5倍",
"user": "请润色以下小说段落,使其更适合视觉化:\\n\\n{{input_novel}}"
},
"outputs": {
"edited_text": "{{llm_response}}"
}
}
},
{
"id": "storyboard_node",
"type": "llm",
"name": "分镜AI",
"description": "将叙述文本转换为分镜提示词",
"config": {
"model": {
"provider": "deepseek",
"name": "deepseek-r1",
"mode": "chat",
"temperature": 0.6,
"max_tokens": 3000
},
"prompt": {
"system": "你是一个专业的漫画分镜师。请将叙述文本转换为3-5个分镜描述每个分镜包含视觉元素和图片生成提示词。\\n\\n输出格式要求Markdown\\n# 分镜分析\\n\\n## 场景概览\\n[简要描述整体场景]\\n\\n## 分镜详情\\n\\n### 分镜1[标题]\\n**场景描述:** [详细视觉描述]\\n**角色动作:** [主要角色动作]\\n**情感氛围:** [情感色彩]\\n**图片提示词:** [用于图片生成的提示词,包含风格、构图等]\\n\\n### 分镜2[标题]\\n...\\n\\n## 风格建议\\n[推荐的图片生成风格,如:动漫风格、写实插画、水彩等]\\n\\n注意图片提示词要具体、详细包含构图、灯光、风格等要素。",
"user": "请将以下文本转换为漫画分镜提示词:\\n\\n{{edited_text}}"
},
"outputs": {
"storyboard_markdown": "{{llm_response}}"
}
}
}
],
"edges": [
{
"source": "input_novel",
"sourceHandle": "output",
"target": "editor_node",
"targetHandle": "input"
},
{
"source": "editor_node",
"sourceHandle": "edited_text",
"target": "storyboard_node",
"targetHandle": "edited_text"
},
{
"source": "storyboard_node",
"sourceHandle": "storyboard_markdown",
"target": "output",
"targetHandle": "input"
}
],
"outputs": [
{
"variable": "storyboard_markdown",
"label": "分镜提示词",
"description": "最终生成的Markdown格式分镜提示词"
}
]
}
EOF
```
**步骤2验证DSL文件格式**
```bash
# 检查JSON格式
python3 -m json.tool workflow/manga-generator-dify-dsl.json > /dev/null && echo "JSON格式正确" || echo "JSON格式错误"
```
**步骤3通过Dify界面导入工作流**
1. 登录Dify控制台
2. 进入 "工作流" → "创建工作流"
3. 选择 "导入"
4. 上传或粘贴DSL内容
5. 保存工作流为 "漫画生成验证工作流"
**验证标准:** 工作流成功导入两个LLM节点可见
---
### 任务4配置工作流节点参数
**步骤1调整编辑节点参数**
1. 在Dify工作流编辑器中打开导入的工作流
2. 点击 "小说编辑AI" 节点
3. 确认配置:
- 模型deepseek-r1
- 温度0.7
- 最大令牌2000
- 系统提示词:已正确设置
- 用户提示词模板:包含 `{{input_novel}}` 变量
**步骤2调整分镜节点参数**
1. 点击 "分镜AI" 节点
2. 确认配置:
- 模型deepseek-r1
- 温度0.6
- 最大令牌3000
- 系统提示词包含完整的Markdown格式要求
- 用户提示词模板:包含 `{{edited_text}}` 变量
**步骤3验证变量连接**
1. 检查所有边edges连接正确
- `input_novel``editor_node`
- `editor_node.edited_text``storyboard_node.edited_text`
- `storyboard_node.storyboard_markdown``output`
**步骤4保存工作流配置**
1. 点击 "保存"
2. 发布工作流版本
**验证标准:** 工作流配置完整,所有节点连接正确
---
### 任务5测试工作流执行
**测试用例文件:** `tests/test-inputs.md`
**步骤1创建测试输入**
```bash
# 创建测试用例目录
mkdir -p tests
# 创建测试输入文件
cat > tests/test-inputs.md << 'EOF'
## 测试用例1基础场景
输入文本:
李阳推开厚重的木门,月光透过窗户洒在地板上。他看到父亲坐在书桌前,手里拿着一封信。房间里弥漫着淡淡的墨香,父亲的背影显得格外孤独。
预期输出:
1. 编辑节点:润色后的叙述文本(更丰富的视觉和情感描述)
2. 分镜节点3-5个分镜的Markdown描述
## 测试用例2动作场景
输入文本:
王雪快速穿过拥挤的街道,雨水打湿了她的头发。她回头看了一眼,追赶者的影子在路灯下拉长。心跳加速,她躲进了小巷的阴影中。
预期输出:
1. 编辑节点:增强动作节奏感
2. 分镜节点:动态构图的分镜描述
EOF
```
**步骤2执行测试用例1**
```bash
# 使用Dify API调用工作流
curl -X POST "http://localhost:3000/v1/workflows/run" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"inputs": {
"input_novel": "李阳推开厚重的木门,月光透过窗户洒在地板上。他看到父亲坐在书桌前,手里拿着一封信。房间里弥漫着淡淡的墨香,父亲的背影显得格外孤独。"
},
"response_mode": "blocking",
"user": "test-user-1"
}'
```
**预期输出:** JSON响应包含 `storyboard_markdown` 字段
**步骤3验证输出格式**
检查响应中的 `storyboard_markdown` 字段:
1. 是否包含 "# 分镜分析" 标题
2. 是否包含 "## 场景概览" 部分
3. 是否包含 "### 分镜1" 结构
4. 是否包含 "**图片提示词:**" 字段
**步骤4执行测试用例2**
重复步骤2-3使用测试用例2的输入文本
**验证标准:** 两个测试用例都能成功执行输出符合Markdown格式要求
---
### 任务6质量评估
**评估文件:** `tests/quality-assessment.md`
**步骤1创建质量评估标准**
```bash
cat > tests/quality-assessment.md << 'EOF'
## 质量评估标准
### 编辑节点质量1-5分
1. **画面感增强**:是否增强了视觉描述?
2. **情感表达**:是否增强了情感氛围?
3. **文本流畅性**:润色后是否更流畅自然?
4. **长度控制**是否控制在1.2-1.5倍原长度?
### 分镜节点质量1-5分
1. **分镜数量**是否生成3-5个合理分镜
2. **描述具体性**:场景描述是否具体可视觉化?
3. **提示词质量**:图片提示词是否包含构图、灯光、风格?
4. **格式规范性**是否严格遵循Markdown格式
### 总体评分
- 优秀15-20分
- 良好10-14分
- 一般5-9分
- 需要改进0-4分
EOF
```
**步骤2人工评估输出质量**
1. 将任务5的输出保存到文件
```bash
# 保存测试用例1输出
echo '测试用例1输出内容...' > tests/output-test1.md
# 保存测试用例2输出
echo '测试用例2输出内容...' > tests/output-test2.md
```
2. 根据质量评估标准对每个输出打分
3. 记录评分结果
**步骤3识别改进点**
1. 分析低分项目原因
2. 提出提示词优化建议
3. 记录需要调整的参数
**验证标准:** 完成质量评估识别至少3个改进点
---
### 任务7性能测试
**步骤1测试响应时间**
```bash
# 记录工作流执行时间
time curl -X POST "http://localhost:3000/v1/workflows/run" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"inputs": {
"input_novel": "测试文本约100字长度。用于性能测试。需要包含足够的细节让AI能够处理但不要太长以免影响测试速度。"
},
"response_mode": "blocking",
"user": "performance-test"
}'
```
**预期:** 总时间 < 30秒包括两个LLM调用
**步骤2测试并发能力可选**
```bash
# 同时发送3个请求
for i in {1..3}; do
curl -X POST "http://localhost:3000/v1/workflows/run" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d "{
\"inputs\": {
\"input_novel\": \"并发测试文本 ${i}\"
},
\"response_mode\": \"blocking\",
\"user\": \"concurrent-test-${i}\"
}" &
done
wait
```
**步骤3记录性能指标**
1. 平均响应时间
2. 成功率
3. 错误率(如果有)
**验证标准:** 单个请求响应时间 < 30秒成功率 > 90%
---
### 任务8验证结论与报告
**报告文件:** `docs/validation-report.md`
**步骤1汇总验证结果**
```bash
cat > docs/validation-report.md << 'EOF'
# 漫画生成工具可行性验证报告
## 验证概述
- **验证时间**2026-02-28
- **验证目标**:测试小说→编辑→分镜→提示词的端到端流程
- **技术栈**Dify + DeepSeek-R1
## 验证结果
### 流程顺畅性 ✅/❌
[描述工作流是否能完整执行]
### 输出质量评估
**编辑节点评分**[X]/20
- 画面感增强:[X]/5
- 情感表达:[X]/5
- 文本流畅性:[X]/5
- 长度控制:[X]/5
**分镜节点评分**[Y]/20
- 分镜数量:[Y]/5
- 描述具体性:[Y]/5
- 提示词质量:[Y]/5
- 格式规范性:[Y]/5
**总体评分**[总分]/40
### 性能表现
- 平均响应时间:[Z]秒
- 成功率:[A]%
- 并发处理:[B]
## 关键发现
### 成功点
1. [发现的成功点1]
2. [发现的成功点2]
### 问题与改进点
1. [问题1及改进建议]
2. [问题2及改进建议]
## 可行性结论
**结论**[可行/部分可行/不可行]
**理由**
1. [理由1]
2. [理由2]
3. [理由3]
## 下一步建议
### 短期改进(如果继续验证)
1. [建议1]
2. [建议2]
### 长期规划(如果验证成功)
1. [规划1]
2. [规划2]
EOF
```
**步骤2填写验证结果**
根据实际测试结果填写报告中的各项评分和数据
**步骤3生成最终结论**
基于验证结果,给出明确的可行性结论
**验证标准:** 完成完整的验证报告,包含数据支持和明确结论
---
## 执行选项
**计划已完成并保存至 `docs/plans/2026-02-28-manga-generator-validation-implementation.md`**
**两种执行方式:**
**1. 子代理驱动(本次会话)** - 我分派新的子代理执行每个任务,任务间进行代码审查,快速迭代
**2. 并行会话(独立)** - 在新工作区开启新会话使用 executing-plans批量执行并设置检查点
**选择哪种方式?**