目录
[2.1 MacOS安装Docker编辑](#2.1 MacOS安装Docker编辑)
[2.2 下载OpenClaw镜像](#2.2 下载OpenClaw镜像)
[2.3 启动OpenClaw镜像+安装引导](#2.3 启动OpenClaw镜像+安装引导)
[2.4 自己购买的大模型API配置](#2.4 自己购买的大模型API配置)
[2.5 飞书配置](#2.5 飞书配置)
[2.5.1 打开飞书开放平台](#2.5.1 打开飞书开放平台)
[2.5.2 创建应用](#2.5.2 创建应用)
[2.5.3 创建机器人](#2.5.3 创建机器人)
[2.5.4 权限管理](#2.5.4 权限管理)
[2.5.5 事件与回调](#2.5.5 事件与回调)
[2.5.6 新建版本](#2.5.6 新建版本)
[2.6 Skills及其他配置](#2.6 Skills及其他配置)
[2.7 启动openclaw容器(container)](#2.7 启动openclaw容器(container))
[2.8 openclaw容器内启动gateway](#2.8 openclaw容器内启动gateway)
[2.9 openclaw容器内使用tui对话](#2.9 openclaw容器内使用tui对话)
[2.9.1 docker应用内对话](#2.9.1 docker应用内对话)
[2.9.2 新开终端对话](#2.9.2 新开终端对话)
[2.10 openclaw与飞书配对](#2.10 openclaw与飞书配对)
[2.10.1 回到飞书与机器人聊天,会提示需要配对](#2.10.1 回到飞书与机器人聊天,会提示需要配对)
[2.10.2 在docker的Container终端内运行](#2.10.2 在docker的Container终端内运行)
[2.10.3 回到飞书继续聊天------大功告成!](#2.10.3 回到飞书继续聊天——大功告成!)
一、背景
OpenClaw最近实在是太火了,作为CSDN认证的"优质人工智能博主",不跟进有点说不过去了,还是一贯的风格,尽量极简让你养上自己的小龙虾。
在当下企业协同办公与AI智能化应用深度融合的趋势下,越来越多团队需要一款轻量化、易部署、可自定义对接的AI助手工具,实现大模型能力与日常办公协作平台的无缝衔接,提升内部沟通、信息处理、任务执行的效率。OpenClaw作为一款开源的AI助手框架,具备跨平台部署、灵活对接各类大模型API、适配主流协同办公工具的核心优势,能够帮助个人和中小企业快速搭建专属的AI协作机器人,无需复杂的底层开发,即可实现AI对话、任务处理、信息调取等实用功能。
相较于传统的AI工具部署方式,基于Docker部署OpenClaw能够最大程度规避不同操作系统的环境兼容问题,实现环境隔离、一键启停和便捷维护,尤其适合非专业运维人员快速上手。而飞书作为国内主流的企业协同办公平台,将OpenClaw与飞书机器人集成,能够让团队成员直接在飞书聊天界面调用AI能力,无需切换软件,真正实现办公场景与AI能力的闭环融合。本教程针对MacOS系统用户,梳理了从Docker环境搭建、OpenClaw镜像部署、大模型API配置到飞书机器人对接、功能调试的全流程实操步骤,解决新手部署过程中环境报错、配置遗漏、对接失败等常见问题,帮助用户快速完成专属AI办公助手的搭建,落地轻量化AI办公应用。
二、安装教程
2.1 MacOS安装Docker


2.2 下载OpenClaw镜像
bash
docker pull openeuler/openclaw:2026.3.2-oe2403sp3

2.3 启动OpenClaw镜像+安装引导
bash
docker run -it --name openclaw openeuler/openclaw:2026.3.2-oe2403sp3 onboard --install-daemon

2.4 自己购买的大模型API配置
bash
◇ 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
2.5 飞书配置
2.5.1 打开飞书开放平台

2.5.2 创建应用

2.5.3 创建机器人
进入应用---添加应用能力---机器人

2.5.4 权限管理
批量导入权限

批量权限json(或参考https://docs.openclaw.ai/zh-CN/channels/feishu)
bash
{
"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",
"docs:document.comment:write_only",
"docs:document.content:read",
"docs:document.media:download",
"docs:document.media:upload",
"docs:document.subscription",
"docs:document.subscription:read",
"docs:document:copy",
"docs:document:export",
"docs:document:import",
"docs:event.document_deleted:read",
"docs:event.document_edited:read",
"docs:event.document_opened:read",
"docs:event:subscribe",
"docs:permission.member",
"docs:permission.member:auth",
"docs:permission.member:create",
"docs:permission.member:delete",
"docs:permission.member:readonly",
"docs:permission.member:retrieve",
"docs:permission.member:transfer",
"docs:permission.member:update",
"docs:permission.setting",
"docs:permission.setting:read",
"docs:permission.setting:readonly",
"docs:permission.setting:write_only",
"docx:document",
"docx:document.block:convert",
"docx:document:create",
"docx:document:readonly",
"docx:document:write_only",
"drive:drive",
"drive:drive.metadata:readonly",
"drive:drive.search:readonly",
"drive:drive:readonly",
"drive:drive:version",
"drive:drive:version:readonly",
"drive:export:readonly",
"drive:file",
"drive:file.like:readonly",
"drive:file.meta.sec_label.read_only",
"drive:file:download",
"drive:file:readonly",
"drive:file:upload",
"drive:file:view_record:readonly",
"event:ip_list",
"im:chat",
"im:chat.access_event.bot_p2p_chat:read",
"im:chat.members:bot_access",
"im:message",
"im:message.group_at_msg:readonly",
"im:message.group_msg",
"im:message.p2p_msg:readonly",
"im:message:readonly",
"im:message:send_as_bot",
"im:resource",
"sheets:spreadsheet",
"sheets:spreadsheet.meta:read",
"sheets:spreadsheet.meta:write_only",
"sheets:spreadsheet:create",
"sheets:spreadsheet:read",
"sheets:spreadsheet:readonly",
"sheets:spreadsheet:write_only",
"slides:presentation:create",
"slides:presentation:read",
"slides:presentation:update",
"slides:presentation:write_only",
"space:document.event:read",
"space:document:delete",
"space:document:move",
"space:document:retrieve",
"space:document:shortcut",
"space:folder:create",
"wiki:member:create",
"wiki:member:retrieve",
"wiki:member:update",
"wiki:node:copy",
"wiki:node:create",
"wiki:node:move",
"wiki:node:read",
"wiki:node:retrieve",
"wiki:node:update",
"wiki:setting:read",
"wiki:setting:write_only",
"wiki:space:read",
"wiki:space:retrieve",
"wiki:space:write_only",
"wiki:wiki",
"wiki:wiki:readonly"
],
"user": [
"aily:file:read",
"aily:file:write",
"im:chat.access_event.bot_p2p_chat:read"
]
}
}
2.5.5 事件与回调
使用长链接接收事件

创建长链接环境
python
conda create -n py38 python=3.8
conda activate py38
pip install lark-oapi -U
python
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
python feishu_ws.py

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

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

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

2.5.6 新建版本

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


OpenClaw的飞书配置
bash
◇ 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
2.6 Skills及其他配置
默认先选"no"或"skip"
python
◇ 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 -> 21a9d0e63b76cf77d1b268e539c9a5eeba5e3f47e8981a9ba65f5295d91e11da, 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:\n- plugins.entries.feishu: plugin feishu: duplicate plugin id detected; later plugin may be overridden (/root/.openclaw/extensions/feishu/index.ts)
Config warnings:\n- plugins.entries.feishu: plugin feishu: duplicate plugin id detected; later plugin may be overridden (/root/.openclaw/extensions/feishu/index.ts)
Health check failed: gateway closed (1006 abnormal closure (no close frame)): no close reason
Gateway target: ws://127.0.0.1:18789
Source: local loopback
Config: /root/.openclaw/openclaw.json
Bind: loopback
│
◇ Health check help ────────────────────────────────╮
│ │
│ Docs: │
│ https://docs.openclaw.ai/gateway/health │
│ https://docs.openclaw.ai/gateway/troubleshooting │
│ │
├────────────────────────────────────────────────────╯
│
◇ Optional apps ────────────────────────╮
│ │
│ Add nodes for extra features: │
│ - macOS app (system + notifications) │
│ - iOS app (camera/canvas) │
│ - Android app (camera/canvas) │
│ │
├────────────────────────────────────────╯
│
◇ Control UI ───────────────────────────────────────────────────────────────────────────────╮
│ │
│ Web UI: http://127.0.0.1:18789/ │
│ Web UI (with token): │
│ http://127.0.0.1:18789/#token=xxxxxxxx │
│ Gateway WS: ws://127.0.0.1:18789 │
│ Gateway: not detected (gateway closed (1006 abnormal closure (no close frame)): no close │
│ reason) │
│ Docs: https://docs.openclaw.ai/web/control-ui │
│ │
├────────────────────────────────────────────────────────────────────────────────────────────╯
│
◇ Workspace backup ────────────────────────────────────────╮
│ │
│ Back up your agent workspace. │
│ Docs: https://docs.openclaw.ai/concepts/agent-workspace │
│ │
├───────────────────────────────────────────────────────────╯
│
◇ Security ──────────────────────────────────────────────────────╮
│ │
│ Running agents on your computer is risky --- harden your setup: │
│ https://docs.openclaw.ai/security │
│ │
├─────────────────────────────────────────────────────────────────╯
│
◇ Shell completion ───────────────────────────────────────────────────────╮
│ │
│ Shell completion installed. Restart your shell or run: source ~/.zshrc │
│ │
├──────────────────────────────────────────────────────────────────────────╯
│
◇ Dashboard ready ────────────────────────────────────────────────────────────────╮
│ │
│ Dashboard link (with token): │
│ http://127.0.0.1:18789/#token=xxxxxxx │
│ Copy/paste this URL in a browser on this machine to control OpenClaw. │
│ No GUI detected. Open from your computer: │
│ ssh -N -L 18789:127.0.0.1:18789 user@<host> │
│ Then open: │
│ http://localhost:18789/ │
│ http://localhost:18789/#token=xxxxxxx │
│ Docs: │
│ https://docs.openclaw.ai/gateway/remote │
│ https://docs.openclaw.ai/web/control-ui │
│ │
├──────────────────────────────────────────────────────────────────────────────────╯
│
◇ Web search (optional) ─────────────────────────────────────────────────────────────────╮
│ │
│ If you want your agent to be able to search the web, you'll need an API key. │
│ │
│ OpenClaw uses Brave Search for the `web_search` tool. Without a Brave Search API key, │
│ web search won't work. │
│ │
│ Set it up interactively: │
│ - Run: openclaw configure --section web │
│ - Enable web_search and paste your Brave Search API key │
│ │
│ Alternative: set BRAVE_API_KEY in the Gateway environment (no config changes). │
│ Docs: https://docs.openclaw.ai/tools/web │
│ │
├─────────────────────────────────────────────────────────────────────────────────────────╯
│
◇ What now ─────────────────────────────────────────────────────────────╮
│ │
│ What now: https://openclaw.ai/showcase ("What People Are Building"). │
│ │
├────────────────────────────────────────────────────────────────────────╯
│
└ Onboarding complete. Use the dashboard link above to control OpenClaw.
2.7 启动openclaw容器(container)
python
docker start openclaw

2.8 openclaw容器内启动gateway
python
docker exec -it openclaw openclaw gateway run

2.9 openclaw容器内使用tui对话
2.9.1 docker应用内对话
在docker桌面版------Containers------点击openclaw这个container------Exec------运行------对话
python
openclaw tui

2.9.2 新开终端对话
python
docker exec -it openclaw openclaw tui
2.10 openclaw与飞书配对
2.10.1 回到飞书与机器人聊天,会提示需要配对

2.10.2 在docker的Container终端内运行
python
openclaw pairing approve feishu CZQCNKEG

2.10.3 回到飞书继续聊天------大功告成!

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