MacOS 下基于 Docker 部署 OpenClaw 并集成飞书机器人
介绍在 MacOS 环境下通过 Docker 部署 OpenClaw AI 框架,并配置大模型 API 及飞书机器人集成的全流程。步骤包括 Docker 环境搭建、镜像拉取与启动、API 密钥设置、飞书开放平台应用创建与权限配置、长链接监听脚本运行,以及最终完成 OpenClaw 与飞书机器人的配对验证。该方案利用容器化技术规避系统兼容问题,实现 AI 能力与企业办公平台的无缝对接。

介绍在 MacOS 环境下通过 Docker 部署 OpenClaw AI 框架,并配置大模型 API 及飞书机器人集成的全流程。步骤包括 Docker 环境搭建、镜像拉取与启动、API 密钥设置、飞书开放平台应用创建与权限配置、长链接监听脚本运行,以及最终完成 OpenClaw 与飞书机器人的配对验证。该方案利用容器化技术规避系统兼容问题,实现 AI 能力与企业办公平台的无缝对接。

OpenClaw 是一款开源的 AI 助手框架,具备跨平台部署、灵活对接各类大模型 API、适配主流协同办公工具的核心优势。在当下企业协同办公与 AI 智能化应用深度融合的趋势下,越来越多团队需要一款轻量化、易部署、可自定义对接的 AI 助手工具,实现大模型能力与日常办公协作平台的无缝衔接,提升内部沟通、信息处理、任务执行的效率。
相较于传统的 AI 工具部署方式,基于 Docker 部署 OpenClaw能够最大程度规避不同操作系统的环境兼容问题,实现环境隔离、一键启停和便捷维护,尤其适合非专业运维人员快速上手。而飞书作为国内主流的企业协同办公平台,将 OpenClaw 与飞书机器人集成,能够让团队成员直接在飞书聊天界面调用 AI 能力,无需切换软件,真正实现办公场景与 AI 能力的闭环融合。本教程针对 MacOS 系统用户,梳理了从 Docker 环境搭建、OpenClaw 镜像部署、大模型 API 配置到飞书机器人对接、功能调试的全流程实操步骤,解决新手部署过程中环境报错、配置遗漏、对接失败等常见问题,帮助用户快速完成专属 AI 办公助手的搭建,落地轻量化 AI 办公应用。


docker pull openeuler/openclaw:2026.3.2-oe2403sp3

docker run -it --name openclaw openeuler/openclaw:2026.3.2-oe2403sp3 onboard --install-daemon

◇ I understand this is personal-by-default and shared/multi-user use requires lock-down. Continue?('我明白这是默认个人私有的,共享/多用户使用则需要加以限制。是否继续?') │ Yes │ ◇ Onboarding mode │ QuickStart │ ◇ QuickStart ─────────────────────────╮ │ │ │ Gateway port: 18789 │ │ Gateway bind: Loopback (127.0.0.1) │ │ Gateway auth: Token (default) │ │ Tailscale exposure: Off │ │ Direct to chat channels. │ │ │ ├──────────────────────────────────────╯ │ ◇ Model/auth provider │ Custom Provider │ ◇ API Base URL │ https://api.xxxx.com/v1(自己大模型服务的 api) │ ◇ How do you want to provide this API key? │ Paste API key now │ ◇ API Key (leave blank if not required) │ sk-XXXXXXXXXXXXXXXXXXXXX(自己大模型服务的 API Key) │ ◇ Endpoint compatibility │ OpenAI-compatible │ ◇ Model ID │ claude-sonnet-4-6(自己大模型服务的模型 ID) │ ◇ Verification successful. │ ◇ Endpoint ID │ custom-api-xxx-ai(自定义 EndpointID) │ ◇ Model alias (optional) │ Configured custom provider: custom-api-xxx-ai/claude-sonnet-4-6


进入应用—添加应用能力—机器人

批量导入权限

