飞书群聊接入 AI 机器人完整指南:OpenClaw 配置全流程踩坑记录

本文基于真实配置过程整理,覆盖从创建飞书应用到机器人正常响应群消息的每一个步骤,包含常见报错的完整解决方案。


这篇文章适合谁?

如果你正在尝试把 AI 助手接入飞书群聊,让团队成员可以直接在群里 @ 机器人提问,那这篇文章值得从头读完。

本文使用的工具是 OpenClaw(一个开源的 AI 网关工具),版本为 2026.3.8,飞书端使用自建应用方式接入。整个配置过程并不复杂,但有几个容易踩坑的地方,本文会逐一说明。


准备工作:先把 OpenClaw 装好

安装后报错怎么办?

OpenClaw 安装完成后,有时候执行命令会遇到这个错误:

Failed to start CLI: Error: Cannot find native binding.
npm has a bug related to optional dependencies.
Please try `npm i` again after removing both package-lock.json and node_modules directory.

这是 npm 的一个已知问题,处理方式如下:

第一步:进入 OpenClaw 的全局安装目录

cd /Users/你的用户名/nodejs/lib/node_modules/openclaw

第二步:删除旧的依赖

rm -rf node_modules package-lock.json

第三步:重新安装

npm install

如果上面的方法还是不行,尝试强制安装或换用 yarn:

npm install --force
# 或者
yarn install

最彻底的方案是完全重装:

npm uninstall -g openclaw
npm install -g openclaw

根本原因:npm 在处理含有原生绑定(native bindings)的可选依赖时,有时会跳过安装步骤,重新安装通常能解决。


第一部分:在飞书开放平台创建应用

1. 新建自建应用

打开 飞书开放平台,点击「创建自建应用」,填写名称和描述即可。

