多智能体歌曲创作工作流,采用拾光智能体架构(作者→音乐人→程序员),在用户说“创作一首歌”“写一首歌”“做首歌”“写首歌”“创作一...”时触发。
text
青 → 拾光 ◒ → writer(墨白✍️) → 歌词
→ musician(和弦🎵) → 音乐方案
→ programmer(引擎⚙️) → ComfyUI 合成
拾光是总工程师,拆解任务分配给各子会话,然后整合结果呈现给青。
墨白、和弦、引擎的名字 只是角色描述,不是预注册的 agent。
实际执行是通过 sessions_spawn 创建 全新的子会话,
并给每个子会话注入对应的角色描述(「你叫墨白,你是文字精灵...」)。
这意味着:
了解用户想要的风格/主题/情绪方向。可自由发挥,也可基于用户提供的方向。不需要每个都问,估摸着来。
方式: sessions_spawn 启动子 agent
参数:
label: writer-lyricsmodel: custom-integrate-api-nvidia-com/deepseek-ai/deepseek-v4-pro(NVIDIA API 版)context: isolated任务模板:
text
你叫墨白 ✍️,是拾光团队的文字精灵,世间一切文字归你管。
**任务**:写一首歌词,[风格/主题/情绪提示]。
写一首完整的歌词,包含:歌名、主歌(至少2段)、副歌、桥段(可选)。
歌词要有画面感和情绪层次。
**格式要求**:
歌名:《XXXX》
[主歌1] xxxx
[主歌2] xxxx
[副歌] xxxx
[桥段] xxxx
text
完成后直接输出歌词,不要多余解释。
接收墨白的歌词输出,传给和弦。
方式: sessions_spawn 启动子 agent
参数:
label: musician-melodymodel: custom-integrate-api-nvidia-com/deepseek-ai/deepseek-v4-pro(NVIDIA API 版)context: isolated任务模板(包含完整歌词):
text
你叫和弦 🎵,是拾光团队的旋律织造者。
墨白写了《XXXX》的歌词:
[完整歌词]
请给出完整的音乐设计方案:
1. **Style Tags(英文,供 AceStep 使用)**
2. **调性 & BPM**
3. **情感基调**
4. **编曲方案**:分段落乐器编排
5. **编曲强度曲线**
6. **AceStep 参数建议**:温度、top_p、CFG
7. **建议时长 duration(秒)**
完成后直接输出方案。
参数:
label: engine-comfyuimodel: deepseek/deepseek-v4-flash(不需 NVIDIA API)context: isolated任务模板中必须包含的内容:
markdown
你是引擎 ⚙️,拾光团队的程序员。
**⚠️ 必须:先读操作手册再动手!**
```bash
cat ~/.openclaw/workspace/tools/comfyui操作手册.md
任务:用 ComfyUI + AceStep 生成歌曲《XXX》
~/ai/ComfyUI/user/default/workflows/api工作流/audio_ace_step1_5_xl_sft.json直接给 [主歌1] 开始的内容。
text
### Step 5: 呈现结果
按格式输出:
Style Tags 曲风标签
歌词 [完整歌词]
参数
MEDIA:/path/to/output.mp3
text
## ComfyUI 合成细节
### 工作流
- **主力**:`audio_ace_step1_5_xl_sft.json`(SFT 版,50 步,音质好,支持长音频)
- 替代:`audio_ace_step1_5_xl_turbo.json`(Turbo 版,更快但音质略差)
### 启动 ComfyUI
```bash
# ✅ 正确方式(必须用此脚本)
bash /home/qsh/ai/run_comfyui.sh
# ❌ 禁止手动拼 python 路径
# ❌ 禁止加 --gpu-only
Node类型作用94TextEncodeAceStepAudio1.5文本编码(歌词/tags/参数入口)98EmptyAceStep1.5LatentAudio控制音频时长104UNETLoader主模型(acestep_v1.5_xl_sft)105DualCLIPLoaderCLIP 模型106VAELoaderVAE 模型107SaveAudioMP3输出 MP3110VAEDecodeAudioTiledVAE 分块解码(已配置,无需修改)
字段说明必须设置禁止操作tags风格标签(英文)✅—lyrics歌词正文✅不能含歌名行bpm速度✅—keyscale调性✅—duration时长(元数据)✅—temperature温度✅—top_pTop-P✅—cfg_scaleCFG 强度✅—language语言✅—seed种子✅直接用 intclipCLIP 引用❌保持 ["105", 0] 不动timesignature拍号❌保持默认 "4"generate_audio_codes—❌保持默认 Truetop_k—❌保持默认 0min_p—❌保持默认 0
python
wf["98"]["inputs"]["seconds"] = 185 # 实际控制生成时长
python
# ✅ 正确格式
wf["107"]["inputs"]["filename_prefix"] = "YYYYMMDD/audio/歌曲名"
# ❌ 错误格式: "audio/YYYYMMDD/歌曲名"
lyrics 字段传给 AceStep 后会被直接唱出来。 必须去掉 歌名:《XXX》 前缀!
python
# ✅ 正确:直接从 [主歌1] 开始
lyrics = """[主歌1]
xxxx"""
# ❌ 错误:歌名会被当歌词唱
lyrics = """歌名:《剑饮长风》
[主歌1]
xxxx"""
clip 字段是节点引用 ["105", 0], 绝不能改seed 字段可以设为随机整数: n["seed"] = random.randint(0, 999999999)node_errors,它会明确指出哪个节点出错参数值Steps50(工作流 KSampler 默认)cfg_scale7duration185sVAEVAEDecodeAudioTiled(工作流自带)seed随机
bash
# 先彻底清理残留进程
pkill -f "python.*main.py"
# 再重新启动
bash /home/qsh/ai/run_comfyui.sh
python
# 1. 从 ComfyUI output 移出
shutil.move(src, dst)
# 2. 删除源目录(如果空)
os.rmdir(comfyui_output_dir)
~/ai/ComfyUI/output/~/.openclaw/workspace/output/YYYYMMDD/audio/优先级:NVIDIA API 免费模型优先,长时间无响应才切 deepseek/deepseek-v4-flash
Agent模型说明墨白 ✍️custom-integrate-api-nvidia-com/deepseek-ai/deepseek-v4-proNVIDIA 免费和弦 🎵custom-integrate-api-nvidia-com/deepseek-ai/deepseek-v4-proNVIDIA 免费引擎 ⚙️deepseek/deepseek-v4-flash默认付费 API
每次 spawn 引擎时, 必须在任务模板中包含:
tools/comfyui操作手册.mdbash /home/qsh/ai/run_comfyui.sh 启动 ComfyUIclip 等节点引用字段详细操作手册: tools/comfyui操作手册.md