批量权限 json(或参考 https://docs.openclaw.ai/zh-CN/channels/feishu)
{ "scopes": { "tenant": [ "aily:file:read", "aily:file:write", "aily:session:read", "aily:session:write", "application:application.app_message_stats.overview:readonly", "application:application.self_manage", "application:bot.menu:write", "bitable:app", "bitable:app:readonly", "board:whiteboard:node:create", "board:whiteboard:node:delete", "board:whiteboard:node:read", "board:whiteboard:node:update", "cardkit:card:write", "contact:contact.base:readonly", "contact:user.base:readonly", "contact:user.employee_id:readonly", "corehr:file:download", "docs:doc", "docs:doc:readonly", "docs:document.comment:create", "docs:document.comment:read", "docs:document.comment:update"
使用长链接接收事件

创建长链接环境
conda create -n py38 python=3.8 conda activate py38 pip install lark-oapi -U
import lark_oapi as lark ## P2ImMessageReceiveV1 为接收消息 v2.0;CustomizedEvent 内的 message 为接收消息 v1.0。
def do_p2_im_message_receive_v1(data: lark.im.v1.P2ImMessageReceiveV1) -> None:
print(f'[ do_p2_im_message_receive_v1 access ], data: {lark.JSON.marshal(data, indent=4)}')
def do_message_event(data: lark.CustomizedEvent) -> None:
print(f'[ do_customized_event access ], type: message, data: {lark.JSON.marshal(data, indent=4)}')
event_handler = lark.EventDispatcherHandler.builder("", "") \
.register_p2_im_message_receive_v1(do_p2_im_message_receive_v1) \
.register_p1_customized_event("这里填入你要自定义订阅的 event 的 key,例如 out_approval", do_message_event) \
.build()
def main():
cli = lark.ws.Client("配置成应用的 App Id", "配置成应用的 App Secret", event_handler=event_handler, log_level=lark.LogLevel.DEBUG)
cli.start()
if __name__ == "__main__":
main()
启动长链接
python feishu_ws.py

启动长链接后,'事件配置'与'回调配置'中的'保存'可以点击了(否则点不动)

'事件配置'中,添加所有'消息与群组'

'回调配置'中,添加所有回调


版本发布后,飞书会收到'开发者小助手'的审批通过,发布成功的消息,打开应用,出现机器人聊天对话框。


OpenClaw 的飞书配置
◇ Channel status ────────────────────────────╮ │ │ │ Telegram: needs token │ │ WhatsApp (default): not linked │ │ Discord: needs token │ │ Slack: needs tokens │ │ Signal: needs setup │ │ signal-cli: missing (signal-cli) │ │ iMessage: needs setup │ │ imsg: missing (imsg) │ │ IRC: not configured │ │ Google Chat: not configured │ │ Feishu: install plugin to enable │ │ Google Chat: install plugin to enable │ │ Nostr: install plugin to enable │ │ Microsoft Teams: install plugin to enable │ │ Mattermost: install plugin to enable │ │ Nextcloud Talk: install plugin to enable │ │ Matrix: install plugin to enable │ │ BlueBubbles: install plugin to enable │ │ LINE: install plugin to enable │ │ Zalo: install plugin to enable │ │ Zalo Personal: install plugin to enable │ │ Synology Chat: install plugin to enable │ │ Tlon: install plugin to enable │ │ │ ├─────────────────────────────────────────────╯ │ ◇ How channels work ───────────────────────────────────────────────────────────────────────╮ │ │ │ DM security: default is pairing; unknown DMs get a pairing code. │ │ Approve with: openclaw pairing approve <channel> <code> │ │ Public DMs require dmPolicy="open" + allowFrom=["*"]. │ │ Multi-user DMs: run: openclaw config set session.dmScope "per-channel-peer" (or │ "per-account-channel-peer" for multi-account channels) to isolate sessions. │ │ Docs: channels/pairing │ │ │ │ Telegram: simplest way to get started — register a bot with @BotFather and get going. │ │ WhatsApp: works with your own number; recommend a separate phone + eSIM. │ │ Discord: very well supported right now. │ │ IRC: classic IRC networks with DM/channel routing and pairing controls. │ │ Google Chat: Google Workspace Chat app with HTTP webhook. │ │ Slack: supported (Socket Mode). │ │ Signal: signal-cli linked device; more setup (David Reagans: "Hop on Discord."). │ │ iMessage: this is still a work in progress. │ │ Feishu: 飞书/Lark enterprise messaging with doc/wiki/drive tools. │ │ Nostr: Decentralized protocol; encrypted DMs via NIP-04. │ │ Microsoft Teams: Bot Framework; enterprise support. │ │ Mattermost: self-hosted Slack-style chat; install the plugin to enable. │ │ Nextcloud Talk: Self-hosted chat via Nextcloud Talk webhook bots. │ │ Matrix: open protocol; install the plugin to enable. │ │ BlueBubbles: iMessage via the BlueBubbles mac app + REST API. │ │ LINE: LINE Messaging API bot for Japan/Taiwan/Thailand markets. │ │ Zalo: Vietnam-focused messaging platform with Bot API. │ │ Zalo Personal: Zalo personal account via QR code login. │ │ Synology Chat: Connect your Synology NAS Chat to OpenClaw with full agent capabilities. │ │ Tlon: decentralized messaging on Urbit; install the plugin to enable. │ │ │ ├───────────────────────────────────────────────────────────────────────────────────────────╯ │ ◇ Select channel (QuickStart) │ Feishu/Lark (飞书) │ ◇ Install Feishu plugin? │ Download from npm (@openclaw/feishu) Downloading @openclaw/feishu… Extracting /tmp/openclaw-npm-pack-jlpXLF/openclaw-feishu-2026.3.13.tgz… WARNING: Plugin "feishu" contains dangerous code patterns: Environment variable access combined with network send — possible credential harvesting (/tmp/openclaw-plugin-62J8G3/extract/package/src/client.test.ts:74); Environment variable access combined with network send — possible credential harvesting (/tmp/openclaw-plugin-62J8G3/extract/package/src/client.ts:12) Installing to /root/.openclaw/extensions/feishu… Installing plugin dependencies… 12:38:31 [plugins] plugins.allow is empty; discovered non-bundled plugins may auto-load: feishu (/root/.openclaw/extensions/feishu/index.ts). Set plugins.allow to explicit trusted ids. │ ◇ Feishu credentials ──────────────────────────────────────────────────────────────╮ │ │ │ 1) Go to Feishu Open Platform (open.feishu.cn) │ │ 2) Create a self-built app │ │ 3) Get App ID and App Secret from Credentials page │ │ 4) Enable required permissions: im:message, im:chat, contact:user.base:readonly │ │ 5) Publish the app or add it to a test group │ │ Tip: you can also set FEISHU_APP_ID / FEISHU_APP_SECRET env vars. │ │ Docs: feishu │ │ │ ├───────────────────────────────────────────────────────────────────────────────────╯ │ ◇ How do you want to provide this App Secret? │ Enter App Secret │ ◇ Enter Feishu App Secret │ XXXXXXXXXXXXXXXXXXXX │ ◇ Enter Feishu App ID │ XXXXXXXXXXXXXXXX [info]: [ 'client ready' ] │ ◇ Feishu connection test ───────────────────────────╮ │ │ │ Connected as ou_XXXXXXXXXXX │ │ │ ├────────────────────────────────────────────────────╯ │ ◇ Feishu connection mode │ WebSocket (default) │ ◇ Which Feishu domain? │ Feishu (feishu.cn) - China │ ◇ Group chat policy │ Open - respond in all groups (requires mention) │ ◇ Selected channels ──────────────────────────────────────────╮ │ │ │ Feishu — 飞书/Lark enterprise messaging. Docs: │ │ feishu │ │ │ ├──────────────────────────────────────────────────────────────╯ Config warnings: - plugins.entries.feishu: plugin feishu: duplicate plugin id detected; later plugin may be overridden (/root/.openclaw/extensions/feishu/index.ts) Updated ~/.openclaw/openclaw.json Workspace OK: ~/.openclaw/workspace Sessions OK: ~/.openclaw/agents/main/sessions
默认先选'no'或'skip'
◇ Skills status ─────────────╮ │ │ │ Eligible: 7 │ │ Missing requirements: 41 │ │ Unsupported on this OS: 7 │ │ Blocked by allowlist: 0 │ │ │ ├─────────────────────────────╯ │ ◇ Configure skills now? (recommended) │ No │ ◇ Hooks ──────────────────────────────────────────────────────────────────╮ │ │ │ Hooks let you automate actions when agent commands are issued. │ │ Example: Save session context to memory when you issue /new or /reset. │ │ │ │ Learn more: https://docs.openclaw.ai/automation/hooks │ │ │ ├──────────────────────────────────────────────────────────────────────────╯ │ ◇ Enable hooks? │ Skip for now Config warnings: - plugins.entries.feishu: plugin feishu: duplicate plugin id detected; later plugin may be overridden (/root/.openclaw/extensions/feishu/index.ts) Config overwrite: /root/.openclaw/openclaw.json (sha256 39b96fed22c10c899a69792e607481ecf7d50b58f30be76a2451fd34630ab5a7 -> 21a9d0e63b76cf77d1b268539c9a5eeba5e3f47e8981a9ba69f5295d91e11da, backup=/root/.openclaw/openclaw.json.bak) │ ◇ Systemd ───────────────────────────────────────────────────────────────────────────────╮ │ │ │ Systemd user services are unavailable. Skipping lingering checks and service install. │ │ │ ├─────────────────────────────────────────────────────────────────────────────────────────╯ │ ◇ Gateway service ─────────────────────────────────────────────────────────────────────╮ │ │ │ Systemd user services are unavailable; skipping service install. Use your container │ │ supervisor or `docker compose up -d`. │ │ │ ├───────────────────────────────────────────────────────────────────────────────────────╯ Config warnings:
- plugins.entries.: plugin : duplicate plugin id detected; later plugin may be overridden (/root/.openclaw/extensions/feishu/index.ts) Config :
- plugins.entries.: plugin : duplicate plugin id detected; later plugin may be overridden (/root/.openclaw/extensions/feishu/index.ts) Health check : gateway closed ( abnormal closure (no close frame)): no close reason Gateway : :
docker start openclaw

