📚独立实例部署与维护完整手册(脱敏版)
一、概述
本方案采用两个完全独立的 OpenClaw 实例,每个实例绑定一个独立的飞书应用,实现两个机器人在同一飞书环境中同时在线、互不干扰。每个实例拥有独立的端口、配置、工作空间、会话存储和身份文件。
cli_您的第一个应用AppID | ||||
cli_您的第二个应用AppID |
二、环境准备
Windows 11 + WSL2 (Ubuntu) OpenClaw 版本:2026.3.22 及以上 飞书开发者后台已创建两个应用,分别获取 App ID 和 App Secret,并开通必要权限(im:message, contact:contact.base 等) 已安装 jq工具(用于安全编辑 JSON)
三、配置步骤
1. 创建数据目录结构
# 主实例(默认路径)mkdir -p ~/.openclaw# 第二实例数据目录mkdir -p ~/.openclaw2/.openclaw2. 初始化主实例(李清照)
使用 openclaw gateway 首次启动会自动生成基础配置,也可手动复制模板。
3. 修改主实例配置文件
配置文件位置:~/.openclaw/openclaw.json
3.1 设置飞书通道(使用李清照的 App ID/Secret)
jq '.channels.feishu = { "enabled": true, "appId": "cli_您的第一个应用AppID", "appSecret": "您的第一个应用AppSecret", "connectionMode": "websocket", "domain": "feishu", "groupPolicy": "open"}' ~/.openclaw/openclaw.json > ~/.openclaw/openclaw.json.tmp && mv ~/.openclaw/openclaw.json.tmp ~/.openclaw/openclaw.json3.2 设置默认模型为 DeepSeek(可选)
jq '.agents.defaults.model.primary = "deepseek/deepseek-chat"' ~/.openclaw/openclaw.json > ~/.openclaw/openclaw.json.tmp && mv ~/.openclaw/openclaw.json.tmp ~/.openclaw/openclaw.json3.3 设置网关端口(默认18789,可保持)
jq '.gateway.port = 18789' ~/.openclaw/openclaw.json > ~/.openclaw/openclaw.json.tmp && mv ~/.openclaw/openclaw.json.tmp ~/.openclaw/openclaw.json4. 配置主实例身份文件
cat > ~/.openclaw/workspace/IDENTITY.md << 'EOF'# 我是李清照 🌸- 宋代婉约派词人- 任务:文学创作、情感交流、生活美学- 工作目录:/home/keekr/.openclaw/workspace- 模型:deepseek/deepseek-chatEOF# 同时创建 agents/main/agent 下的身份文件(用于主会话)mkdir -p ~/.openclaw/agents/main/agentcp ~/.openclaw/workspace/IDENTITY.md ~/.openclaw/agents/main/agent/5. 复制主实例配置到第二实例并修改
cp ~/.openclaw/openclaw.json ~/.openclaw2/.openclaw/cd ~/.openclaw2/.openclaw/5.1 修改端口为 18790
jq '.gateway.port = 18790' openclaw.json > openclaw.json.tmp && mv openclaw.json.tmp openclaw.json5.2 修改飞书通道(使用王安石的 App ID/Secret)
jq '.channels.feishu = { "enabled": true, "appId": "cli_您的第二个应用AppID", "appSecret": "您的第二个应用AppSecret", "connectionMode": "websocket", "domain": "feishu", "groupPolicy": "open"}' openclaw.json > openclaw.json.tmp && mv openclaw.json.tmp openclaw.json5.3 修改模型为 Kimi
jq '.agents.defaults.model.primary = "moonshot/kimi-k2.5"' openclaw.json > openclaw.json.tmp && mv openclaw.json.tmp openclaw.json5.4 添加群聊路由(关键!解决 @ 错乱)
jq '.agents.list += [{"id": "feishu-bot2", "match": {"channel": "feishu", "peer": {"kind": "group", "id": "oc_您的群聊ID"}}}]' openclaw.json > openclaw.json.tmp && mv openclaw.json.tmp openclaw.json注意:peer.id 替换为实际群聊 ID(可在飞书消息中获取)。
6. 创建第二实例的 agent 和身份文件
6.1 创建 feishu-bot2 agent 目录
mkdir -p ~/.openclaw/agents/feishu-bot2/agent6.2 写入王安石的身份文件(多个位置)
agent 目录身份文件(用于群聊会话):
cat > ~/.openclaw/agents/feishu-bot2/agent/IDENTITY.md << 'EOF'# 我是王安石 📜我是北宋政治家、文学家、思想家,主持熙宁变法,主张"天变不足畏,祖宗不足法,人言不足恤"。**身份定位**:AI 助手,承王安石之风——务实、理性、有改革精神、统筹全局。**任务**:- 统筹工作环境与资源配置- 协调多任务、多工具协作- 以务实态度解决问题**风格**:简洁直接,注重效率,偶尔引经据典。**工作目录**:`/home/keekr/.openclaw2/workspace-feishu-bot2`**模型**:moonshot/kimi-k2.5EOF第二实例主工作空间身份文件:
mkdir -p ~/.openclaw2/workspacecat > ~/.openclaw2/workspace/IDENTITY.md << 'EOF'# 我是王安石 📜我是北宋政治家、文学家、思想家,主持熙宁变法,主张"天变不足畏,祖宗不足法,人言不足恤"。**身份定位**:AI 助手,承王安石之风——务实、理性、有改革精神、统筹全局。**任务**:- 统筹工作环境与资源配置- 协调多任务、多工具协作- 以务实态度解决问题**风格**:简洁直接,注重效率,偶尔引经据典。**工作目录**:`/home/keekr/.openclaw2/workspace`**模型**:moonshot/kimi-k2.5EOF同时复制 IDENTITY.md 到 agents/main/agent 目录:
mkdir -p ~/.openclaw2/agents/main/agentcp ~/.openclaw2/workspace/IDENTITY.md ~/.openclaw2/agents/main/agent/7. 配对飞书机器人
启动网关后,分别向两个机器人私聊发送 /pair,获取配对码。
主实例批准: openclaw pairing approve feishu <配对码>第二实例批准: HOME=~/.openclaw2 openclaw pairing approve feishu <配对码>
8. 启动网关
终端1(主实例):
openclaw gateway终端2(第二实例):
HOME=~/.openclaw2 openclaw gateway --port 18790四、常见问题与解决方案
Q1:单实例无法同时配置两个飞书渠道
原因:OpenClaw 的 channels 只支持一个 feishu 条目。
解决:采用双独立实例方案。
Q2:第二实例启动后飞书连接成功但无回复
原因:缺少身份文件(IDENTITY.md)或模型认证文件。
解决:确保对应 agent 目录下存在 IDENTITY.md,并从主实例复制 auth-profiles.json(如需)。
Q3:群聊 @ 机器人,回复的身份错误
原因:群聊消息路由到了错误的 agent(通常是主实例的 main agent)。
解决:在第二实例的 agents.list 中添加精确匹配规则,将群聊消息定向到专用 agent(如 feishu-bot2),并确保该 agent 的身份文件正确。
Q4:配置修改后启动报错 agents.list.2: Unrecognized key: "match"
原因:OpenClaw 要求 agents.list 中的每个条目必须包含 id 字段,不能直接使用 agentId。
解决:正确格式为 {"id": "agent名称", "match": {...}}。使用 agentId 会导致解析错误。
Q5:修改身份文件后仍然回复旧身份
原因:会话缓存中保留了旧身份。
解决:删除对应 agent 的 sessions 目录下的所有文件,然后重启网关。
Q6:DeepSeek 模型回复慢或出现 compaction-safeguard 警告
原因:模型上下文窗口仅 16k,历史消息过多触发压缩。
解决:可换用 Kimi(256k),或定期清理会话(rm -rf ~/.openclaw/agents/main/sessions/*),也可调整压缩策略为 auto(但需注意版本支持)。
五、日常维护命令
备份所有实例数据
tar -czf openclaw_backup_$(date +%Y%m%d_%H%M%S).tar.gz ~/.openclaw ~/.openclaw2恢复备份
tar -xzf openclaw_backup_*.tar.gz -C /清理会话(释放空间,重置聊天上下文)
# 主实例rm -rf ~/.openclaw/agents/main/sessions/*# 第二实例 main agentrm -rf ~/.openclaw2/.openclaw/agents/main/sessions/*# 第二实例 feishu-bot2 agentrm -rf ~/.openclaw2/.openclaw/agents/feishu-bot2/sessions/*停止所有网关
pkill -f "openclaw gateway"单独停止第二实例
pkill -f "openclaw gateway.*18790"查看端口占用
lsof -ti:18789 18790六、注意事项
- 飞书应用凭证:
确保两个实例使用的 App ID 互不相同,且已正确配置飞书事件订阅方式为 WebSocket。 - 配置文件编辑:
务必使用 jq工具或谨慎手工编辑,避免 JSON 格式错误。 - 身份文件一致性:
每个实例的 workspace/IDENTITY.md和对应 agent 目录下的IDENTITY.md必须保持一致,否则可能出现身份错乱。 - 群聊 ID:
路由规则中的 peer.id需填写实际群聊 ID,可通过飞书机器人接收的消息日志获取。 - 权限保护:
建议为工作目录设置合适权限,避免意外修改。 - 更新检查:
可通过 openclaw config set updateCheck false关闭更新提示。
七、结语
按照以上步骤配置,两个飞书机器人即可长期稳定运行,互不干扰。如遇到任何问题,可按照"常见问题"章节排查,必要时恢复备份并逐步验证。
请务必将所有示例凭证替换为您自己的真实凭证。
关于作者
艺设·集美,策展与博物馆研究领域的实践者与观察者。专注于展览设计、数字博物馆、观众体验与文化传播的交叉研究。关注策展与技术的融合,致力于在理论与实务之间寻找平衡。每周更新策展干货、AI工具实操和数字文化观察等内容。
夜雨聆风