14 KiB
漫画生成工具可行性验证实施计划
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服务状态
# 检查Dify服务是否运行
curl -s http://localhost:3000/api/status || echo "Dify服务未运行"
预期输出: JSON格式的状态信息或错误信息
步骤2:确认API访问权限
# 测试Dify API端点
curl -X GET "http://localhost:3000/api/console/api-keys" \
-H "Authorization: Bearer YOUR_API_KEY"
预期输出: 返回API密钥列表或认证错误
步骤3:检查模型提供商配置
- 登录Dify管理界面
- 导航到 "模型提供商" → "DeepSeek"
- 确认已配置有效的API密钥
- 测试模型连接性
验证标准: 所有基础服务正常运行
任务2:准备DeepSeek-R1模型配置
文件: Dify管理界面配置
步骤1:添加DeepSeek模型提供商
- 在Dify中进入 "模型提供商"
- 添加DeepSeek提供商
- 配置:
- 提供商名称:DeepSeek
- API密钥:你的DeepSeek API密钥
- 端点:https://api.deepseek.com
步骤2:创建DeepSeek-R1模型配置
- 进入 "模型"
- 添加新模型:
- 模型名称:deepseek-r1
- 提供商:DeepSeek
- 模型ID:deepseek-r1
- 模式:聊天
- 最大令牌:4096
- 温度:0.7(默认)
步骤3:测试模型响应
# 使用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文件
# 创建工作流目录
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文件格式
# 检查JSON格式
python3 -m json.tool workflow/manga-generator-dify-dsl.json > /dev/null && echo "JSON格式正确" || echo "JSON格式错误"
步骤3:通过Dify界面导入工作流
- 登录Dify控制台
- 进入 "工作流" → "创建工作流"
- 选择 "导入"
- 上传或粘贴DSL内容
- 保存工作流为 "漫画生成验证工作流"
验证标准: 工作流成功导入,两个LLM节点可见
任务4:配置工作流节点参数
步骤1:调整编辑节点参数
- 在Dify工作流编辑器中打开导入的工作流
- 点击 "小说编辑AI" 节点
- 确认配置:
- 模型:deepseek-r1
- 温度:0.7
- 最大令牌:2000
- 系统提示词:已正确设置
- 用户提示词模板:包含
{{input_novel}}变量
步骤2:调整分镜节点参数
- 点击 "分镜AI" 节点
- 确认配置:
- 模型:deepseek-r1
- 温度:0.6
- 最大令牌:3000
- 系统提示词:包含完整的Markdown格式要求
- 用户提示词模板:包含
{{edited_text}}变量
步骤3:验证变量连接
- 检查所有边(edges)连接正确:
input_novel→editor_nodeeditor_node.edited_text→storyboard_node.edited_textstoryboard_node.storyboard_markdown→output
步骤4:保存工作流配置
- 点击 "保存"
- 发布工作流版本
验证标准: 工作流配置完整,所有节点连接正确
任务5:测试工作流执行
测试用例文件: tests/test-inputs.md
步骤1:创建测试输入
# 创建测试用例目录
mkdir -p tests
# 创建测试输入文件
cat > tests/test-inputs.md << 'EOF'
## 测试用例1:基础场景
输入文本:
李阳推开厚重的木门,月光透过窗户洒在地板上。他看到父亲坐在书桌前,手里拿着一封信。房间里弥漫着淡淡的墨香,父亲的背影显得格外孤独。
预期输出:
1. 编辑节点:润色后的叙述文本(更丰富的视觉和情感描述)
2. 分镜节点:3-5个分镜的Markdown描述
## 测试用例2:动作场景
输入文本:
王雪快速穿过拥挤的街道,雨水打湿了她的头发。她回头看了一眼,追赶者的影子在路灯下拉长。心跳加速,她躲进了小巷的阴影中。
预期输出:
1. 编辑节点:增强动作节奏感
2. 分镜节点:动态构图的分镜描述
EOF
步骤2:执行测试用例1
# 使用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:" 结构
- 是否包含 "图片提示词:" 字段
步骤4:执行测试用例2
重复步骤2-3,使用测试用例2的输入文本
验证标准: 两个测试用例都能成功执行,输出符合Markdown格式要求
任务6:质量评估
评估文件: tests/quality-assessment.md
步骤1:创建质量评估标准
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:人工评估输出质量
-
将任务5的输出保存到文件:
# 保存测试用例1输出 echo '测试用例1输出内容...' > tests/output-test1.md # 保存测试用例2输出 echo '测试用例2输出内容...' > tests/output-test2.md -
根据质量评估标准对每个输出打分
-
记录评分结果
步骤3:识别改进点
- 分析低分项目原因
- 提出提示词优化建议
- 记录需要调整的参数
验证标准: 完成质量评估,识别至少3个改进点
任务7:性能测试
步骤1:测试响应时间
# 记录工作流执行时间
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:测试并发能力(可选)
# 同时发送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:记录性能指标
- 平均响应时间
- 成功率
- 错误率(如果有)
验证标准: 单个请求响应时间 < 30秒,成功率 > 90%
任务8:验证结论与报告
报告文件: docs/validation-report.md
步骤1:汇总验证结果
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,批量执行并设置检查点
选择哪种方式?