“OpenClaw 篇三:连接飞书使用”

1次阅读
没有评论

共计 4686 个字符,预计需要花费 12 分钟才能阅读完成。

OpenClaw 篇一:开源 AI 代理介绍及安装中我们完成了 [[OpenClaw]] 的安装,在OpenClaw 篇二:工作原理中介绍了它的工作原理。OpenClaw 支持非常多的消息平台,包括 [[Telegram]]、[[WhatsApp]]、[[Slack]]、[[Discord]] 等。这一篇我们单独介绍如何将 OpenClaw 连接到[[飞书]],让它成为你团队中的 AI 助手。

[[飞书]]是字节跳动推出的一体化办公平台,集成了即时通讯、在线文档、视频会议、OKR、邮箱、日历等功能,为企业提供一站式的协同办公和组织管理解决方案。而 OpenClaw 接入飞书之后,不仅可以利用即时通讯与 AI 对话,还能直接操作飞书的文档、表格、日历和任务等模块,实现真正的”对话即操作”。

“OpenClaw 篇三:连接飞书使用”

支持的飞书能力

OpenClaw 的飞书插件覆盖了飞书开放平台的主要能力:

  • 消息:读取群聊和私聊消息,回复话题,发送消息,搜索聊天记录,下载图片和文件等
  • 文档:创建、更新和读取飞书文档内容
  • 多维表格:创建并管理数据表字段,支持视图的新增和删除,记录的增删改查以及批量操作
  • 电子表格:创建、编辑和查看电子表格
  • 日程管理:日程的创建、查询、修改、删除和检索,参会人管理,查询忙碌状态
  • 任务:任务的创建、查询、修改、完成,清单管理,子任务和评论

安全风险提示

在连接飞书之前,有几点安全事项需要注意:

  • OpenClaw 通过飞书开放平台的 API 访问数据,所有通信经过飞书的标准鉴权流程
  • 应用权限一旦开通,OpenClaw 可以在授权范围内读写你的飞书数据,包括消息、文档和日程等
  • 建议在测试阶段先使用独立的测试租户或限定可用范围,避免误操作影响正式业务数据
  • 如果是团队使用,管理员应仔细审核权限范围,遵循最小权限原则

安装飞书插件

篇一中我们已经安装好了一个可以使用的 OpenClaw,这一篇我们重点放到如何搭配飞书使用。

安装飞书插件有两种方式。第一种是直接在 OpenClaw 的对话中让它帮你安装,第二种是手动执行命令:

npx -y @larksuite/openclaw-lark-tools install

执行过程中,安装程序会引导你选择新建机器人或关联已有的机器人。

安装完成后,使用以下命令验证飞书插件是否正常工作:

/feishu start

如果返回版本号,则表示安装成功。此时你就可以在飞书中打开对应的机器人,向它发送任意消息来测试。

创建飞书机器人

一键创建

飞书开放平台提供了一键创建的入口,点击以下链接即可快速创建:

这种方式会自动完成应用创建和基础权限配置,适合快速上手。

手动创建飞书应用

如果需要更精细的控制,可以手动创建飞书应用:

  1. 访问飞书开放平台并登录
  2. 点击”创建应用”,填写应用的名称和描述,上传应用图标
  3. 创建完成后,在应用详情页获取 App ID 和 App Secret,这两个值将在 OpenClaw 配置中使用

配置应用权限

如果遇到权限不足的提示,可以在飞书开放平台的左侧菜单找到”权限管理”,点击”批量导入权限”,将以下 JSON 粘贴进去:

{
  “scopes”: {
    “tenant”: [
      “contact:contact.base:readonly”,
      “docx:document:readonly”,
      “im:chat:read”,
      “im:chat:update”,
      “im:message.group_at_msg:readonly”,
      “im:message.p2p_msg:readonly”,
      “im:message.pins:read”,
      “im:message.pins:write_only”,
      “im:message.reactions:read”,
      “im:message.reactions:write_only”,
      “im:message:readonly”,
      “im:message:recall”,
      “im:message:send_as_bot”,
      “im:message:send_multi_users”,
      “im:message:send_sys_msg”,
      “im:message:update”,
      “im:resource”,
      “application:application:self_manage”,
      “cardkit:card:write”,
      “cardkit:card:read”
    ],
    “user”: [
      “contact:user.employee_id:readonly”,
      “offline_access”,
      “base:app:copy”,
      “base:field:create”,
      “base:field:delete”,
      “base:field:read”,
      “base:field:update”,
      “base:record:create”,
      “base:record:delete”,
      “base:record:retrieve”,
      “base:record:update”,
      “base:table:create”,
      “base:table:delete”,
      “base:table:read”,
      “base:table:update”,
      “base:view:read”,
      “base:view:write_only”,
      “base:app:create”,
      “base:app:update”,
      “base:app:read”,
      “sheets:spreadsheet.meta:read”,
      “sheets:spreadsheet:read”,
      “sheets:spreadsheet:create”,
      “sheets:spreadsheet:write_only”,
      “docs:document:export”,
      “docs:document.media:upload”,
      “board:whiteboard:node:create”,
      “board:whiteboard:node:read”,
      “calendar:calendar:read”,
      “calendar:calendar.event:create”,
      “calendar:calendar.event:delete”,
      “calendar:calendar.event:read”,
      “calendar:calendar.event:reply”,
      “calendar:calendar.event:update”,
      “calendar:calendar.free_busy:read”,
      “contact:contact.base:readonly”,
      “contact:user.base:readonly”,
      “contact:user:search”,
      “docs:document.comment:create”,
      “docs:document.comment:read”,
      “docs:document.comment:update”,
      “docs:document.media:download”,
      “docs:document:copy”,
      “docx:document:create”,
      “docx:document:readonly”,
      “docx:document:write_only”,
      “drive:drive.metadata:readonly”,
      “drive:file:download”,
      “drive:file:upload”,
      “im:chat.members:read”,
      “im:chat:read”,
      “im:message”,
      “im:message.group_msg:get_as_user”,
      “im:message.p2p_msg:get_as_user”,
      “im:message:readonly”,
      “search:docs:read”,
      “search:message”,
      “space:document:delete”,
      “space:document:move”,
      “space:document:retrieve”,
      “task:comment:read”,
      “task:comment:write”,
      “task:task:read”,
      “task:task:write”,
      “task:task:writeonly”,
      “task:tasklist:read”,
      “task:tasklist:write”,
      “wiki:node:copy”,
      “wiki:node:create”,
      “wiki:node:move”,
      “wiki:node:read”,
      “wiki:node:retrieve”,
      “wiki:space:read”,
      “wiki:space:retrieve”,
      “wiki:space:write_only”
    ]
  }
}

导入后,在”应用身份权限”中将可访问的数据范围保持默认的”与应用的可用范围一致”,点击确认完成操作。

理解应用授权和用户授权

飞书的权限体系分为两层,理解这个区别对排查问题至关重要:

  • 应用授权(App Scope):由公司管理员为飞书应用开通的能力范围。应用授权决定了这个应用”能做什么”,例如是否允许读写文档、创建日程、查看消息等。这是能力的上限。
  • 用户授权(User Scope):由用户本人同意”这个应用以你的身份”去访问你的数据。用户授权决定了应用”能看到谁的数据”,例如是否允许读取你的私人聊天记录、日程和文档内容。即使应用本身有能力,也需要用户明确授权后才能访问该用户的数据。

在实际使用中,如果遇到报错提示”缺少权限”或”scope 不足”,通常需要管理员在应用授权层面补充权限。而如果提示”需要重新授权”,则需要用户重新完成用户授权流程(可通过 /feishu auth 命令触发)。

开启流式输出

默认情况下,OpenClaw 在飞书中的回复是一次性返回完整内容。开启流式输出后,回复会像打字一样逐步显示,体验更加流畅:

openclaw config set channels.feishu.streaming true

还可以在流式输出的卡片底部显示更多信息,例如回答耗时和状态:

openclaw config set channels.feishu.footer.elapsed true  # 显示回答耗时
openclaw config set channels.feishu.footer.status true    # 显示当前状态

如果在话题群或消息群的话题模式中使用,可以开启话题级别的独立会话,让每个话题拥有独立的上下文,支持多任务并行处理:

openclaw config set channels.feishu.threadSession true

常用的诊断命令

当遇到问题时,以下命令可以帮助快速定位:

# 确认飞书插件安装成功,返回版本号即为正常
/feishu start

# 检查应用授权和配置是否正确
/feishu doctor

# 触发用户授权流程
/feishu auth

总结

通过将 OpenClaw 连接到飞书,我们可以在日常使用的办公平台中直接与 AI 助手交互,而且不仅限于简单的对话——它还能操作文档、管理表格、安排日程和跟踪任务。在下一篇中,我们将介绍 [[OpenClaw 篇四:必备的 Skills|OpenClaw 的 Skills 系统]],了解如何通过安装不同的 Skills 来扩展 OpenClaw 的能力边界。

参考

正文完
 0
评论(没有评论)