docker exec -it openclaw openclaw gateway run

在 docker 桌面版——Containers——点击 openclaw 这个 container——Exec——运行——对话
openclaw tui

docker exec -it openclaw openclaw tui

openclaw pairing approve feishu CZQCNKEG


本文介绍了在 MacOS 环境下通过 Docker 部署 OpenClaw 并完成飞书机器人集成的全流程操作。核心逻辑是依托 Docker 实现标准化环境部署,规避系统兼容问题,再通过大模型 API 配置赋予工具 AI 核心能力,最后对接飞书开放平台实现办公场景落地,整体流程可分为环境搭建、镜像部署、核心配置、平台对接、功能调试五大核心环节。
从实操关键点来看,Docker 环境正常启动、大模型 API 信息准确、飞书长链接稳定运行、权限配置完整、两端成功配对是整个部署流程的核心要点,任意一个环节出错都会导致功能异常,新手操作时需重点关注长链接启动后再保存飞书配置、权限批量导入完整、容器全程保持运行这几个细节,避免踩坑。
完成全部部署后,OpenClaw 飞书 AI 机器人即可正常投入使用,实现飞书端的 AI 对话、信息查询、任务处理等功能,且基于 Docker 的部署方式具备易维护、易迁移、易重启的优势,后续可根据需求自定义添加 Skills 技能、更换大模型 API 或对接其他协同平台,拓展更多实用功能。整体部署流程门槛较低,无需深厚的运维和开发基础,按照步骤逐步操作即可完成,能够快速帮助个人和团队实现 AI 办公能力的轻量化落地,提升日常办公协作效率,后续若出现容器异常、接口调用失败等问题,可优先检查 Docker 运行状态、API 密钥有效性、飞书长链接连通性和权限配置情况,快速排查解决。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML 转 Markdown 互为补充。 在线工具,Markdown 转 HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML 转 Markdown在线工具,online