乐于分享
好东西不私藏

飞书机器人在 OpenClaw 中的完整配置

飞书机器人在 OpenClaw 中的完整配置

飞书机器人在 OpenClaw 中的完整配置

在 OpenClaw 中,飞书(Feishu)机器人的 channel/accountId/peer/teamId 有明确的官方定义与配置规范,下面给你完整、可直接复制的配置与字段说明,同时补充同一个机器人加入不同群组的配置方法。

一、飞书场景下的字段官方定义

1. channel

1固定值feishu(Lark 国际版为lark

1作用:标识消息来自飞书渠道,路由第一维度

2. accountId

1类型string(如 mainbot1support

1定义:OpenClaw 内的飞书机器人实例标识(多机器人场景)

1对应凭证:每个 accountId 绑定一组appId + appSecret

1示例main(默认主机器人),同一个机器人(同一 accountId)可加入多个群组

3.peer(会话类型 + ID)

1结构{ kind: "direct" | "group", id: string }

1kind 取值

1direct私聊(单聊)

1group群聊(飞书群组),同一个机器人加入不同群组时,每个群组对应唯一peer.id

id 格式

1私聊:用户 open_id → ou_xxxxxxxx

1群聊:群组chat_id → oc_xxxxxxxx(每个群组的 chat_id 唯一,是区分不同群组的核心标识)

4. teamId / guildId

1飞书对应tenantId(企业/租户 ID)

1格式tenant_xxxxxxxx

1作用:多企业/多租户隔离(企业自建应用专属),同一个机器人加入同一企业下的不同群组,tenantId 保持一致

二、完整配置示例(openclaw.json)

1. 飞书渠道基础配置(单机器人,加入多个群组)

核心说明:同一个机器人(同一 accountId: main)加入多个群组,只需在 groupAllowFrom 中添加所有目标群组的 chat_id(用逗号分隔),即可实现机器人在多个群组中生效。

JSON                  {                  "channels": {                  "feishu": {                  "enabled": true,                  "domain": "feishu",                  "connectionMode": "websocket",                  "dmPolicy": "pairing",                  "groupPolicy": "allowlist",                  "groupAllowFrom": ["oc_7725c177ac3fec7500c47047036a1b3e", "oc_8836d288bd4fed8600d58158147b2c4f", "oc_9947e399ce5fee9700e69269258c3d50"],                  "accounts": {                  "main": {                  "appId": "cli_your_feishu_app_id",                  "appSecret": "your_feishu_app_secret",                  "botName": "AI助手"                  }                  }                  }                  }                  }

1dmPolicy: "pairing":私聊需配对(openclaw pairing approve feishu 

1groupPolicy: "allowlist":仅白名单群组可触发机器人,groupAllowFrom 中填写所有机器人加入的群组 chat_id

1groupAllowFrom 说明:多个群组 ID 用英文逗号分隔,只要机器人被邀请进入该群组,且 chat_id 在白名单内,即可响应群组消息

2. 多机器人配置(多 accountId)

JSON                    {                    "channels": {                    "feishu": {                    "enabled": true,                    "domain": "feishu",                    "connectionMode": "websocket",                    "accounts": {                    "main": {                    "appId": "cli_bot1_id",                    "appSecret": "bot1_secret",                    "botName": "主AI助手"                    },                    "support": {                    "appId": "cli_bot2_id",                    "appSecret": "bot2_secret",                    "botName": "客服机器人"                    }                    }                    }                    }                    }

补充说明:若多个机器人需分别加入不同群组,可给每个 accountId 单独配置 groupAllowFrom,实现机器人与群组的精准绑定。

三、Bindings 路由配置(核心匹配,同一机器人多群组适配)

核心逻辑:同一个机器人(accountId: main)加入不同群组后,可通过 peer.id(群组 chat_id)区分不同群组,实现“不同群组→不同 Agent”的路由匹配,也可配置所有群组共用一个 Agent。

1. 私聊路由(指定用户 → 指定 Agent)

JSON                    {                    "bindings": [                    {                    "match": {                    "channel": "feishu",                    "accountId": "main",                    "peer": { "kind": "direct", "id": "ou_abc123" },                    "tenantId": "tenant_xyz789"                    },                    "agentId": "user-assistant"                    }                    ]                    }

2. 群聊路由(同一机器人,不同群组→不同 Agent)

JSON                    {                    "bindings": [                    // 群组1 → 客服Agent                    {                    "match": {                    "channel": "feishu",                    "accountId": "main",                    "peer": { "kind": "group", "id": "oc_def456" },                    "tenantId": "tenant_xyz789"                    },                    "agentId": "support-agent"                    },                    // 群组2 → 技术支持Agent                    {                    "match": {                    "channel": "feishu",                    "accountId": "main",                    "peer": { "kind": "group", "id": "oc_ghi789" },                    "tenantId": "tenant_xyz789"                    },                    "agentId": "tech-support-agent"                    },                    // 群组3 → 通知Agent                    {                    "match": {                    "channel": "feishu",                    "accountId": "main",                    "peer": { "kind": "group", "id": "oc_jkl012" },                    "tenantId": "tenant_xyz789"                    },                    "agentId": "notice-agent"                    }                    ]                    }

3. 全局默认路由(同一机器人,所有群组共用一个 Agent)

JSON                    {                    "bindings": [                    {                    "match": {                    "channel": "feishu",                    "accountId": "main",                    "peer": { "kind": "group" } // 不指定具体群组ID,匹配该机器人所有群组消息                    },                    "agentId": "main-group-agent"                    },                    // 兜底路由:未匹配到的飞书消息(含私聊)                    {                    "match": {                    "channel": "feishu"                    },                    "agentId": "main"                    }                    ]                    }

四、SessionKey 生成规则(飞书)

Plain Text                    agent::feishu::[:tenant:]

示例(同一机器人不同群组)

1私聊:agent:user-assistant:feishu:direct:ou_abc123:tenant:tenant_xyz789

1群组1:agent:support-agent:feishu:group:oc_def456:tenant:tenant_xyz789

1群组2:agent:tech-support-agent:feishu:group:oc_ghi789:tenant:tenant_xyz789

1说明:同一机器人(accountId: main),不同群组的 SessionKey 因 peer.id(群组 ID)不同而唯一,实现会话隔离。

五、字段速查表(飞书专用)

字段

飞书取值/格式

说明(同一机器人多群组适配)

channel

feishu

固定渠道标识,同一机器人多群组不变

accountId

main /support

机器人实例名,同一机器人多群组不变

peer.kind

direct / group

群聊统一为 group,私聊为 direct

peer.id

ou_xxx / oc_xxx

不同群组对应不同 oc_xxx,是区分群组的核心

teamId/guildId

tenant_xxx

同一企业下的群组,tenantId 保持一致

六、快速获取 ID 方法

1用户 open_id:向机器人发私聊 → 看日志 openclaw logs --follow → 提取 ou_xxx

1群组 chat_id:在群内@机器人 → 日志中提取oc_xxx(每个群组需单独提取,同一机器人加入多个群组,需依次获取各群组 chat_id

1tenantId:飞书开放平台 → 应用详情 → 企业信息

七、同一机器人加入不同群组的注意事项

11.机器人需先被手动邀请进入目标群组,仅配置 groupAllowFrom无法自动加入群组。

12.各群组chat_id 必须唯一,不可重复填写,否则会导致路由匹配异常。

13.若需限制机器人在部分群组生效,仅需将对应群组 chat_id 加入 groupAllowFrom,未加入的群组无法触发机器人。

14.同一机器人在不同群组的消息会话相互隔离,通过 SessionKey 区分(核心差异为peer.id),不会出现消息混淆。

八、三种常见群组-机器人搭配用法详解

结合 OpenClaw 配置逻辑,以下三种搭配是最常用的场景,核心区别在于 accountId(机器人实例)与peer.id(群组 ID)的绑定关系,适配不同的业务需求,同时可借助 Agent 隔离实现不同场景的精准响应,Agent 之间数据完全隔离,还可配置不同大模型适配不同需求。

1. 同一个机器人 + 多个群组(最常用)

核心用法:使用同一个机器人实例(同一accountId),加入多个飞书群组,通过路由配置实现“所有群组共用一个 Agent”或“不同群组对应不同 Agent”,适用于机器人功能统一、需覆盖多个群组的场景。

适用场景:企业内部通用通知、全公司答疑机器人、跨部门共用的工具类机器人(如考勤查询、流程咨询),无需为每个群组单独创建机器人,降低配置和维护成本。

配置关键

1仅配置 1 个 accountId(如 main),绑定一组 appId + appSecret

1在 groupAllowFrom 中,填写所有目标群组的 chat_id(用英文逗号分隔),允许机器人在这些群组生效。

1路由配置:若所有群组功能一致,配置“全局群聊路由”(不指定 peer.id);若不同群组功能不同,按 peer.id(群组 ID)分别配置路由,绑定不同 Agent。

优势:配置简单、维护成本低,统一机器人形象,适合通用型需求;可通过 Agent 配置实现群聊级数据隔离,避免不同群组消息混淆。

2. 不同机器人 + 不同群组(精准隔离)

核心用法:创建多个机器人实例(不同 accountId),每个机器人对应一个独立群组(或一组同类群组),每个机器人绑定不同的 appId + appSecret 和 Agent,实现“机器人与群组一一对应”,适用于不同群组需求差异大、需严格隔离的场景。

适用场景:部门专属机器人(如技术部、人事部、销售部)、不同项目组专属机器人,每个机器人仅处理对应群组的消息,功能独立、数据隔离,避免跨部门消息干扰。例如技术部机器人负责代码咨询,人事部机器人负责人事政策解答,实现业务域的精准划分。

配置关键

1配置多个 accountId(如 tech-bothr-bot),每个 accountId 单独绑定一组飞书应用凭证。

1为每个 accountId 单独配置 groupAllowFrom,仅填写其对应群组的 chat_id,实现机器人与群组的精准绑定。

1路由配置:每个 accountId 对应一个专属 Agent,确保不同机器人的消息处理逻辑独立,可通过独立工作区实现 Agent 之间的完全隔离。

优势:功能隔离性强,不同群组消息互不干扰,便于针对性配置功能;可根据各群组需求配置不同大模型,适配差异化场景。

3. 不同机器人 + 相同群组(多功能协同)

核心用法:创建多个机器人实例(不同accountId),将所有机器人加入同一个群组,每个机器人负责不同的功能,通过路由配置区分消息触发逻辑,适用于单个群组需要多种独立功能的场景,可实现多智能体协同工作。

适用场景:项目组核心群组(需同时实现“需求答疑、进度通知、文件校验、代码审查”等功能),每个功能由一个独立机器人承担,避免单个机器人功能过于复杂,也便于单独维护和升级。例如一个群组内,机器人A负责需求答疑,机器人B负责进度通知,机器人C负责代码审查,实现多功能协同支撑项目推进。

配置关键

1配置多个 accountId(如 qa-botnotice-bot),每个 accountId 绑定独立的飞书应用凭证。

1所有 accountId 的 groupAllowFrom 中,均填写同一个群组的 chat_id,确保所有机器人都能加入该群组。

1路由配置:通过消息关键词、@机器人昵称等方式,区分不同机器人的触发逻辑,绑定对应功能的 Agent;也可配置 Agent 间协同机制,实现复杂任务的分工处理。

优势:功能拆分清晰,单个机器人职责单一,便于维护和升级;多机器人协同,可覆盖复杂场景需求,提升群组工作效率,还可实现跨机器人的任务协作。