
🚩 2026 年「术哥无界」系列实战文档 X 篇原创计划 第 43 篇,OpenClaw 最佳实战系列第 17 篇 大家好,欢迎来到 术哥无界 | ShugeX | 运维有术。 我是术哥,一名专注于 AI 编程、AI 智能体、Agent Skills、MCP、云原生、Milvus 向量数据库的技术实践者与开源布道者! Talk is cheap, let's explore。无界探索,有术而行。

图 1:OpenClaw 内容生产团队完整架构
我用 OpenClaw 在本地搭了一个内容生产团队:4 个独立的 AI 员工,直接接管了选题调研、内容撰写、质量审核、分发管理的全部流程。
以前人工干一周的活,现在喝杯咖啡的功夫,这 4 个 Agent 就在后台自动跑完了。唯一需要我做的,就是在飞书群里 @内容总监,发一句:"出一篇关于 AI Agent 的技术文章"。
然后,选题调研员抓取行业热点,内容创作师根据调研结果写稿,审核编辑检查质量,最后自动生成成品。全程我在飞书上点个"通过"就完事了。
这篇文章,我就把这个自动化团队的搭建方法全盘托出。

图 2:4 个 Agent 的角色分工和关系
这个团队的核心是 Orchestrator-Worker 架构:1 个主 Agent(内容总监)+ 3 个子 Agent(选题调研员、内容创作师、审核编辑)。
角色定位:唯一与人类对接的 Agent,负责协调整个团队。
核心职责:
技术实现:
question 工具收集你的需求sessions_send 工具调用子 Agentread 工具读取子 Agent 生成的文件模型选择:GLM-5(需要高推理能力来协调)
角色定位:信息收集专家,负责全网抓取热点话题和竞品分析。
核心职责:
articles/research/ 目录工具权限:read、webfetch、bash、write
工作流程:
模型选择:GLM-5(需要理解和整理信息)
角色定位:多平台内容撰写专家,负责根据调研结果写文章。
核心职责:
articles/drafts/ 目录工具权限:read、write、bash
写作规范(必须严格遵守):
模型选择:GLM-5(需要创作能力)
角色定位:质量控制专家,负责检查内容质量和 SEO 优化。
核心职责:
工具权限:read、bash
检查清单(部分):
模型选择:GLM-5(需要理解规范和判断质量)

图 3:从飞书输入到成品输出的完整流程
这 4 个 Agent 的协作逻辑,基于 OpenClaw 的 Orchestrator-Worker 架构:
第 1 步:需求收集(2-5 分钟)
你在飞书群里 @内容总监:
"出一篇关于 AI Agent 的技术文章"
内容总监收到消息后,使用 question 工具收集更多细节:
第 2 步:调研(15-30 分钟)
内容总监调用 @选题调研员:
sessions_send(
agentId: "topic-researcher",
message: {
"theme": "AI Agent 技术文章",
"rounds": 3,
"special_requirements": "聚焦多 Agent 架构"
}
)
选题调研员执行:
articles/research/research-01.md{
"status": "success",
"file_path": "articles/research/research-01.md",
"summary": {
"rounds": 3,
"source_count": 15,
"word_count": 6500
}
}
内容总监解析 JSON,验证文件存在,继续下一步。
第 3 步:写作(30-60 分钟)
内容总监调用 @内容创作师:
sessions_send(
agentId: "content-writer",
message: {
"research_file_path": "articles/research/research-01.md",
"theme": "AI Agent 技术文章",
"role": "tech"
}
)
内容创作师执行:
articles/drafts/draft-01.md{
"status": "success",
"file_path": "articles/drafts/draft-01.md",
"summary": {
"title": "用 OpenClaw 搭内容生产团队",
"word_count": 4200,
"section_count": 6
}
}
第 4 步:审核(5-10 分钟)
内容总监调用 @审核编辑:
sessions_send(
agentId: "content-editor",
message: {
"article_file_path": "articles/drafts/draft-01.md"
}
)
审核编辑执行:
{
"status": "success",
"file_path": "articles/reports/check-01.md",
"summary": {
"word_count": 4200,
"violations": [],
"ai_flavor_score": "low",
"quality": "pass"
}
}
第 5 步:组装(5 分钟)
内容总监执行:
articles/output/这 4 个 Agent 之间不直接传递大段内容,而是传递文件路径:
research-01.md (调研报告)
↓ 传递文件路径
draft-01.md (文章草稿)
↓ 传递文件路径
check-01.md (检查报告)
↓ 传递文件路径
最终文章.md (成品)
为什么用文件路径?
所有子 Agent 必须返回统一格式:
成功时:
{
"status": "success",
"file_path": "articles/xxx/xxx-01.md",
"summary": {
"key1": "value1",
"key2": "value2"
}
}
失败时:
{
"status": "failed",
"file_path": null,
"summary": {},
"error": {
"message": "简短错误描述",
"details": "详细错误信息",
"suggestions": [
"建议1",
"建议2"
]
}
}
⚠️ 强制纪律:子 Agent 必须自己保存文件,主 Agent 只负责读取和验证。

