1. 为什么要在 Linux 服务器上跑 OpenClaw 并接飞书OpenClaw 是一个可以私有化部署的 AI 助手网关它能对接多种大模型、暴露 Web 控制台、还能把对话能力接到即时通讯工具里。对运维和开发者来说把它放在 Linux 服务器上有两个直接好处一是服务器常年在线机器人随时响应二是数据留在自己机器上不用把内部问答丢到外部平台。但服务器通常没有图形界面OpenClaw 的 Web 控制台默认只监听127.0.0.1:18789直接访问不到。这时候 SSH 隧道就派上用场了——用一条ssh -L命令把远端端口映射到本地浏览器就能像访问本机服务一样操作控制台。真正让这套东西“有用”的一步是接入飞书。接入之后同事在飞书里 一下机器人就能拿到回答不用再单独开网页。而模型调用这一层我用 TaoToken 的统一 Key 来收口一个 Key 覆盖多个模型配置写一次后面换模型只改一个字段省得每个渠道都去维护一套凭证。这篇面向的是需要在 Linux 服务器上远程部署 OpenClaw、并打通飞书机器人通知闭环的运维和开发者。跟着做下来你会得到一份可复制的config.toml骨架、飞书 Webhook 与 TaoToken Key 的对接配置以及 SSH 隧道下的连通性验证动作。全程命令可直接粘贴遇到报错也有排查章节兜底。2. 部署前的环境准备与 TaoToken Key 获取2.1 系统与依赖确认官方一键脚本对系统版本有要求CentOS 7 因为 glibc 和 Node 版本问题容易失败建议用 Oracle Linux 8、Rocky Linux 8/9 或 Ubuntu 22.04 以上。先确认基础环境cat /etc/os-release node -v # 期望 v18 或 v20 git --version如果 node 没装脚本会自动补装但耗时会长一些15–30 分钟属正常。想省时间可以提前装好curl -fsSL https://rpm.nodesource.com/setup_20.x | bash - yum install -y nodejs git2.2 执行安装脚本curl -fsSL https://openclaw.ai/install.sh | bash安装过程中会进入引导模式几个关键选择记一下引导模式选 QuickStart模型选择阶段先随便选一个能跳过的项后面我们用 TaoToken 统一接管channel 选择阶段直接跳过飞书我们手动配hooks 全部勾上网关如果提示已存在选重装。安装完成后日志里会打印 Control UI 的地址和 token类似Control UI: http://127.0.0.1:18789/#token81f3570b0145c3f4eda75f495154532ad4c5b4523250183f这个 token 一定要复制下来后面 SSH 隧道访问时要用。2.3 获取 TaoToken 统一 Key打开 TaoToken 官网注册并登录进入控制台创建 API Key。地址在这里官网入口https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content控制台创建 Keyhttps://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentAPI Keys 管理页https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content创建后形如sk-xxxxxxxx只显示一次先存到本地密码管理器。API 基础地址是https://taotoken.net/api这个地址不加 UTM 参数直接写进配置。注意Key 属于敏感凭证不要提交到 Git 仓库也不要在公开群里贴。服务器上建议用环境变量或权限 600 的配置文件保存。3. 可复制的 config.toml 与飞书对接配置3.1 SSH 隧道打通控制台服务器没有桌面环境用本地机器的浏览器访问远端控制台靠端口转发ssh -N -L 18789:127.0.0.1:18789 root192.168.220.158-N表示只转发不执行远程命令这条命令会一直挂着别关。然后在本地浏览器打开http://127.0.0.1:18789/#token你的token值能进控制台就说明隧道通了。如果页面空白先确认服务器上网关是否在跑见 3.4。3.2 写入 TaoToken 模型配置OpenClaw 的模型层通过config.toml管理。先看默认配置路径openclaw config path一般是~/.openclaw/config.toml。用编辑器打开把模型段改成 TaoToken 的统一入口[models.default] provider openai-compatible base_url https://taotoken.net/api api_key sk-你的TaoTokenKey model claude-sonnet-4-20250514 [models.fallback] provider openai-compatible base_url https://taotoken.net/api api_key sk-你的TaoTokenKey model gpt-4o-mini这里provider用openai-compatible是因为 TaoToken 的 API 兼容 OpenAI 协议格式base_url指向https://taotoken.net/api即可。想换模型只改model字段Key 不用动——这就是统一 Key 的价值。也可以用命令行写入避免手改缩进出错openclaw config set models.default.base_url https://taotoken.net/api openclaw config set models.default.api_key sk-你的TaoTokenKey openclaw config set models.default.model claude-sonnet-4-202505143.3 安装飞书插件并写入通道配置先装飞书插件openclaw plugins install m1heng-clawd/feishu然后去飞书开放平台创建企业自建应用https://open.feishu.cn/app?langzh-CN创建后按顺序操作左侧「添加应用能力」→ 机器人 → 添加进入权限管理用批量导入方式粘贴权限 JSON至少包含im:message、im:message:send_as_bot、im:message.p2p_msg:readonly、im:resource等在「凭证与基础信息」里复制 App ID 和 App Secret。回到服务器写配置openclaw config set channels.feishu.appId cli_你的AppID openclaw config set channels.feishu.appSecret 你的AppSecret openclaw config set channels.feishu.enabled true openclaw config set channels.feishu.connectionMode websocket openclaw config set channels.feishu.dmPolicy pairing openclaw config set channels.feishu.groupPolicy allowlist openclaw config set channels.feishu.requireMention true对应的config.toml片段长这样方便你对照检查[channels.feishu] appId cli_你的AppID appSecret 你的AppSecret enabled true connectionMode websocket dmPolicy pairing groupPolicy allowlist requireMention trueconnectionMode选websocket是关键飞书后台的事件订阅方式必须选「长连接」不能选 HTTP 回调否则服务器没有公网回调地址会收不到消息。3.4 飞书后台事件订阅与发布进入飞书应用的「事件与回调」订阅方式选长连接添加事件im.message.receive_v1接收消息保存。然后到「版本管理与发布」创建版本并发布等审核通过。服务器上重启网关让配置生效openclaw gateway restart4. 验证请求与消息收发闭环4.1 命令行验证模型连通先不碰飞书单独验证 TaoToken Key 能不能出结果curl -s https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer sk-你的TaoTokenKey \ -H Content-Type: application/json \ -d { model: claude-sonnet-4-20250514, messages: [{role: user, content: 用一句话说明你已连通}] }返回 JSON 里choices[0].message.content有内容说明 Key 和网络都正常。如果返回 401检查 Key 是否复制完整返回 404检查base_url是不是写成了带/v1的重复路径。4.2 前台启动网关观察日志调试阶段用前台模式日志直接打屏openclaw gateway --port 18789 --verbose看到feishu channel connected之类的日志说明飞书长连接建立成功。这时候在飞书里给机器人发一条私聊消息服务器日志应该出现im.message.receive_v1事件随后是模型调用记录。4.3 移动端与 Web 端双向确认飞书移动端发「你好」机器人回复内容后再打开 SSH 隧道映射的 Web 控制台确认同一轮对话也出现在会话列表里。两边都能看到说明消息链路和存储都通了。确认无误后改成后台常驻openclaw gateway start用openclaw gateway status检查运行状态。5. 本篇常见报错排查5.1 飞书收不到消息最常见的原因是事件订阅方式选错。飞书后台必须选「长连接」如果选了 HTTP 回调服务器没有公网地址就永远收不到推送。其次检查应用是否已发布——只保存不发布事件不会生效。最后确认requireMention为 true 时群里必须 机器人才触发私聊不受影响。5.2 SSH 隧道连不上控制台先确认网关在跑openclaw gateway status。再确认隧道命令里的端口和实际监听端口一致默认 18789。如果本地 18789 被占用换个本地端口ssh -N -L 18888:127.0.0.1:18789 root192.168.220.158然后浏览器访问http://127.0.0.1:18888/#token...。token 不对会一直转圈回安装日志里重新复制。5.3 模型调用返回 401 或超时401 基本是 Key 问题确认没有多余空格、没有把sk-前缀漏掉。超时先测服务器到taotoken.net的连通性curl -I https://taotoken.net/api能返回 HTTP 状态码说明网络通。如果配置里base_url写成了https://taotoken.net/api/v1而客户端又自动拼/v1会变成/api/v1/v1/...导致 404统一用https://taotoken.net/api就好。5.4 插件安装失败openclaw plugins install报错时先确认 node 版本 ≥18再检查 npm 源是否可达。可以临时指定源重试npm config set registry https://registry.npmmirror.com openclaw plugins install m1heng-clawd/feishu装完用openclaw plugins list确认插件已加载。6. 后续接入与统一 Key 的维护建议跑通之后日常维护其实就两件事模型层和通道层。模型层因为用了 TaoToken 统一 Key换模型只改config.toml里的model字段不用重新申请凭证通道层如果以后要加钉钉或企业微信照着飞书这套channels.xxx的结构复制一份即可。如果你打算把这套东西长期挂在服务器上跑编码任务或 Agent 流程可以了解下 Coding Plan额度模型更适合高频调用Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content模型对话体验https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content接入文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content最后留一个我踩过的坑飞书应用改完权限后一定要重新发布版本否则新权限不生效机器人会一直提示无权限发消息。发布审核通过后再openclaw gateway restart基本就稳了。