利用闲置 Mac 从零部署 OpenClaw 教程:TaoToken 统一 Key 接入飞书插件与 Docker 配置

发布时间:2026/9/27 22:07:48
利用闲置 Mac 从零部署 OpenClaw 教程:TaoToken 统一 Key 接入飞书插件与 Docker 配置 1. 闲置 Mac 跑 OpenClaw为什么值得折腾OpenClaw 是一个能在本地执行 Shell 命令、读写文件、控制浏览器的 AI Agent你可以把它理解成“住在你电脑里的自动化助手”。它最大的特点是本地执行不依赖云端沙箱你让它整理下载目录、批量重命名文件、跑一段脚本它直接在你机器上动手。交互渠道也灵活Telegram、Slack、飞书都能接手机发条消息就能指挥家里那台电脑干活。我手上正好有一台 2017 款的 MacBook Air8G 内存平时吃灰。拿它来部署 OpenClaw 这类常驻服务再合适不过功耗低、macOS 稳定、Docker Desktop 支持完善。整条链路走下来核心就四步——装好 Docker/Git/Node 环境、拉源码跑初始化、配好模型通道、接上飞书插件。其中模型通道这块我用 TaoToken 的统一 Key 来接管省去在多个模型供应商之间来回切换配置的麻烦一个 Key 就能覆盖对话和编码场景。这篇教程面向的是手里有闲置 Mac、想从零把 OpenClaw 跑起来并接入飞书的人。我会把每一步的命令、配置文件骨架、验证方法都写清楚你照着敲就能复现。踩过的坑主要集中在 gateway token 不一致和飞书权限没发布这两处后面会单独讲。2. 部署前的环境准备与 TaoToken 接入位2.1 确认 macOS 版本与硬件底线老 Mac 第一件事是看系统版本。OpenClaw 依赖的 Docker Desktop 对 macOS 有最低要求版本太低会在启动容器时直接报错。点击左上角苹果图标 → 关于本机确认系统在 macOS 12 及以上。内存建议 8G 起步Docker 跑起来后 gateway 容器常驻会占 1G 左右留足余量。2.2 三件套安装Node、Git、DockerNode.js 直接去官网下 macOS 的.pkg安装包选 LTS 稳定版即可装完终端执行node -v能看到版本号就成。Git 去官网下载.dmg安装包装完git --version验证。Docker Desktop 是重点一定要选和系统版本匹配的安装包装完打开 Docker Desktop等鲸鱼图标变绿执行docker info能输出信息才算就绪。2.3 TaoToken 在整条链路里的位置OpenClaw 本身不绑定模型它通过 provider 配置去调用外部 API。传统做法是每个模型单独填 baseUrl 和 apiKey换模型就得改配置。TaoToken 提供统一 Key 和统一 API 通道你只需要在配置里指向它的 Anthropic 兼容端点把 Key 填一次后面切换模型只改模型 id 就行。接入前先去控制台创建一个 API Key地址是 https://taotoken.net/api-keys 创建后复制保存。API 基础地址用 https://taotoken.net/api 注意这个地址不带任何查询参数。如果你后面要跑长期编码任务或者 Agent 常驻可以了解下 Coding Plan地址是 https://taotoken.net/coding-plan 按需选择即可。想先验证模型通不通用模型对话页面 https://taotoken.net/chat 发一条消息最快。3. 拉源码、跑初始化与可复制配置3.1 clone 仓库并启动初始化脚本打开终端把仓库拉到本地git clone https://github.com/openclaw/openclaw cd openclaw进入目录后执行初始化脚本它会帮你把 Docker 镜像拉下来并生成基础容器./docker-setup.sh脚本跑完看到完成提示说明容器已经起来了。接着进入交互式配置第一步选 QuickStart模型供应商这里先随便选一个占位因为我们后面会用 TaoToken 的配置覆盖掉。聊天工具那一步直接跳过飞书我们单独装插件。3.2 解决 gateway token 不一致报错初始化完成后如果你打开控制 UI很可能看到这样的报错disconnected (1008): unauthorized: gateway token missing (set gateway.remote.token to match gateway.auth.token)原因是 UI 侧和 gateway 侧的 token 没对齐。解决办法是在openclaw.json里显式写死一个 token然后同步到 UI 的 Gateway Access 输入框。下面这份配置骨架可以直接复制把 token 换成你自己生成的一串随机字符串{ messages: { ackReactionScope: group-mentions }, agents: { defaults: { maxConcurrent: 4, subagents: { maxConcurrent: 8 }, compaction: { mode: safeguard }, workspace: /home/node/.openclaw/workspace, model: { primary: taotoken/claude-sonnet } } }, gateway: { mode: local, auth: { mode: token, token: 替换成你自己的随机token }, controlUi: { dangerouslyDisableDeviceAuth: true }, port: 18789, bind: loopback, tailscale: { mode: off, resetOnExit: false } }, auth: { profiles: { taotoken:default: { provider: taotoken, mode: api_key } } }, models: { mode: merge, providers: { taotoken: { baseUrl: https://taotoken.net/api, api: anthropic-messages, apiKey: 替换成你的TaoToken Key, models: [ { id: claude-sonnet, name: Claude Sonnet via TaoToken, reasoning: false, input: [text], contextWindow: 200000, maxTokens: 8192 } ] } } } }把这份文件写到宿主机上然后拷进容器并重启 gatewaycat ~/openclaw/openclaw.json EOF 粘贴上面的配置内容 EOF docker cp ~/openclaw/openclaw.json \ openclaw-openclaw-gateway-1:/home/node/.openclaw/openclaw.json docker compose restart openclaw-gateway注意baseUrl一定写https://taotoken.net/api不要带任何多余路径或参数否则会返回 404。3.3 飞书插件安装与参数模板飞书插件通过 CLI 安装docker compose run --rm openclaw-cli \ plugins install m1heng-clawd/feishu装完后在openclaw.json里补上 channels 段。App ID 和 App Secret 来自飞书开发者后台的凭证页面channels: { feishu: { appId: your-appId, appSecret: your-appSecret, domain: feishu, connectionMode: websocket, dmPolicy: pairing, groupPolicy: open, requireMention: true, enabled: true, mediaMaxMb: 30, renderMode: auto } }保存后再次重启 gateway 让插件生效docker compose restart openclaw-gateway飞书后台那边还需要做三件事在权限管理里批量导入权限 JSON在事件与回调里把订阅方式改成“使用长连接接收事件”然后添加“接收消息”事件。权限 JSON 如下{ scopes: { tenant: [ im:message, im:message.p2p_msg:readonly, im:message.group_at_msg:readonly, im:message:send_as_bot, im:resource ] } }改完记得创建版本并发布否则权限不生效。4. 验证 API 连通性与飞书消息回环4.1 用 curl 直接打 TaoToken 端点在配 OpenClaw 之前先用一条 curl 确认 Key 和端点都通curl -s https://taotoken.net/api/v1/messages \ -H x-api-key: 你的TaoToken Key \ -H anthropic-version: 2023-06-01 \ -H content-type: application/json \ -d { model: claude-sonnet, max_tokens: 64, messages: [{role: user, content: ping}] }返回里带content字段且文本非空说明通道正常。如果返回 401检查 Key 有没有复制全返回 404检查 baseUrl 是不是多写了路径。4.2 打开控制 UI 发消息浏览器访问http://127.0.0.1:18789/?token你的gateway token进入后在 Gateway Access 处填入同一个 token。然后给模型发一条消息比如“列出当前工作目录下的文件”。有回复就说明 gateway 和模型通道都通了。4.3 飞书端回环测试在飞书里找到你创建的自建应用给它发一条私聊消息。如果配置正确手机端会收到机器人的回复同时 Mac 上的 gateway 日志里能看到请求记录。群里 机器人 也能触发前提是requireMention为 true 时记得带上 。5. 本篇常见报错排查5.1 gateway token missing这个报错出现频率最高。根因是 UI 侧 token 和gateway.auth.token不一致。解决方法是把openclaw.json里的 token 复制出来粘贴到 UI 的 Gateway Access 输入框两边完全一致后刷新页面。5.2 飞书机器人不回复先看飞书后台的版本有没有发布没发布的话权限和事件都不生效。再看connectionMode是不是websocket用长连接模式不需要公网回调地址配错成 webhook 会一直连不上。最后确认enabled是 true改完配置必须重启 gateway。5.3 Docker 容器起不来老 Mac 上常见的是 Docker Desktop 版本和系统不匹配。去 Docker 官网的 release notes 找对应你 macOS 版本的安装包别直接下最新版。另外检查 Docker Desktop 是否已经启动完成鲸鱼图标没变绿之前执行 compose 命令会报连接错误。5.4 模型返回 404 或 401404 基本是 baseUrl 写错确认是https://taotoken.net/api而不是带/v1或其他后缀。401 是 Key 问题去控制台重新生成一个再试。如果模型 id 写错也会报错确认配置里的 id 和请求里的一致。6. 后续怎么用统一 Key 与长期编码跑通之后你会发现 OpenClaw 的模型配置全部收敛到 TaoToken 一个 provider 上。以后想换模型只改models.providers.taotoken.models里的 idKey 和 baseUrl 都不用动。对于需要长期挂着的编码类 Agent 任务可以看下 Coding Plan 的额度方案地址是 https://taotoken.net/coding-plan 比按量计费更适合常驻场景。飞书插件装好后你可以在手机上任性发指令让闲置 Mac 帮你跑脚本、整理文件、拉取构建。整套配置的骨架已经在上面的openclaw.json里给全了照着填 Key 和 token 就能复现。如果接入过程中遇到权限或端点问题接入文档在 https://taotoken.net/doc API Key 管理在 https://taotoken.net/api-keys 对照着排查就行。