OpenClaw 飞书插件技术原理:从 Bot Token 到 User Token 的架构全解

> 来源: 飞书官方博客 / GitHub / OpenClaw 文档 / 本地源码分析

> 发布时间: 2026-03-05(文章)/ 持续更新中

> 研究时间: 2026-03-29

🎯 一句话版本

飞书插件本质是一个"双身份"系统:OpenClaw 自带的内置插件以机器人身份收发消息,飞书官方插件(字节开发)在此基础上通过 OAuth Device Flow 获取用户的 Access Token,让 AI 能以"你的身份"读文档、发消息、改日历——相当于给龙虾多了一张你的工牌。

🏗️ 替换关系,不是叠加

⚠️ 关键事实:官方插件替换内置插件,不是叠加。

OpenClaw 有一个内置的飞书 channel(@openclaw/feishu,plugin id: feishu),随 OpenClaw 发布。但当你安装飞书官方插件(@larksuite/openclaw-lark)后,内置插件被禁用,官方插件接管一切。

源码和配置证据:


// openclaw.json 中的 plugins.entries
{
  "feishu": { "enabled": false },       // ← 内置插件被禁用
  "openclaw-lark": { "enabled": true }  // ← 官方插件启用
}

两者注册的 channel meta id 都是 'feishu'(源码 plugin.jsmeta.id: 'feishu'),不能同时运行

对比

维度内置插件 (`@openclaw/feishu`)官方插件 (`@larksuite/openclaw-lark`)
**开发者**OpenClaw 团队字节跳动飞书开放平台团队
**安装**随 OpenClaw 自带`npx @larksuite/openclaw-lark install`
**源码**125 个 TypeScript 文件完整独立实现
**Bot 身份**✅ Tenant Token✅ Tenant Token
**用户身份**❌ 无 OAuth✅ Device Flow UAT
**工具**基础消息/文档/表格/Wiki全部 + 日历/任务/搜索/以用户名义发消息
**流式卡片**基础增强(Thinking/Generating/Complete)
**诊断工具**`/feishu doctor`、`--fix`、`--trace`

官方插件是一个完整替代品:自己实现了 WebSocket 连接、消息收发、Bot 操作等全部基础功能,加上 OAuth 用户身份操作。不是在内置插件上面加一层,是独立重写了整个 channel。


安装前:                          安装后:
┌─────────────────────┐         ┌─────────────────────────────────┐
│  @openclaw/feishu   │         │  @larksuite/openclaw-lark       │
│  (内置, enabled)    │  ──→    │  (官方, enabled)                │
│  Bot 身份           │         │  Bot 身份 + User 身份 (OAuth)   │
│  基础工具           │         │  全部工具 + 诊断 + 流式卡片    │
└─────────────────────┘         └─────────────────────────────────┘
                                ┌─────────────────────┐
                                │  @openclaw/feishu   │
                                │  (内置, DISABLED)   │
                                └─────────────────────┘

🔐 OAuth Device Flow:核心授权原理

这是整个插件最关键的技术——如何让 AI 获得用户身份?

流程

基于 RFC 8628(OAuth 2.0 Device Authorization Grant):


1. OpenClaw 向飞书请求 device_code + user_code
   POST accounts.feishu.cn/oauth/v1/device_authorization

2. 用户在飞书客户端扫码或输入 user_code 授权

3. OpenClaw 轮询 token 端点直到授权完成
   POST open.feishu.cn/open-apis/authen/v2/oauth/token

4. 获得 User Access Token (UAT) + Refresh Token

5. Token 加密存储到本地

为什么用 Device Flow 而不是普通 OAuth?

因为 OpenClaw 运行在终端/服务器上,没有浏览器回调 URL。Device Flow 专为"无浏览器设备"设计——用户在手机/电脑上扫码授权,服务端轮询拿 token。

Token 安全存储

平台存储方式
**macOS**Keychain Access(via `security` CLI)
**Linux**AES-256-GCM 加密文件(`$XDG_DATA_HOME`)
**Windows**AES-256-GCM 加密文件(`%LOCALAPPDATA%`)

这意味着用户一次授权后,OpenClaw 能持续使用用户身份,直到用户主动撤销。

🔧 工具层架构

官方插件注册了两套工具:

`oapi/` — 以用户身份调用

