先说清楚:为什么要搞多 Agent?
单 Agent 也能干活,为什么要折腾多 Agent?
场景 | 单 Agent | 多 Agent |
写个脚本还行 | 够用 | 没必要 |
一条视频从头做到尾 | 越干越乱 | 各司其职 |
多条内容并行 | 排队等 | 同时开工 |
一个 Agent 写脚本又剪视频 | 上下文爆炸 | 各管各的 |
一句话:活儿多了、流程长了,就得拆。
第一步:搞清楚你要什么
动手前先想明白三件事:
1. 你的业务流程是什么?
以短视频生产为例:
选题 → 写脚本 → 找素材 → 剪视频 → 质检 → 发布
每一步对应一个 Agent。
2. 谁来当”老板”?
需要一个 Orchestrator(编排者),负责:
·接收你的指令
·分配任务给其他 Agent
·收集结果、做决策
·汇报进度
我们叫它 主编 Agent。
3. 每个 Agent 干什么?
Agent | 干啥 | 模式建议 |
选题 | 找热点、挖选题 | run(一次性) |
脚本 | 写文案 | run(一次性) |
素材 | 找图找视频、生成数字人 | session(可能要补充) |
剪辑 | 合成视频 | run(一次性) |
质检 | 检查质量 | run(一次性) |
发布 | 多平台分发 | run(一次性) |
第二步:建目录结构
直接照着这个建:
mkdir -p openclaw/agents/{chief-editor,topic-scout,script-writer,material-hunter,video-editor,quality-checker,publisher}
mkdir -p openclaw/{memory,output,assets}建完长这样:
openclaw/
├── agents/
│ ├── chief-editor/ # 主编
│ ├── topic-scout/ # 选题
│ ├── script-writer/ # 脚本
│ ├── material-hunter/ # 素材
│ ├── video-editor/ # 剪辑
│ ├── quality-checker/ # 质检
│ └── publisher/ # 发布
├── memory/ # 记忆
├── output/ # 输出
└── assets/ # 素材
第三步:写 Agent 配置
每个 Agent 要有两个文件:IDENTITY.md 和 SOUL.md。
IDENTITY.md – 基本信息卡
放 agents/chief-editor/IDENTITY.md:
# 主编老曹## 基本信息- 名字:老曹- 代号:chief-editor- 角色:编排者- Emoji:🎬## 职责- 接收任务- 调度其他 Agent- 汇总结果
SOUL.md – 干活的详细指南
放 agents/chief-editor/SOUL.md:
# 主编老曹的 Soul## 你是谁你是内容主编,负责调度其他 Agent 协同工作。## 你要做什么1. 收到任务后,解析需求2. 按流程调用其他 Agent3. 收集结果,做最终审核4. 汇报完成情况## 你可以调度谁| Agent | 干啥 | 调用方式 ||-------|------|----------|| topic-scout | 找选题 | sessions_spawn, mode=run || script-writer | 写脚本 | sessions_spawn, mode=run || material-hunter | 找素材 | sessions_spawn, mode=session || video-editor | 剪视频 | sessions_spawn, mode=run || quality-checker | 质检 | sessions_spawn, mode=run || publisher | 发布 | sessions_spawn, mode=run |
## 怎么调用### 调用选题 Agent{"tool": "sessions_spawn","params": {"agent": "topic-scout","mode": "run","task": {"request": "要一个关于 xxx 的选题"}}}### 并行调用(脚本 + 素材同时搞)一次发两个 sessions_spawn:- 一个给 script-writer- 一个给 material-hunter
### 收结果子 Agent 完成后,会通过 Event Bus 自动推送结果给你。你会在消息里看到类似:[System] Subagent topic-scout completedResult: {...}## 状态怎么存每个任务建一个文件:memory/tasks/task_日期_序号.json{"task_id": "task_20260310_001","status": "EDITING","phases": {"PLANNING": {"completed_at": "...", "result": {...}},"SCRIPTING": {"completed_at": "...", "result": {...}}}}
其他 Agent 的 SOUL.md 怎么写
核心思路:告诉它干什么,给它什么输入,它输出什么。
选题 Agent (agents/topic-scout/SOUL.md):
# 选题 Agent## 你是谁你是选题专家,负责找热点、挖选题。## 输入-用户的大致方向-人设定位## 输出{"topics": [{"title": "Agent开发避坑指南","angle": "从踩坑角度切入","form": "口播","reason": "最近 Agent 很火,但很多人不知道怎么用"}]}## 怎么找选题1. 看最近 AI 圈子都在讨论什么2. 结合人设找切入点3. 输出 3-5 个选项供主编选择
脚本 Agent (agents/script-writer/SOUL.md):
# 脚本 Agent## 你是谁你是脚本写手,负责写视频文案。## 输入- 选题- 形式(口播/混剪/数字人)- 时长- 风格要求## 输出{"script": "完整的脚本文本","duration": 60,"segments": [{"text": "开头", "duration": 5},{"text": "正文", "duration": 50},{"text": "结尾", "duration": 5}]}## 写作要点- 开头 3 秒抓人- 用大白话,别整虚的- 禁用词:赋能、抓手、闭环、底层逻辑
第四步:写工作流配置
建 agent-workflow.json:
{"workflow": {"name": "video-production","version": "1.0.0"},"agents": {"chief-editor": {"role": "orchestrator","workspace": "agents/chief-editor","model": "claude-sonnet-4-6","max_concurrent_children": 5},"topic-scout": {"role": "worker","workspace": "agents/topic-scout","model": "claude-haiku-4-5","timeout_ms": 120000},"script-writer": {"role": "worker","workspace": "agents/script-writer","model": "claude-sonnet-4-6","timeout_ms": 300000},"material-hunter": {"role": "worker","workspace": "agents/material-hunter","model": "claude-haiku-4-5","timeout_ms": 600000,"persist_session": true},"video-editor": {"role": "worker","workspace": "agents/video-editor","model": "claude-sonnet-4-6","timeout_ms": 900000},"quality-checker": {"role": "worker","workspace": "agents/quality-checker","model": "claude-sonnet-4-6","timeout_ms": 180000},"publisher": {"role": "worker","workspace": "agents/publisher","model": "claude-haiku-4-5","timeout_ms": 300000}},"phases": [{"name": "planning","agent": "topic-scout","mode": "run","timeout_ms": 120000},{"name": "content_prep","parallel": true,"tasks": [{"name": "scripting", "agent": "script-writer", "mode": "run"},{"name": "collecting", "agent": "material-hunter", "mode": "session"}]},{"name": "editing","agent": "video-editor","mode": "run","timeout_ms": 900000},{"name": "quality_check","agent": "quality-checker","mode": "run","on_failure": {"score_below_60": "notify_user"}},{"name": "publishing","agent": "publisher","mode": "run"}],"storage": {"tasks_dir": "memory/tasks","output_dir": "output"}}
第五步:注册到 OpenClaw
编辑 ~/.openclaw/openclaw.json,把你的 Agent 加进去:
{"agents": {"list": [{"id": "chief-editor","workspace": "你的路径/openclaw/agents/chief-editor","identity": {"name": "主编老曹","theme": "调度和把控","emoji": "🎬"},"model": "claude-sonnet-4-6"},{"id": "topic-scout","workspace": "你的路径/openclaw/agents/topic-scout","identity": {"name": "探长","theme": "选题雷达","emoji": "🎯"},"model": "claude-haiku-4-5"}]}}
注意:把 你的路径 换成实际路径。
第六步:配通信通道
飞书
{"channels": {"feishu": {"appId": "cli_xxx","appSecret": "xxx","connectionMode": "websocket","groupPolicy": "open","requireMention": false}}}
Telegram
{"channels": {"telegram": {"botToken": "你的 bot token"}}}
绑定群
{"bindings": [{"agentId": "chief-editor","match": {"channel": "feishu","peer": {"kind": "group","id": "oc_xxx"}}}]}
怎么拿群 ID:
1.在群里发条消息
2.看日志:tail -f /tmp/openclaw/openclaw-*.log
3.找到群 ID
第七步:开跑
# 启动
openclaw gateway start
# 看状态
openclaw gateway status
# 看日志
openclaw logs
然后在群里发:
帮我做一条关于 Agent 开发的视频
主编 Agent 会收到消息,开始调度其他 Agent。
工作流怎么跑的
记忆系统怎么用
三层记忆
1.USER.md – 你的画像(不怎么变)
2.MEMORY.md – 长期记忆(定期更新)
3.memory/日期.md – 每日记录(按天写)
主编 Agent 每次启动时
1. 读 SOUL.md → 知道自己是谁
2. 读 USER.md → 知道你是谁
3. 读 memory/今天.md → 知道今天干了啥
4. 读 MEMORY.md → 记住重要的事
记什么
# memory/2026-03-10.md
## 今天干的活
– 做了 Agent 开发视频
– 脚本改了 2 版
– 抖音发了 3 条
## 记住的事
– 晚 6 点发抖音效果最好
– “赋能”这个词不能用
常见问题
群里发消息没反应
1.看 groupPolicy 是不是 “open”
2.看 requireMention 是不是 false
3.看日志有没有报错
4.看 bindings 里的群 ID 对不对
Agent 调用失败
看是不是超了限制:
{
“tools”: {
“agentToAgent”: {
“maxSpawnDepth”: 5,
“maxChildren”: 10
}
}
}
怎么调试
直接看日志:
tail -f /tmp/openclaw/openclaw-*.log
关键点总结
1.每个 Agent 职责单一 – 别让一个人干太多事
2.能并行的就并行 – 脚本和素材可以同时搞
3.SOUL.md 要写清楚 – 告诉 Agent 输入输出是什么
4.记忆要维护 – 不然 Agent 每次都是新来的
5.日志多看 – 出问题先看日志