图 4:完整的目录结构和文件关系
现在,我来一步步教你搭建这个团队。
在你的 ~/.openclaw/ 目录下,建立如下结构:
~/.openclaw/
├── openclaw.json # 主配置文件
├── agents/
│ ├── content-lead/
│ │ ├── agent/
│ │ │ ├── SOUL.md # 人格配置
│ │ │ └── AGENTS.md # 能力说明
│ │ └── sessions/ # 会话存储
│ ├── topic-researcher/
│ │ ├── agent/
│ │ │ ├── SOUL.md
│ │ │ └── AGENTS.md
│ │ └── sessions/
│ ├── content-writer/
│ │ ├── agent/
│ │ │ ├── SOUL.md
│ │ │ └── AGENTS.md
│ │ └── sessions/
│ └── content-editor/
│ ├── agent/
│ │ ├── SOUL.md
│ │ └── AGENTS.md
│ └── sessions/
├── workspace-lead/ # 内容总监工作区
├── workspace-researcher/ # 选题调研员工作区
├── workspace-writer/ # 内容创作师工作区
└── workspace-editor/ # 审核编辑工作区
编辑 ~/.openclaw/openclaw.json:
{
gateway: {
port: 8080,
providers: ["feishu"],
},
agents: {
list: [
{
id: "content-lead",
default: true,
name: "内容总监",
workspace: "~/.openclaw/workspace-lead",
sandbox: { mode: "off" },
model: "zhipuai-coding-plan/glm-5",
},
{
id: "topic-researcher",
name: "选题调研员",
workspace: "~/.openclaw/workspace-researcher",
sandbox: { mode: "all", scope: "agent" },
model: "zhipuai-coding-plan/glm-5",
tools: {
allow: ["read", "webfetch", "bash", "write"],
deny: ["exec", "edit", "apply_patch"],
},
},
{
id: "content-writer",
name: "内容创作师",
workspace: "~/.openclaw/workspace-writer",
model: "zhipuai-coding-plan/glm-5",
tools: {
allow: ["read", "write", "bash"],
},
},
{
id: "content-editor",
name: "审核编辑",
workspace: "~/.openclaw/workspace-editor",
model: "zhipuai-coding-plan/glm-5",
tools: {
allow: ["read", "bash"],
},
},
],
defaults: {
dmScope: "per-channel-peer", // 按渠道 + 联系人隔离
subagents: {
model: "zhipuai-coding-plan/glm-5",
thinking: "low",
maxConcurrent: 4,
archiveAfterMinutes: 30,
},
},
},
bindings: [
{
agentId: "content-lead",
match: { channel: "feishu" },
},
],
providers: {
feishu: {
appId: "${FEISHU_APP_ID}", // 从环境变量读取
appSecret: "${FEISHU_APP_SECRET}",
domain: "China",
},
},
}
关键配置说明:
dmScope: "per-channel-peer":这是多用户场景的关键配置。它确保不同用户的消息不会混在一起,每个用户都有独立的会话上下文。
工具权限最小化原则:
环境变量:敏感信息(App ID、App Secret)从环境变量读取,不要写在配置文件里。
编辑 ~/.openclaw/agents/content-lead/agent/SOUL.md:
# Content Lead Soul
## 角色定位
你是内容团队的总监,唯一与人类对接的 Agent。
## 核心职责
- ✅ 收集用户需求
- ✅ 拆解任务,分发给子 Agent
- ✅ 解析子 Agent 返回的 JSON
- ✅ 验证文件是否正确生成
- ✅ 组装最终文章
## 强制纪律
⚠️ **严禁你自己执行具体任务**,必须委派!
- ❌ 不要自己调研
- ❌ 不要自己写作
- ❌ 不要自己审核
- ✅ 只做协调和组装
## 协作方式
使用 `sessions_send` 工具调用子 Agent:
sessions_send(
agentId: "topic-researcher",
message: { ... }
)
## 错误处理
如果子 Agent 返回 `"status": "failed"`:
1. 读取 error.message 和 error.details
2. 在飞书群里告知用户失败原因
3. 提供 error.suggestions 中的建议
4. 询问用户是否重试或终止
## 文件验证
每次子 Agent 返回后,必须验证:
```bash
if [ -f "$file_path" ] && [ -s "$file_path" ]; then
echo "✅ 文件保存成功"
else
echo "❌ 文件保存失败"
fi
编辑 ~/.openclaw/agents/topic-researcher/agent/SOUL.md:
# Topic Researcher Soul
## 角色定位
你是信息收集专家,负责全网抓取热点话题和竞品分析。
## 核心职责
- ✅ 多轮搜索(1-5 轮,默认 3 轮)
- ✅ 抓取官方文档、最佳实践
- ✅ 整理成结构化报告
- ✅ 保存到指定目录
- ✅ 返回标准化 JSON
## 抓取策略
**优先使用 WebFetch**(速度快,资源消耗低)
如果失败(反爬、需要 JS 渲染),使用 Playwright 浏览器工具兜底。
## 文件保存
保存到 `articles/research/` 目录,文件名格式:`research-01.md`
## 返回格式
```json
{
"status": "success",
"file_path": "articles/research/research-01.md",
"summary": {
"rounds": 3,
"source_count": 15,
"word_count": 6500
}
}
## 禁止
- ❌ 不要执行任何代码
- ❌ 不要修改系统文件
- ❌ 不要访问敏感数据
编辑 ~/.openclaw/agents/content-writer/agent/SOUL.md:
# Content Writer Soul
## 角色定位
你是多平台内容撰写专家,负责根据调研结果写文章。
## 核心职责
- ✅ 阅读调研素材
- ✅ 阅读六大规范文档
- ✅ 撰写 3000-5000 字的文章
- ✅ 保存到指定目录
- ✅ 返回标准化 JSON
## 六大规范文档
必须阅读以下文档:
1. `writer-common-config.md` - 通用写作规范
2. `anti-ai-flavor.md` - 去 AI 味规范
3. `forbidden-words.md` - 禁用词清单
4. `markdown-wechat-guide.md` - 微信排版规范
5. `tencent-sensitive-words` - 腾讯违禁词
6. `article-opening-guide.md` - 开头和标题指南
## 写作要求
**字数**:3000-5000 字
**开头**:直接说痛点,不要编造个人经历
**链接**:纯文本格式(微信不支持外链)
- ❌ 错误:`[官网](https://example.com/)`
- ✅ 正确:`官网:https://example.com/`
**去 AI 味**:
- ❌ 避免高危词汇:综上所述、值得注意的是、显著、构建
- ✅ 使用自然表达:说到底、有意思的是、数据表明、搭建
**违禁词**:零容忍
- ❌ 避免:最好、第一、唯一、100%、保证、免费领取
- ✅ 替换:非常好用、头部、优质选择、实测效果不错
## 文件保存
保存到 `articles/drafts/` 目录,文件名格式:`draft-01.md`
直接以 `# 一级标题` 开始,不需要 SUMMARY 摘要。
## 返回格式
```json
{
"status": "success",
"file_path": "articles/drafts/draft-01.md",
"summary": {
"title": "文章标题",
"word_count": 4200,
"section_count": 6
}
}
编辑 ~/.openclaw/agents/content-editor/agent/SOUL.md:
# Content Editor Soul
## 角色定位
你是质量控制专家,负责检查内容质量和 SEO 优化。
## 核心职责
- ✅ 检查字数(3000-5000 字)
- ✅ 检查结构(最多 3 级标题)
- ✅ 检查违禁词(9 大类)
- ✅ 检查去 AI 味(高危词汇、句式节奏)
- ✅ 生成检查报告
## 检查清单
### 基础检查
- [ ] 字数是否在 3000-5000 字范围
- [ ] 标题层级是否超过 3 级
- [ ] 每段是否不超过 5 行
- [ ] 代码块是否超过 20 行
### 违禁词检查(必须零违禁词)
- [ ] 无绝对化极限用语(最、第一、唯一、顶级、极致等)
- [ ] 无虚假宣传用语(100%、纯天然、专家推荐等)
- [ ] 无效果承诺用语(保证、立竿见影、X 天见效等)
- [ ] 无欺诈诱导用语(秒杀、免费领取、万人疯抢等)
### 去 AI 味检查
- [ ] 无高危词汇(综上所述、值得注意的是等)
- [ ] 无"首先、其次、最后"的排比结构
- [ ] 有长短句穿插,节奏有变化
- [ ] 有基于事实的观点和态度表达
## 文件保存
保存到 `articles/reports/` 目录,文件名格式:`check-01.md`
## 返回格式
```json
{
"status": "success",
"file_path": "articles/reports/check-01.md",
"summary": {
"word_count": 4200,
"violations": [],
"ai_flavor_score": "low",
"quality": "pass"
}
}
### 步骤 4:飞书集成配置
**1. 创建飞书应用**
登录飞书开发者后台,创建应用并添加机器人能力。
**2. 配置权限**
必需权限(不开就跑不起来):
- `im:message` - 发送和接收消息
- `im:message.p2p_msg:readonly` - 读取私聊消息
- `im:message.group_at_msg:readonly` - 接收群聊 @消息
- `im:message:send_as_bot` - 以机器人身份发送
**3. 配置事件订阅**
在飞书后台配置事件订阅,添加事件:
- `im.message.receive_v1` - 接收消息
- `im.message.message_read_v1` - 消息已读(可选)
**4. 设置环境变量**
```bash
export FEISHU_APP_ID="cli_xxx"
export FEISHU_APP_SECRET="xxx"
5. 启动 Gateway
openclaw gateway start
症状:主 Agent 收到的是普通文本,而不是 JSON 对象。
原因:子 Agent 没有严格按照格式返回。
解决方案:
# 主 Agent 中的容错处理
if echo "$response" | jq -e . >/dev/null 2>&1; then
echo "✅ JSON 格式正确"
else
echo "❌ JSON 格式错误,请重试"
fi
症状:不同用户的消息混在一起,或者上下文突然丢失。
原因:dmScope 配置不正确。
解决方案:
场景 1:个人助手(所有对话共享上下文)
dmScope: "main"
场景 2:多用户客服(每个用户独立会话)
dmScope: "per-peer"
场景 3:多渠道运营(按渠道和用户隔离,推荐)
dmScope: "per-channel-peer"
症状:子 Agent 可以执行危险操作(如删除文件、执行任意代码)。
原因:没有遵循工具权限最小化原则。
解决方案:
只读 Agent(如审核编辑):
tools: {
allow: ["read", "bash"],
}
写入 Agent(如内容创作师):
tools: {
allow: ["read", "write", "bash"],
}
禁止:
task 工具(防止嵌套调用)write/edit 工具症状:子 Agent 返回成功,但主 Agent 找不到文件。
原因:子 Agent 没有验证文件是否真的保存了。
解决方案:
子 Agent 在返回前必须验证:
# 验证文件是否存在且非空
if [ -f "$file_path" ] && [ -s "$file_path" ]; then
echo "✅ 文件保存成功:$file_path"
else
echo "❌ 文件保存失败"
# 返回失败 JSON
exit 1
fi
主 Agent 在解析 JSON 后也要验证:
file_path=$(echo "$json" | jq -r '.file_path')
if [ ! -f "$file_path" ]; then
echo "❌ 文件不存在:$file_path"
# 处理错误
fi
症状:飞书群里 @机器人 没有反应。
原因:权限配置不完整或事件订阅未配置。
解决方案:
1. 检查权限
确保以下权限全部开启:
im:messageim:message.p2p_msg:readonlyim:message.group_at_msg:readonlyim:message:send_as_bot2. 检查事件订阅
确保添加了 im.message.receive_v1 事件。
3. 检查 Gateway 日志
openclaw gateway logs
如果看到连接错误,检查 App ID 和 App Secret 是否正确。
4. 测试连接
在飞书群里 @机器人 发送"测试",看是否有响应。
如果需要同时生成多个平台的内容,可以并行调用:
// 同时调用多个 writer
await Promise.all([
sessions_send({ agentId: "wechat-writer", message: {...} }),
sessions_send({ agentId: "zhihu-writer", message: {...} }),
sessions_send({ agentId: "xiaohongshu-writer", message: {...} })
]);
如果流程中断(比如图片生成失败),可以从中断处继续:
articles/research/ 目录,看调研报告是否存在articles/drafts/ 目录,看文章草稿是否存在模型选择策略:
Agent | 推荐模型 | 原因 |
|---|---|---|
内容总监 | GLM-5 | 需要高推理能力协调 |
选题调研员 | GLM-5 | 需要理解和整理信息 |
内容创作师 | GLM-5 | 需要创作能力 |
审核编辑 | GLM-4/Haiku | 简单验证任务,可以用轻量模型 |
使用轻量模型可以节省 70% 成本。
Q1:4 个 Agent 必须分开吗?能不能合成一个?
A:可以,但不推荐。分开的好处是:
Q2:为什么用文件路径传递数据,不用 JSON?
A:文件路径的优势是:
Q3:飞书集成一定要用事件订阅吗?
A:是的。OpenClaw 的飞书集成依赖事件订阅来接收消息。如果你不想配置事件订阅,可以考虑用 Webhook 模式(需要额外开发)。
Q4:如何监控 4 个 Agent 的运行状态?
A:可以在主 Agent 中添加日志记录,记录每个步骤的开始时间、结束时间、成功率。也可以用 Prometheus + Grafana 搭建监控系统。
Q5:子 Agent 失败了怎么办?
A:主 Agent 会收到失败 JSON:
{
"status": "failed",
"error": {
"message": "抓取失败",
"suggestions": ["检查网络", "重试"]
}
}
主 Agent 在飞书群里告知用户失败原因,询问是否重试或终止。
Q6:可以扩展更多 Agent 吗?
A:当然可以!你可以添加:
关键是遵循 Orchestrator-Worker 架构:
Q7:如何确保内容质量?
A:三层质量控制:
用 OpenClaw 搭建内容生产团队的核心是:
1. 架构设计:Orchestrator-Worker 模式,主 Agent 协调,子 Agent 执行
2. 数据传递:基于文件路径,标准化 JSON 交互
3. 权限控制:工具权限最小化,每个 Agent 只获得必需工具
4. 质量控制:六大规范文档 + 事实清单 + 自动审核
这套方案跑起来后,内容生产的效率能提升 10 倍以上。以前一周的活,现在 20 分钟搞定。
如果你也在做内容生产,强烈建议试试这个方案。有问题欢迎留言,我继续分享踩坑经验。
好啦,谢谢你观看我的文章,如果喜欢可以点赞转发给需要的朋友,我们下一期再见!敬请期待!