乐于分享
好东西不私藏

OpenClaw 双飞书机器人独立实例部署与维护指南

OpenClaw 双飞书机器人独立实例部署与维护指南

📚独立实例部署与维护完整手册(脱敏版)

一、概述

本方案采用两个完全独立的 OpenClaw 实例,每个实例绑定一个独立的飞书应用,实现两个机器人在同一飞书环境中同时在线、互不干扰。每个实例拥有独立的端口、配置、工作空间、会话存储和身份文件。

实例
端口
飞书 App ID
身份
模型
主实例
18789
cli_您的第一个应用AppID
李清照 🌸
deepseek/deepseek-chat
第二实例
18790
cli_您的第二个应用AppID
王安石 📜
moonshot/kimi-k2.5

二、环境准备

  • 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/.openclaw

2. 初始化主实例(李清照)

使用 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.json

3.2 设置默认模型为 DeepSeek(可选)

jq '.agents.defaults.model.primary = "deepseek/deepseek-chat"' ~/.openclaw/openclaw.json > ~/.openclaw/openclaw.json.tmp && mv ~/.openclaw/openclaw.json.tmp ~/.openclaw/openclaw.json

3.3 设置网关端口(默认18789,可保持)

jq '.gateway.port = 18789' ~/.openclaw/openclaw.json > ~/.openclaw/openclaw.json.tmp && mv ~/.openclaw/openclaw.json.tmp ~/.openclaw/openclaw.json

4. 配置主实例身份文件

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.json

5.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.json

5.3 修改模型为 Kimi

jq '.agents.defaults.model.primary = "moonshot/kimi-k2.5"' openclaw.json > openclaw.json.tmp && mv openclaw.json.tmp openclaw.json

5.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/agent

6.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

六、注意事项

  1. 飞书应用凭证:
    确保两个实例使用的 App ID 互不相同,且已正确配置飞书事件订阅方式为 WebSocket。
  2. 配置文件编辑:
    务必使用 jq 工具或谨慎手工编辑,避免 JSON 格式错误。
  3. 身份文件一致性:
    每个实例的 workspace/IDENTITY.md 和对应 agent 目录下的 IDENTITY.md 必须保持一致,否则可能出现身份错乱。
  4. 群聊 ID:
    路由规则中的 peer.id 需填写实际群聊 ID,可通过飞书机器人接收的消息日志获取。
  5. 权限保护:
    建议为工作目录设置合适权限,避免意外修改。
  6. 更新检查:
    可通过 openclaw config set updateCheck false 关闭更新提示。

七、结语

按照以上步骤配置,两个飞书机器人即可长期稳定运行,互不干扰。如遇到任何问题,可按照"常见问题"章节排查,必要时恢复备份并逐步验证。

请务必将所有示例凭证替换为您自己的真实凭证。

关于作者

艺设·集美,策展与博物馆研究领域的实践者与观察者。专注于展览设计、数字博物馆、观众体验与文化传播的交叉研究。关注策展与技术的融合,致力于在理论与实务之间寻找平衡。每周更新策展干货、AI工具实操和数字文化观察等内容。