模块工具能力
`bitable/`多维表格 CRUD、字段管理、视图管理
`calendar/`日程增删改查、参会人、忙闲查询
`chat/`群信息、群成员
`drive/`云盘文件管理
`im/`消息读取、搜索、下载、以用户身份发送
`search/`跨会话搜索
`sheets/`电子表格操作
`task/`任务管理、清单、子任务、评论
`wiki/`知识库读写

`tat/` — 以机器人身份调用

模块工具能力
`im/`机器人身份消息操作、图片/文件下载

Agent 调用时透明切换身份:当 AI 需要"读群消息"时,工具自动使用用户的 UAT;当 AI 需要"发 bot 消息"时,使用租户的 Tenant Token。用户无感。

🛡️ 权限体系

两套权限范围

租户权限(18 个):机器人基础操作


im:message:send_as_bot, im:resource, im:message:readonly,
cardkit:card:write, contact:user.employee_id:readonly ...

用户权限(70+ 个):用户身份操作


docx:document:create, calendar:calendar.event:create,
base:record:create, im:message:readonly, task:task:write,
wiki:node:create, drive:file:upload, search:message ...

安全机制

1. Scope Managerscope-manager.js)— 运行时检查每个 API 调用是否在授权范围内

2. Owner Policyowner-policy.js)— 限制谁能触发敏感操作

3. Security Checksecurity-check.js)— 操作前安全校验

4. App Scope Checkerapp-scope-checker.js)— 检查应用是否有所需权限

5. 卡片确认按钮card-ux-approval.js)— 敏感操作要用户点"确认"

📡 消息流全链路


用户在飞书发消息
    ↓
飞书 WebSocket → OpenClaw Gateway 接收
    ↓
内置 Channel 解析消息 → 路由到 Session
    ↓
LLM 生成回复(可能调用工具)
    ↓
需要用户身份?→ 官方插件用 UAT 调飞书 API
需要 Bot 身份?→ 内置插件用 Tenant Token
    ↓
结果回传给 LLM → 生成最终回复
    ↓
通过飞书卡片/文本消息返回用户
(支持流式:Thinking → Generating → Complete)

⚙️ 关键配置


{
  "channels": {
    "feishu": {
      "enabled": true,
      "appId": "cli_xxx",
      "appSecret": "xxx",
      "dmPolicy": "pairing",         // 首次需配对验证
      "groupPolicy": "allowlist",     // 群聊白名单
      "requireMention": true,         // 需 @ 机器人
      "streaming": true,              // 流式输出
      "threadSession": true           // 话题独立上下文
    }
  }
}

快捷命令

命令功能
`/feishu start`验证安装
`/feishu auth`批量授权所有权限
`/feishu doctor`诊断配置
`npx @larksuite/openclaw-lark doctor --fix`自动修复

💡 与我们的关联

1. 我们正在使用官方插件

我们的 OpenClaw 配置中,内置 feishu 插件已被禁用,openclaw-lark(v2026.3.17)已启用。所以我们当前的飞书工具调用(日历、消息、多维表格等)全部由官方插件提供:Bot 身份消息收发 + 用户身份 API 调用。

2. 安全启示

Token 存储用 AES-256-GCM 加密是好的,但关键风险在于:一旦 OpenClaw 进程被入侵,加密密钥和 token 都可获取。文章明确建议"先用个人账号玩,别接入真实工作环境"——这个警告是认真的。

3. 多 Agent 玩法

支持一个 OpenClaw 关联多个飞书机器人 → 对应不同 Agent。比如一个机器人做研究助手,一个做日程管理,各有独立上下文和 skill 配置。

4. 飞书 vs 其他渠道的优势

飞书官方插件提供了最丰富的工具集(70+ 用户权限),远超 Telegram/Discord。这是因为飞书开放平台团队亲自做的——他们能给自己开最多的 API。

📊 评分

维度评分(/10)
技术深度9.0 — Device Flow + 加密 Token 存储 + 双身份架构
实用性9.0 — 一条命令安装,/feishu auth 一键授权
安全设计8.0 — 多层防护,但进程级攻击仍有风险
文档质量8.5 — 官方博客详尽,有诊断工具
与我们的相关度**9.5** — 这就是我们每天用的系统
**综合****8.8**

报告由深度研究助手自动生成 | 2026-03-29

来源: 飞书博客 / GitHub / OpenClaw 文档 / 本地源码 ~/.openclaw/extensions/openclaw-lark/