创建完成后,在「凭证与基础信息」页面可以看到两个重要信息:

  • App ID(格式类似 cli_a93e9c50d978dcbd
  • App Secret

这两个信息后面配置 OpenClaw 时要用到,先复制保存好。

2. 开启机器人能力

在应用详情页,找到「应用能力」→「机器人」,打开开关。这一步经常被忽略,是机器人能收到消息的前提条件。

3. 配置权限

在「权限管理」中添加以下权限:

权限名称 说明
im:message 基础消息权限
im:message.group_at_msg:readonly 接收群 @ 消息
im:message.p2p_msg:readonly 接收私聊消息
im:message:send_as_bot 机器人发送消息
im:chat.members:bot_access 机器人加入群聊
im:resource 资源访问

4. 配置事件订阅(长连接方式)

这是整个配置过程中最关键的一步,很多人在这里卡住。

在应用的「事件与回调」页面:

  1. 订阅方式选择「使用长连接接收事件」(不需要填回调 URL,不需要公网 IP)
  2. 添加事件:搜索并订阅 im.message.receive_v1

为什么选长连接? OpenClaw 的 Gateway 默认只监听本机(loopback),没有公网地址,所以只能用长连接(WebSocket)方式让飞书主动推送消息过来。

5. 发布应用

配置完成后,在「版本管理与发布」中创建版本并提交发布。企业内部应用通常审批很快。


第二部分:配置 OpenClaw

配置文件位置

OpenClaw 的配置文件在:

~/.openclaw/openclaw.json

正确的完整配置

下面是一份经过验证、能正常工作的完整配置文件:

{
  "meta": {
    "lastTouchedVersion": "2026.3.8",
    "lastTouchedAt": "2026-03-13T14:39:07.080Z"
  },
  "wizard": {
    "lastRunAt": "2026-03-13T14:39:07.064Z",
    "lastRunVersion": "2026.3.8",
    "lastRunCommand": "configure",
    "lastRunMode": "local"
  },
  "auth": {
    "profiles": {
      "minimax-portal:default": {
        "provider": "minimax-portal",
        "mode": "oauth"
      }
    }
  },
  "models": {
    "providers": {
      "minimax-portal": {
        "baseUrl": "https://api.minimaxi.com/anthropic",
        "apiKey": "minimax-oauth",
        "api": "anthropic-messages",
        "models": [
          {
            "id": "MiniMax-M2.5",
            "name": "MiniMax M2.5",
            "reasoning": false,
            "input": ["text"],
            "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
            "contextWindow": 200000,
            "maxTokens": 8192
          }
        ]
      }
    }
  },
  "agents": {
    "defaults": {
      "model": {
        "primary": "minimax-portal/MiniMax-M2.5"
      },
      "workspace": "/Users/kb/.openclaw/workspace",
      "compaction": {
        "mode": "safeguard"
      }
    }
  },
  "tools": {
    "profile": "full"
  },
  "commands": {
    "native": "auto",
    "nativeSkills": "auto",
    "restart": true,
    "ownerDisplay": "raw"
  },
  "session": {
    "dmScope": "per-channel-peer"
  },
  "channels": {
    "feishu": {
      "enabled": true,
      "groupPolicy": "open",
      "accounts": {
        "main": {
          "appId": "cli_a93e9c50d978dcbd",
          "appSecret": "cB4hiYEMv0rKpUpoYP7Sqh5hOmE2jzBj",
          "dmPolicy": "pairing"
        }
      }
    }
  },
  "gateway": {
    "port": 18789,
    "mode": "local",
    "bind": "loopback",
    "auth": {
      "mode": "token",
      "token": "你的token"
    },
    "tailscale": {
      "mode": "off",
      "resetOnExit": false
    }
  },
  "plugins": {
    "entries": {
      "minimax-portal-auth": {
        "enabled": true
      },
      "feishu": {
        "enabled": true
      }
    }
  }
}

关键配置说明

groupPolicy 控制机器人如何响应群消息,有三个取值:

取值 说明
"open" 允许所有群触发机器人(推荐)
"allowlist" 只允许指定的群
"disabled" 完全禁用群消息

dmPolicy 控制私聊行为,"pairing" 表示需要配对才能私聊。

⚠️ 常见错误:很多人把 dmPolicy 放在单独的 default 账号里,而不是放在 main 账号内。这会导致 Dashboard 显示 not configured,机器人无法连接飞书。


第三部分:把机器人加入飞书群

内部群添加步骤

  1. 打开飞书,进入目标群聊
  2. 点击右上角「···
  3. 选择「设置
  4. 点击「群机器人
  5. 点击右上角「添加机器人
  6. 搜索你的应用名称,点击添加

一个群最多可添加 99 个机器人。

关于外部群(跨企业群)

如果需要在外部群中使用机器人,需要额外开启对外共享:

  • 在飞书开放平台的「版本管理与发布」中,创建版本时找到「对外共享」选项并开启
  • 或者在「用户管理 → 可用范围」中开启外部用户开关

注意:对外共享需要走审批流程,且需要企业管理员权限,部分企业账号普通开发者看不到该入口。如果只是内部群使用,完全不需要这个步骤。


第四部分:排查机器人不回复的问题

配置完成后,在群里 @ 机器人没有反应——这是最常见的问题。按以下步骤逐一排查。

Step 1:查看实时日志

openclaw logs --follow

在群里 @ 机器人,同时观察日志输出。

正常情况应该看到类似:

Approved feishu sender oc_xxxxxxxxxx

注意前缀oc_ 开头是群聊 ID,ou_ 开头是用户(私聊)ID。如果只看到 ou_ 开头,说明机器人收到的是私聊消息,不是群消息。

Step 2:检查 Gateway 连接状态

打开浏览器访问:

http://127.0.0.1:18789/

在 Dashboard 中找到 Feishu 频道,检查 main 账号的状态:

字段 期望值 含义
Running Yes Gateway 进程在运行
Configured Yes App ID/Secret 已配置
Connected Yes / n/a → 应为 connected 长连接是否建立

如果 Connected 显示 n/a,说明飞书长连接没有建立成功,消息根本无法传入。

Step 3:检查 Gateway 运行状态

openclaw gateway status

正常输出应包含:

Runtime: running (pid xxxxx)
RPC probe: ok

Step 4:确认飞书事件订阅

回到飞书开放平台,再次确认:

  1. 「事件与回调」→ 订阅方式是长连接(不是 HTTP 回调)
  2. 已添加 im.message.receive_v1 事件
  3. 应用已重新发布(改完配置不发布不生效)

Step 5:重启 Gateway

openclaw gateway restart

重启后观察日志,正常应看到飞书频道重新连接的信息。


第五部分:如何获取群 ID

有些高级配置需要指定具体的群 ID(oc_ 开头)。获取方式:

  1. 启动日志监听:openclaw logs --follow
  2. 在目标群里 @ 机器人发一条消息
  3. 在日志中找到 Approved feishu sender oc_xxxxxx 这行,oc_ 后面的就是群 ID

获取到群 ID 后,可以在配置中针对特定群进行细化设置,例如关闭 @ 要求:

"channels": {
  "feishu": {
    "groups": {
      "oc_你的群ID": {
        "requireMention": false
      }
    }
  }
}

requireMention 默认为 true,即必须 @ 机器人才触发回复。设为 false 后,群里任何消息都会触发机器人,请谨慎使用。


第六部分:如何删除机器人

从群聊移除

  1. 进入群聊 → 右上角「···」→「设置」→「群机器人
  2. 找到机器人 → 点击右侧「···」→「删除

从好友/会话中移除

在消息列表找到与机器人的对话,右键选择「删除会话」。如需从通讯录彻底移除,进入「通讯录」找到机器人,右键「删除联系人」。

在开发者后台关闭机器人能力

飞书不支持单独删除机器人,只能关闭能力或删除整个应用:

  • 关闭机器人能力:「应用能力」→「机器人」→ 关闭开关 → 重新发布版本
  • 删除整个应用:应用需处于未发布或已停用状态,才能在详情页底部找到「删除应用」选项

如果只是想重新配置,不需要删除应用,直接修改配置重新发布即可。


常见问题 FAQ

Q:机器人加入群后完全没有反应,日志也没有任何输出怎么办?

A:最可能的原因是飞书事件订阅没有配置。检查飞书开放平台的「事件与回调」,确认已选择「长连接」方式并订阅了 im.message.receive_v1 事件,且应用已重新发布。


Q:日志只看到 ou_ 开头的 ID,没有 oc_ 开头的,是什么问题?

A:ou_ 是用户 ID,代表收到的是私聊消息。oc_ 才是群 ID。说明机器人目前只能接收私聊,群消息没有传入。检查 groupPolicy 是否设置为 "open",以及飞书事件订阅是否正确。


Q:Dashboard 显示 Connected: n/a,长连接没有建立怎么办?

A:检查配置文件中是否有多余的 default 账号(显示 not configured),将其删除,确保只保留配置完整的 main 账号,然后重启 Gateway。


Q:bindings 配置出现 Invalid input 报错怎么办?

A:OpenClaw 的 bindings 格式有版本差异,如果遇到校验报错,先去掉 bindings 配置,改用 groupPolicy: "open" 来允许所有群消息,功能上是等效的。


Q:tools.profileunknown entries 警告正常吗?

A:正常,这只是 warn 级别的提示,说明 allowlist 中配置了当前版本尚未启用的工具名(如 apply_patch),不影响正常使用。


Q:fts unavailable: no such module: fts5 是什么意思?

A:这是 SQLite 全文搜索模块未启用的提示,影响记忆搜索功能,但不影响基本的群聊对话功能。


总结

整个配置流程可以归纳为三个核心步骤:

  1. 飞书端:创建应用 → 开启机器人能力 → 配置权限 → 开启长连接事件订阅 → 发布
  2. OpenClaw 端:正确填写 appIdappSecretmain 账号,设置 groupPolicy: "open",删除多余的 default 账号
  3. 验证:通过 Dashboard 和日志确认 Connected 状态,群里 @ 机器人测试

最容易出问题的两个地方:一是飞书没有选择长连接订阅方式,二是 OpenClaw 配置里 dmPolicy 放错了位置导致账号状态异常。按照本文的配置结构来写,可以避免这两个坑。


本文基于 OpenClaw 2026.3.8 版本、飞书开放平台实际配置过程整理,配置细节以官方文档为准。