中文 | English
本文是完整的分步指南。如果你只想快速跑通,回 README 的 10 分钟上手。
在开始前,请确认:
- OpenClaw 已安装并可用:运行
openclaw status能看到正常输出 - Slack workspace 已创建:你有管理员权限
- 基本命令行能力:能在终端里复制粘贴命令执行(或者让你现有的 OpenClaw 代为执行)
不确定 OpenClaw 怎么装?参考 OpenClaw 官方文档
按 SLACK_SETUP.md 创建 Slack App(Socket Mode),拿到两个 token:
xapp-...(App-Level Token)xoxb-...(Bot Token)
然后执行:
openclaw channels add --channel slack --app-token "xapp-..." --bot-token "xoxb-..."
openclaw gateway restart验证:在 Slack 任意频道 @你的bot → 它回复了 → ✅
在 Slack 里创建以下频道(名字可自定义,但建议保持简短):
最小配置(3 个频道):
| 频道 | 对应 Agent | 说明 |
|---|---|---|
#hq |
CoS 幕僚长 | 你的主要对话窗口,战略对齐 |
#cto |
CTO 技术合伙人 | 技术方向和任务拆解 |
#build |
Builder 执行者 | 具体实现和交付 |
推荐扩展(按需添加):
| 频道 | 对应 Agent | 什么时候加 |
|---|---|---|
#invest |
CIO 领域专家 | 需要投资/法律/营销等领域分工时 |
#know |
KO 知识官 | 发现经验在流失、踩过的坑反复踩时 |
#ops |
Ops 运维官 | 发现 Agent 行为在慢慢"跑偏"时 |
#research |
Research 调研员 | 需要按需 spawn 调研任务时 |
1. 在每个频道里输入:/invite @你的bot名
2. 记录每个频道的 Channel ID:
右键频道名 → View channel details → 底部 Channel ID(以 C 开头)
所有频道建议设为公开——单用户工作区没有隐私问题,公开频道便于审计和追踪。
方式 A:让你现有的 OpenClaw 代你部署(推荐,零命令行)
把下面这段话发给你现有的 OpenClaw:
我要部署 OpenCrew。请帮我执行以下操作:
1) 备份 ~/.openclaw/openclaw.json(加时间戳)
2) 把 <仓库路径>/shared/ 下所有 .md 文件复制到 ~/.openclaw/shared/
3) 对于 cos、cto、builder 三个 Agent(最小配置):
- 创建 ~/.openclaw/workspace-<agent>/memory/ 目录
- 把 <仓库路径>/workspaces/<agent>/ 下的文件复制过去(不覆盖已有文件)
- 创建软链接:~/.openclaw/workspace-<agent>/shared → ~/.openclaw/shared
4) 每一步告诉我你做了什么
边界:不要改我的 models/auth/gateway 相关配置,只做 OpenCrew 的增量。
方式 B:手动执行
# 0. 备份
cp ~/.openclaw/openclaw.json ~/.openclaw/openclaw.json.bak-$(date +%Y%m%d%H%M)
# 1. 复制全局协议
mkdir -p ~/.openclaw/shared
cp shared/*.md ~/.openclaw/shared/
# 2. 复制 workspace(最小 3 个 Agent)
for a in cos cto builder; do
mkdir -p ~/.openclaw/workspace-$a/memory
rsync -a --ignore-existing "workspaces/$a/" "$HOME/.openclaw/workspace-$a/"
done
# 3. 软链接 shared(让 Agent 能读到全局协议)
for a in cos cto builder; do
if [ ! -e "$HOME/.openclaw/workspace-$a/shared" ]; then
ln -s "$HOME/.openclaw/shared" "$HOME/.openclaw/workspace-$a/shared"
fi
done
# 4. 验证
ls ~/.openclaw/workspace-cto/SOUL.md && echo "✅ workspace 就位"
ls ~/.openclaw/shared/SYSTEM_RULES.md && echo "✅ shared 协议就位"把上面 for a in cos cto builder 替换为 for a in cos cto builder cio ko ops research,并额外执行:
# KO 和 CIO 的特殊子目录
mkdir -p ~/.openclaw/workspace-ko/{inbox,knowledge}
mkdir -p ~/.openclaw/workspace-cto/{scars,patterns}
mkdir -p ~/.openclaw/workspace-cio/{decisions,principles,signals,watchlist}按 CONFIG_SNIPPET_2026.2.9.md 操作。它包含:
- 新增的 agents 条目(ID、workspace 路径)
- Slack 频道绑定(Channel ID → Agent)
- Slack allowlist(只允许这些频道触发 Agent)
- A2A 保护(maxPingPongTurns、发起权限、subagent 限制)
关键配置项说明(帮你理解每项在做什么):
| 配置项 | 作用 | 为什么需要 |
|---|---|---|
agents.list |
注册每个 Agent 的 ID 和 workspace | 没有这个,Agent 不存在 |
bindings |
Channel ID → Agent 的映射 | 没有这个,频道里的消息不会被路由到 Agent |
channels.slack.channels.allowlist |
只允许指定频道触发 | 防止 bot 在其他频道被意外触发 |
maxPingPongTurns = 4 |
A2A 来回上限 | 防止两个 Agent 互相触发导致消息风暴 |
tools.agentToAgent.allow |
只允许 CoS/CTO/Ops 发起 A2A | 组织纪律,不是所有人都能派单 |
thread.historyScope = "thread" |
thread 内历史隔离 | 每个任务的上下文互不污染 |
replyToMode = "all" |
所有回复进 thread | 频道不会被刷屏 |
重要:不要把 Slack token 硬编码在配置文件里。
推荐方式:
- 本地开发:使用
~/.openclaw/.env文件(权限设为 600) - 生产环境:使用 Bitwarden Secrets Manager 或等效工具
# 创建 .env
touch ~/.openclaw/.env
chmod 600 ~/.openclaw/.env
# 写入 token(替换为你的真实值)
echo 'SLACK_APP_TOKEN=xapp-1-你的token' >> ~/.openclaw/.env
echo 'SLACK_BOT_TOKEN=xoxb-你的token' >> ~/.openclaw/.envopenclaw gateway restart
openclaw statusTest 1:在 #hq 发一句话 → CoS 回复 → ✅
Test 2:在 #cto 发一句话 → CTO 回复 → ✅
Test 3:在 #cto 让 CTO 派任务给 Builder
→ #build 出现 thread → Builder 在 thread 内回复 → ✅
在 #cto 对 CTO 说:"帮我让 Builder 写一个 hello world 脚本"。观察:
- CTO 在
#build创建了一条 root message(A2A 锚点) - Builder 在该 thread 内回复并执行
- CTO 在
#cto同步了 Builder 的进展
如果以上都正常,恭喜——你的多 Agent 系统已经跑通了 🎉
| 检查项 | 命令 |
|---|---|
| Gateway 是否在线 | openclaw gateway status |
| Bot 是否被邀请到频道 | 在频道里看成员列表 |
| Channel ID 是否正确 | 对比配置里的 ID 和 Slack 里的 |
| requireMention 设置 | #ops 默认需要 @mention |
Bot 没被邀请到目标频道。在频道里执行 /invite @你的bot名。
这是已知问题(KNOWN_ISSUES.md P1)。当前最佳实践:
- 确认目标 Agent 的频道 ID 和 binding 正确
- 检查
sessions_send的 sessionKey 是否包含正确的 thread ts - 如果偶发,Agent 通常会在下次消息时恢复
在 zsh 里,双引号内的 $variable 会被展开。用单引号包裹含 $ 的参数。
# 检查目录权限
ls -la ~/.openclaw/
# 修复
sudo chown -R $USER ~/.openclaw/# 系统状态
openclaw status
openclaw gateway status
openclaw gateway restart
# Agent 管理
openclaw agents list
# 配置查询
openclaw config get agents
openclaw config get slack.channels
# 日志
openclaw logs tail -f- 先用 3 个 Agent 跑几天,感受协作节奏
- 观察 Closeout 产出——CTO 和 Builder 是否在写结构化总结?
- 按需添加 KO/Ops——当你觉得"经验在丢失"或"Agent 行为在变"的时候
- 阅读核心概念——深度理解系统的运转逻辑
- 读开发历程——了解每个设计决策背后的"为什么"