这周我在Windows上把OpenClaw完整跑通了并且成功接上了飞书机器人整体链路还算顺。今天就把整套方案整理出来从Docker环境的准备工作到docker compose部署OpenClaw再到飞书开放平台的应用配置和消息联调全部按我实际操作过的顺序写清楚。先给没接触过的朋友一句话定位OpenClaw是一个开源的AI助手框架它的目标不是让你再多个聊天机器人而是让AI能真正“动手”——调用工具、访问文件、操作指令、对接外部系统。而飞书接入解决的是交互入口问题你在飞书里跟它对话它背后调度大模型和工具再把结果发回飞书。这套组合做完后你会在飞书里拥有一个能干活、能查资料、能执行任务的AI工作助理。整个过程涉及三个角色OpenClaw负责AI决策和工具编排模型负责理解和生成可以接本地Ollama也可以接云端API飞书负责收发消息。我建议所有想在本地搭AI助手的人按这个路线走一遍尤其是Windows用户。1. 先搞清楚OpenClaw是什么以及整套链路怎么运转1.1 一个能“动手”的AI助手OpenClaw到底做了什么OpenClaw并不是一个“一键安装就能用”的成品软件它更像一个带工具系统的AI运行时。它的底层逻辑是接入一个或多个大模型给模型挂上工具集MCP服务器再通过渠道层收发消息。模型在会话过程中如果判断需要外部能力会向框架发起工具调用请求框架去执行然后把执行结果回传给模型继续生成回答。这里有个容易混淆的点OpenClaw、模型、飞书是相对独立的组件。OpenClaw本身不生产智能它只是把智能接上“手和脚”。模型负责读消息、做规划、决定调哪个工具OpenClaw负责执行工具并把结果反馈给模型。飞书只是消息的入口和出口。我举个具体例子你在飞书里对它说“帮我查一下当前目录下有哪些txt文件”它会先把这句话发给模型模型识别出需要执行shell命令OpenClaw就去执行ls *.txt或dir拿到文件列表后再交给模型组织成自然语言回复最终通过飞书消息发给你。1.2 为什么非要用Docker隔离和可迁移性标题里是“windows中docker配置openclaw”这里Docker不是可选项而是性价比最高的方案。OpenClaw依赖大量第三方库和系统工具直接在Windows裸装需要处理Python版本、依赖冲突、环境变量、文件权限等一系列问题而且不同Windows机器上大概率表现不一样。用Docker之后这些全被隔离在容器里。你把镜像拉下来容器起来它就是一套固定的运行环境跟你本机装过什么互不干扰。以后换机器或者重装系统只要备份好Compose文件和配置目录拉起来就是原来的状态。这对做个人AI助手的人来说太重要了因为配置一次的成本不低能迁移就尽量迁移。另外一个实际考虑是模型服务的联通。如果你用Ollama跑本地模型Ollama和OpenClaw可以分别作为容器运行Docker Compose自带网络互通如果你用宿主机上的OllamaOpenClaw容器通过host.docker.internal访问宿主机端口Docker Desktop对此支持很成熟。1.3 整条链路的三个角色谁负责什么我再把负责关系列清楚因为后面所有配置都围绕这三层展开。渠道层负责接收消息和发送消息。本文里就是飞书FieShu海外版叫Lark。飞书开放平台提供机器人能力帮你处理消息事件推送。决策层OpenClaw核心。它接收飞书推来的消息把消息交给模型模型判断是否调用工具OpenClaw执行工具再把结果回传给模型生成最终回复。能力层模型和工具。模型可以跑在本地Ollama也可以走云端API。工具通过MCPModel Context Protocol挂载相当于给AI外接能力模块。这三层只要配置正确消息的流转是自动的。你不需要手动写逻辑转发消息和回复OpenClaw内部已经把这个闭环处理好了。你要做的本质上是四个字连对参数。2. Windows下Docker环境准备基础不牢地动山摇2.1 安装前的检查清单省得装完一堆问题在装Docker Desktop之前建议先花两分钟确认系统状态很多时候Docker起不来跟安装过程没关系就是系统层面少了条件。第一件事确认CPU虚拟化已开启。打开任务管理器切到“性能”标签选CPU看右下角“虚拟化”是否是“已启用”。如果显示禁用需要进BIOS里打开Intel VT-x或AMD-V。这一步不做Docker Desktop的WSL2后端根本起不来你折腾一下午也找不到原因。第二件事确认Windows版本支持WSL2。WSL2要求Windows 10 2004以上或Windows 11。老系统建议直接先升级系统不要花时间在老环境上踩坑。Windows 7、Windows 8这些老版本就别指望了Docker Desktop对它们的支持早就停留在老架构了。第三件事建议在管理员PowerShell里执行一次wsl --status看看WSL发行版状态是否正常。如果提示没有WSL执行wsl --install装完后重启系统。这一步经常被忽略但它是Docker Desktop启动失败的三大原因之一。2.2 Docker Desktop安装与配置要点Docker Desktop的安装包直接从官网下载装的时候勾选“Use WSL 2 based engine”这是Windows上跑Linux容器的最干净路径。安装完成启动后在Settings里检查几个关键项第一个是Resources → File sharing默认情况下WSL2模式下并不需要你手动添加共享目录但如果你后面要把某个Windows目录挂载给OpenClaw容器最终路径记得确认访问权限。第二个是Resources → WSL integration确保你使用的那个WSL发行版已经被Docker接管。如果你平时不用WSL终端只是用Docker Desktop自带的Docker命令行一般默认就够。国内网络环境还有一个现实问题Docker镜像拉取可能很慢。Docker Desktop的设置里可以配置registry mirror镜像加速地址你可以在网上找一个当下可用的加速器地址填进去。这个不是必须的但如果后面拉OpenClaw镜像卡住优先检查这里。2.3 装完怎么验证别急着跑OpenClaw装完之后我建议先做一次基础验证。打开PowerShell执行docker version docker compose version两行命令都有正常输出说明Docker引擎和Compose插件都就位了。接着跑一个最简单的容器测试docker run --rm hello-world这个容器如果能正常打印出Hello from Docker的信息说明整个容器运行链路是通的。很多人在这一步就会遇到Docker daemon没起来、WSL内核过旧之类的报错趁早在这里解决不要在OpenClaw的容器上排查环境问题因为变量太多了。如果这一步就报了“error during connect... docker daemon is not running”先去检查Docker Desktop右下角图标是不是已经变绿如果一直转圈去设置里看WSL2 integration状态或者重启Docker Desktop。遇到“error: start the windows daemon from a non-elevated terminal; shared clients”这类提示通常是你的Docker上下文被切到了Windows容器模式。OpenClaw要跑Linux容器执行一下docker context use desktop-linux切回Linux上下文就行不要用普通终端去启动Windows daemon。3. 用docker compose部署OpenClaw3.1 一份能跑的Compose文件OpenClaw的官方镜像在GitHub Container Registry上以ghcr.io/openclaw/openclaw:latest为镜像名。我建议直接写一个docker-compose.yml把所有环境变量、数据卷、网络关系一次固化下来以后启动用一条命令就够。下面这份Compose文件是我实际测试通过的基础版本模型接入选的是Ollama本地模式services: openclaw: image: ghcr.io/openclaw/openclaw:latest container_name: openclaw restart: unless-stopped environment: OPENCLAW_CHAT_CHANNELS: lark OPENCLAW_LARK_APP_ID: cli_xxxxxxxxxxxxxxxx OPENCLAW_LARK_APP_SECRET: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx OPENCLAW_MODEL_PROVIDER: ollama OPENCLAW_MODEL: qwen2.5:7b OLLAMA_BASE_URL: http://host.docker.internal:11434 TZ: Asia/Shanghai volumes: - ./openclaw/data:/app/data - ./openclaw/config:/app/config这里说明几个关键点。OPENCLAW_CHAT_CHANNELS设置为lark表示启用飞书渠道。OPENCLAW_LARK_APP_ID和OPENCLAW_LARK_APP_SECRET是飞书应用凭证后面第四章细说。OPENCLAW_MODEL_PROVIDER选ollamaOPENCLAW_MODEL填你在Ollama里已经拉取的模型名比如qwen2.5:7b。OLLAMA_BASE_URL指向宿主机Ollama服务——host.docker.internal是Docker Desktop在Windows上提供的固定域名容器内可以通过它访问宿主机端口。如果你打算把Ollama也用Docker跑可以在同一个Compose文件里加一个服务OpenClaw那边的URL改成http://ollama:11434二者在同一个内部网络里直接互通HTTP端口都不用暴露出来。两种方案我都测试过推荐新手用宿主机装Ollama直观好排查追求整机干净的同学可以用第二种。3.2 模型接入方式本地Ollama和云端API怎么选模型选型直接决定体验上限。本地Ollama路线的优点是隐私和零成本缺点是受限于硬件。如果你的电脑内存低于16GB7B模型会很吃力建议考虑3B或4B参数的小模型。云路线的代表是DeepSeek、OpenAI等兼容API的商效果更好但需要API Key而且网络环境要好。用云端API时环境变量稍微改一下即可OPENCLAW_MODEL_PROVIDER: openai OPENCLAW_MODEL: gpt-4o-mini OPENAI_API_KEY: sk-xxxxxxxxxxxx OPENAI_BASE_URL: https://api.openai.com/v1需要注意的是OpenClaw对模型的工具调用能力要求比较高。如果模型不支持可靠的工具调用它会在该执行工具的时候“脑补”一个结果来糊弄你。我实测过几款模型Qwen 2.5系列的tool call支持比较稳DeepSeek的API也很适合跑这种任务。初次跑通建议选自己最熟悉、商业API里性价比最高的那个把链路通了再折腾模型。3.3 启动OpenClaw容器后的第一轮验证写好Compose文件后在docker-compose.yml所在目录执行docker compose up -dDocker会拉取镜像并启动容器。拉镜像第一次比较慢如果卡住按第二章说的检查registry mirror。启动完成后再执行docker ps docker logs -f openclaw观察日志里有没有报错。如果一切正常日志会显示OpenClaw初始化了Lark渠道并且开始长连接飞书。这个时候你打开飞书给机器人发一条私聊消息它应该会开始处理并回复。不过我建议这个阶段不要急着测飞书先在飞书那边把所有配置做完整了第四章内容再做联调。因为OpenClaw和飞书之间是强绑定关系飞书应用权限没配好日志里会一直刷权限报错反而干扰你判断OpenClaw本身是否正常。4. 飞书机器人接入全流程4.1 在飞书开放平台创建一个机器人应用飞书机器人的创建入口在飞书开放平台开发者后台。打开后选择“创建企业自建应用”填一个名字比如“OpenClaw助手”创建完成之后你会得到一个App ID以cli_开头和一个App Secret这两个值就先等于你机器的钥匙。创建好应用后在“应用能力”里添加“机器人”能力。这一步不加的话你的应用就是个空壳无法收发消息。添加完后飞书会把这个应用变成一种机器人身份后续你在客户端里搜索应用名就能找到它并开始对话。这里有一个很容易忽略的点飞书开放平台区分“企业应用”和“个人应用”自建应用走企业应用通道。自己测试时你自己就是管理员不用走复杂审批流程只要后面发布版本时选择了自己可见就可以直接用。4.2 事件订阅选长连接不选Webhook飞书机器人的核心机制是事件订阅当用户给机器人发消息飞书平台需要把这个消息事件推送给OpenClaw。OpenClaw才能做出响应。飞书平台提供两种推送方式Webhook回调URL和长连接WebSocket。很多教程让你去搞公网域名、反向代理、HTTPS证书那是Webhook方式的笨办法。长连接模式下OpenClaw主动向飞书服务器建立一条WebSocket通道飞书通过这条通道把事件推下来。你根本不需要公网IP不需要域名不需要配置回调URL。家里的宽带、办公室的局域网只要是能正常上网的环境通通能用。我强烈建议直接用长连接。在开发者后台进入“事件与回调”选择“使用长连接接收事件”然后在“事件列表”里添加im.message.receive_v1接收消息事件。这里记住只订阅你真正需要的事件不要贪多。刚开始只需要消息接收事件图片、文件等后续有需要再加。4.3 权限、白名单和发布版本三个最容易踩坑的地方飞书的权限体系比一般聊天软件要严格得多。光添加机器人能力还不够你还得在“权限管理”里给应用开通消息相关权限。我整理了一份最小权限清单照着加就行权限标识用途im:message读取用户发给机器人的消息内容im:message:send_as_bot以机器人身份发送消息im:chat获取群组基础信息群里聊天时需要im:resource读取消息里的图片和文件资源可选每个权限开通后都要等发布版本后才真正生效。飞书开放平台的设计是“修改→创建版本→发布→生效”。每次你改了权限或者事件订阅都要走一遍这个流程。如果你发现自己给机器人发了消息但应用毫无反应第一时间检查是不是没发布版本。关于IP白名单飞书的安全设置里允许配置IP白名单。如果你开了这个功能必须把你当前机器的公网出口IP加进去。家用宽带的IP会变化我实测下来建议初期先不开启IP白名单校验等整体链路稳定后再根据飞书提示按需开启。如果遇到报错提示“IP地址被拒绝”就是这里的问题。4.4 OpenClaw侧飞书参数对照表飞书后台应用的参数和OpenClaw环境变量之间的对应关系我用一张表说明白配置时照着填基本不会出错飞书开放平台OpenClaw环境变量备注App IDOPENCLAW_LARK_APP_ID以cli_开头App SecretOPENCLAW_LARK_APP_SECRET敏感信息注意保密机器人启用状态OPENCLAW_CHAT_CHANNELS设为lark才启用飞书渠道事件订阅模式无后台选择“长连接”模式配置完成后重启OpenClaw容器docker compose restart openclaw然后看日志如果出现类似“Lark channel connected”或“connected to lark via websocket”的日志说明OpenClaw已经和飞书建立长连接。这个时候打开飞书App搜索你的机器人发一句“你好”它就该回了。5. 联调测试把消息闭环跑通5.1 最小可运行测试先从命令行到飞书循序渐进我强烈建议你按“两级台阶”的节奏来联调不要指望一次性在飞书里测试成功。第一级台阶先确认OpenClaw自身正常运行。如果你有终端交互模式先进容器里的CLI界面直接发消息测试模型和工具链路。这一步不涉及飞书任何配置能快速确认你的模型配置、Ollama连通性是否正常。第二级台阶进飞书测完整链路。给机器人私聊发一条简单消息比如“你好”“11等于几”。不要一上来就让它调用工具、查文件先把最基础的消息收发闭环打通。只有当它能在飞书里正常回复基础消息时再开始测试工具调用和复杂指令。我踩过一次比较深刻的坑第一次配置的时候飞书那边权限没发版OpenClaw这边又连了长连接结果测试时机器人半天不回话日志里全是权限错误。浪费了半个小时才发现是飞书权限没发布。所以后来我总结了个经验飞书配置动过之后先做权限生效检查再做消息测试。5.2 进阶玩法给AI接上MCP工具消息闭环打通之后OpenClaw就进入可玩状态了。接下来最有价值的一步是给AI接MCP工具。MCP是模型上下文协议你可以把它理解成AI的“USB接口”——挂载一个文件系统工具AI就能读写文件挂载一个网页抓取工具AI就能搜索网页挂载一个数据库工具AI就能查库。OpenClaw支持通过MCP配置挂载工具服务器。配置方式大体是在OpenClaw的配置目录里声明MCP服务器的启动命令或远程地址容器启动时自动拉起这些工具进程。这里有几个实际行动建议第一个建议是刚开始只挂一个最稳妥的工具比如文件系统操作工具测试AI能不能正确调用它并返回结果。第二个建议是注意MCP工具的安全边界AI能执行命令也就意味着错误操作会造成实际影响建议在限定目录或限定命令的范围内使用。第三个建议是如果MCP工具需要长时间运行尽量让它们独立在OpenClaw容器之外的服务中避免工具崩溃拖垮主进程。我在实际使用中给OpenClaw挂了文件搜索和Git操作两个工具效果很不错。你在飞书里对它说“帮我看下某个项目的提交记录”它真的去执行git log并把结果整理回复给你。6. 常见问题与排查技巧实录6.1 Docker启动故障黑名单我把WindowsDocker最容易翻车的几个点汇总成了一个速查表你遇到问题可以直接对照现象常见原因处理思路Docker Desktop一直卡在StartingWSL2未启用或内核过旧执行wsl --update重启系统docker命令提示daemon not runningDocker Desktop未启动或启动失败查看Docker Desktop日志检查WSL集成提示需要从非管理员终端启动Windows daemonDocker上下文切到了Windows容器模式执行docker context use desktop-linux容器启动后内网无法访问宿主机服务挂载或端口映射配置不对容器内用host.docker.internal访问宿主机拉镜像超时或速度慢网络环境问题配置registry mirror加速6.2 OpenClaw容器日志怎么读OpenClaw运行状态的第一手信息全在日志里学会看日志能省下大量时间。用docker logs -f openclaw实时查看遇到问题先确认有没有以下关键词权限相关错误一般会带permission、forbidden、401、403等字眼这时去飞书后台核对权限和版本发布。连接相关错误一般会带connect、websocket、disconnected这时检查App Secret对不对、网络通不通。模型相关错误一般会带model、timeout、provider这时先确认Ollama容器或宿主机Ollama服务是否正常用浏览器或curl访问模型的API地址看是否有响应。我通常在改配置后执行一次docker compose down docker compose up -d以干净状态启动。只是restart的话某些长连接状态可能会残留导致飞书那边事件推送异常。6.3 飞书机器人“已读不回”的排查清单飞书这边的问题通常比OpenClaw侧更隐蔽因为很多是配置生效类问题。我整理了一份排查清单按顺序查就完了第一步查“机器人是否已被正确添加”。在飞书里搜应用名能搜到并进入对话说明机器人能力已添加并且版本已发布。如果搜不到去后台确认机器人能力已添加、版本已发布、发布范围包含你本人。第二步查“消息是否进入了长连接”。看OpenClaw日志里有没有飞书消息事件推送的痕迹。如果日志完全安静说明飞书根本没把消息推过来问题在上游配置。第三步查“版本发布是否丢失权限”。飞书后台的权限生效必须走“创建版本→发布”流程。我遇到过在权限管理里开了权限但忘了发布版本结果机器人能看到消息却发不出回复。做好随手发布的习惯。第四步查“开发者后台的沙箱或测试环境”。有些应用创建后默认处于测试模式只对指定成员可见。如果别人搜不到你机器人先检查这个。自己的主账号测试一般是没问题的但如果你拉同事一起测试记得把他们的账号加进可用范围。写在最后的一点个人建议整套方案跑通之后我最大的体会是这种方法真正的价值不在“部署”而在“你愿意让它去做什么”。一个连接了飞书、Docker、本地模型和MCP工具的OpenClaw本质上已经是一台可以随时调用的数字员工。你给它接上文件系统它就是你团队的文档助手你给它接上定时器和HTTP请求工具它就能做定时汇报和信息巡检。我个人建议初学者在跑通基础链路后先固定在一个真实小场景里用两周比如“每天下午五点把某个目录里新增文件汇总发到我飞书私聊”。这种固定任务能快速逼出你配置里的短板也能让你逐步理解AI调度工具的真实行为模式。等稳定之后再逐步加工具和渠道会比一开始就铺一堆能力踏实得多。如果你接下来准备把飞书机器人接入Obsidian、飞书云文档这类知识管理工具前面的链路不用动只需要增加对应的MCP工具让AI在对话过程中把相关内容写入你的知识库。这个扩展方向我试过一部分路径是通的值得继续深挖。