ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Ubuntu 虚拟机安装 OpenClaw2026.3.8 +飞书+Deepseek完整流程:把 settings 改到 TaoToken

Ubuntu 虚拟机安装 OpenClaw2026.3.8 +飞书+Deepseek完整流程:把 settings 改到 TaoToken 1. Ubuntu 虚拟机里跑 OpenClaw 2026.3.8 的真实场景与坑点如果你手上只有一台 Windows 或 macOS 主机却想完整跑一遍 OpenClaw 2026.3.8 加飞书机器人再加 Deepseek 模型的链路Ubuntu 虚拟机是最省事的方案。OpenClaw 本身是个 Node 生态的 Agent 网关它需要常驻进程、需要 WebSocket 长连接、需要能访问外部模型 API这三件事在虚拟机里都能干净隔离不会污染你主机的 Node 环境。我这次用的宿主是 Parallels Desktop虚拟机装的是 Ubuntu 22.04 LTS配置 4 核 8G跑下来内存占用稳定在 1.2G 左右完全够用。先说清楚这套东西是什么、能做什么、适合谁。OpenClaw 是一个把大模型能力接到即时通讯渠道的网关程序2026.3.8 这个版本对飞书渠道的支持已经比较成熟支持长连接接收事件、支持群聊 触发、支持配对码授权。飞书负责当你的聊天前端Deepseek 负责当你的模型后端OpenClaw 负责在中间转发和调度。适合谁适合想给自己团队搭一个内部 AI 助手、又不想把数据往第三方 SaaS 里塞的开发者也适合想研究 Agent 网关架构、想自己改渠道适配的人。坑点集中在三个地方。第一是 Node 版本OpenClaw 2026.3.8 要求 Node 22 以上Ubuntu 自带的 apt 源里 Node 版本往往偏低必须用 n 版本管理器切上去。第二是模型通道默认向导会引导你走官方 OpenAI 通道但国内直连不稳定需要把 settings 里的 provider 改成自定义通道指向 TaoToken 的统一 Key/API 入口这样飞书里的对话请求才会走你配置的通道。第三是飞书权限事件订阅必须选长连接模式并且一定要添加im.message.receive_v1事件否则机器人收不到任何消息你会以为是 OpenClaw 挂了其实是飞书那边没把消息推过来。我试过在没装桌面环境的纯命令行 Ubuntu 里跑结果openclaw dashboard打不开因为 dashboard 依赖浏览器渲染。所以这篇流程里我会把 XFCE 桌面环境的安装也带上这样你能在虚拟机里直接看 dashboard 面板排查问题直观很多。整个流程从装系统依赖开始到飞书里能正常对话结束每一步都给可复制的命令和配置片段。2. TaoToken 前置准备统一 Key 与 API 通道配置在动 OpenClaw 之前先把模型通道这块理清楚。OpenClaw 的模型配置写在openclaw.json的models.providers字段里每个 provider 需要baseUrl、apiKey、api三个核心字段。默认情况下向导会给你生成一个openai:default的 profile走 OpenAI 官方地址但实际用起来你会发现请求经常超时尤其是在虚拟机网络环境里。所以更稳的做法是走 TaoToken 的统一通道把 baseUrl 指向 TaoToken 的 API 入口apiKey 用你在 TaoToken 控制台生成的 Keyapi 字段保持openai-completions不变因为 TaoToken 的接口是 OpenAI 兼容格式。TaoToken 在这里扮演的角色是统一模型网关你不需要为每个模型厂商单独维护一套 Key 和地址一个 Key 就能调 Deepseek、GPT 系列等模型。对 OpenClaw 来说它只认baseUrl apiKey model id这三样所以你把这三样配好OpenClaw 就认为自己在跟一个标准的 OpenAI 兼容服务对话。这样做的好处是以后你想换模型只改models里的 id 就行不用动渠道配置。具体操作上先到 TaoToken 控制台创建一个 API Key然后记下 API 入口地址。OpenClaw 的 provider 配置里baseUrl填 TaoToken 的 API 地址注意不要带多余的路径后缀OpenClaw 会自己在后面拼/chat/completions。apiKey填你刚生成的 Keyapi填openai-completions。模型 id 这块Deepseek 系列填deepseek-chat如果你要用推理模型就填对应的 id。配好之后OpenClaw 的agents.defaults.model.primary指向这个 provider 下的模型 id格式是provider名/模型id。这里有个细节要注意OpenClaw 的 provider 名字是可以自定义的比如你叫taotoken-gateway那模型引用就是taotoken-gateway/deepseek-chat。名字里不要带空格和特殊字符用短横线连接最稳。另外models.mode字段建议保持merge这样自定义 provider 会和内置的合并不会覆盖掉内置的 fallback 配置。如果你把 mode 改成replace那内置的 openai provider 就没了fallback 会失效。配好 Key 之后建议先在命令行用 curl 验证一下通道是否通再往 OpenClaw 里塞。验证命令很简单把 baseUrl 和 Key 替换成你自己的发一个最小的 chat completions 请求看返回里有没有choices字段。这一步能通后面 OpenClaw 里基本不会因为通道问题报错。如果这一步就 401那说明 Key 不对或者 baseUrl 写错了先解决这个再往下走。3. 可复制配置openclaw.json 完整 settings 片段这一节直接给可复制的配置。OpenClaw 2026.3.8 的配置文件默认路径是/home/你的用户名/.openclaw/openclaw.json如果你是用 Parallels 装的 Ubuntu用户名可能是parallels那路径就是/home/parallels/.openclaw/openclaw.json。这个文件在首次运行openclaw onboard之后会自动生成你也可以手动创建。下面这份配置是我实测能跑通的版本把模型通道改到了 TaoToken飞书渠道也配好了你只需要替换 apiKey、appId、appSecret、token 这几个占位值。{ meta: { lastTouchedVersion: 2026.3.8, lastTouchedAt: 2026-03-12T12:44:37.730Z }, wizard: { lastRunAt: 2026-03-12T12:44:37.657Z, lastRunVersion: 2026.3.8, lastRunCommand: configure, lastRunMode: local }, auth: { profiles: { taotoken:default: { provider: taotoken, mode: api_key } } }, models: { mode: merge, providers: { taotoken-gateway: { baseUrl: https://taotoken.net/api, apiKey: sk-你的TaoTokenKey, api: openai-completions, models: [ { id: deepseek-chat, name: deepseek-chat (TaoToken), reasoning: false, input: [text], cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, contextWindow: 16000, maxTokens: 4096 } ] } } }, agents: { defaults: { model: { primary: taotoken-gateway/deepseek-chat, fallbacks: [taotoken-gateway/deepseek-chat] }, models: { taotoken-gateway/deepseek-chat: {} }, workspace: /home/parallels/.openclaw/workspace, compaction: { mode: safeguard }, maxConcurrent: 4, subagents: { maxConcurrent: 8 } } }, tools: { profile: coding }, messages: { ackReactionScope: group-mentions }, commands: { native: auto, nativeSkills: auto, restart: true, ownerDisplay: raw }, session: { dmScope: per-channel-peer }, hooks: { internal: { enabled: true, entries: { session-memory: { enabled: true } } } }, channels: { feishu: { enabled: true, appId: cli_你的飞书AppID, appSecret: 你的飞书AppSecret, connectionMode: websocket, domain: feishu, groupPolicy: allowlist } }, gateway: { port: 18789, mode: local, bind: loopback, auth: { mode: token, token: 你的GatewayToken }, tailscale: { mode: off, resetOnExit: false }, nodes: { denyCommands: [ camera.snap, camera.clip, screen.record, contacts.add, calendar.add, reminders.add, sms.send ] } }, plugins: { load: { paths: [ /home/parallels/.npm-global/lib/node_modules/openclaw/extensions/feishu ] }, entries: { feishu: { enabled: true } } } }这份配置里几个关键点解释一下。models.providers.taotoken-gateway.baseUrl填的是 TaoToken 的 API 入口apiKey换成你自己的。agents.defaults.model.primary指向taotoken-gateway/deepseek-chat这样默认对话就走 TaoToken 通道。channels.feishu.connectionMode必须是websocket这是长连接模式跟飞书后台的事件订阅方式要对应。gateway.bind是loopback意味着只监听本机如果你想让局域网其他设备访问 dashboard需要改成0.0.0.0并配合openclaw onboard里的 LAN Access 选项。plugins.load.paths这个路径要跟你实际安装 OpenClaw 的位置一致。如果你是用官方脚本装的npm 全局包一般在/home/用户名/.npm-global/lib/node_modules/openclaw下面飞书扩展在extensions/feishu。如果你用sudo npm install -g装的路径可能是/usr/lib/node_modules/openclaw这个要按实际情况改路径错了飞书插件加载不起来机器人不会响应。改完配置后不要直接重启先用openclaw models list看一下模型有没有被正确识别。如果列表里能看到taotoken-gateway/deepseek-chat说明 provider 配置生效了。如果看不到检查 JSON 格式有没有语法错误可以用python3 -m json.tool openclaw.json验证一下。JSON 里不能有注释不能有尾逗号这两个是最常见的格式错误。4. 从零到跑通Ubuntu 虚拟机安装与验证请求这一节把安装和验证串起来。假设你已经在虚拟机里装好了 Ubuntu 22.04并且能正常联网。第一步是装 Node 22。Ubuntu 自带的 apt 源里 Node 版本偏低所以先用 apt 装一个基础 Node 和 npm再用 n 版本管理器切到 22。sudo apt update sudo apt install -y nodejs npm sudo npm install -g n sudo n 22.22.0 node -vnode -v输出应该是v22.22.0或更高。如果还是旧版本关掉终端重新打开再查一次因为 n 切换后需要新 shell 才能生效。接着装 OpenClaw 官方脚本curl -fsSL https://molt.bot/install.sh | bash安装过程中会问你是否继续输入yes。装完之后运行配置向导openclaw onboard --flow quickstart向导里会让你选 provider。这里不要选内置的 OpenAI选custom provider然后按提示填 baseUrl、apiKey、model id。baseUrl 填 TaoToken 的 API 地址apiKey 填你的 TaoToken Keymodel id 填deepseek-chat。填完之后向导会生成一份openclaw.json你可以对照上一节的配置检查一遍把缺的字段补上。接下来装桌面环境这样 dashboard 能打开sudo apt install -y xfce4 xfce4-goodies sudo apt install -y lightdm sudo dpkg-reconfigure lightdm sudo apt install -y fonts-noto-cjk sudo reboot重启后进入图形界面打开终端启动 gatewayopenclaw gateway status openclaw gateway probe openclaw logs --followgateway status里 Service 不应该是missingprobe应该显示Reachable: yes、Connect: ok、RPC: ok。如果 probe 显示不可达检查gateway.port有没有被占用用ss -tlnp | grep 18789看一下。日志里如果出现local proxy failed通常是 baseUrl 写错了或者网络不通先用 curl 验证 TaoToken 通道。验证模型调用openclaw models list列表里应该能看到你配的taotoken-gateway/deepseek-chat。然后开一个 dashboardopenclaw dashboard --no-open它会输出一个本地地址在虚拟机浏览器里打开就能看到对话界面。在 dashboard 里发一条消息如果模型正常返回说明模型通道通了。这一步是整个链路里最关键的验证点模型通了剩下的就是飞书渠道的事。飞书这边先到飞书开放平台创建应用拿到 App ID 和 App Secret填到openclaw.json的channels.feishu里。然后在飞书后台的权限管理里用批量导入的方式把权限 JSON 粘进去权限列表里必须包含im:message、im:message.p2p_msg:readonly、im:message:send_as_bot、im:resource这几个。事件订阅里选「使用长连接接收事件」添加im.message.receive_v1事件。最后到版本管理与发布里创建版本并发布不发布的话配置不生效。发布之后在飞书里找到你的机器人发一条消息它会回一个配对码。在终端里执行openclaw pairing approve feishu 配对码配对成功后再发消息就能正常对话了。如果机器人不回配对码检查openclaw logs --follow里有没有飞书连接相关的报错常见的是 appId 或 appSecret 填错或者事件订阅没选长连接。5. 常见报错排查401、local proxy failed、reading choices、OAuth这一节把几个高频报错单独拎出来说。第一个是 401通常出现在模型调用阶段日志里会写401 Unauthorized。原因基本是 apiKey 不对或者 baseUrl 写错。排查方法是用 curl 直接打 TaoToken 的 API看返回是不是 401。如果是重新生成 Key 并更新openclaw.json里的apiKey字段然后openclaw gateway restart。注意 Key 前后不要有空格JSON 里字符串要带引号。第二个是local proxy failed这个报错一般出现在 gateway 启动阶段意思是本地代理层没起来。常见原因是gateway.port被占用或者gateway.bind配成了loopback但 dashboard 想从外部访问。先ss -tlnp | grep 18789看端口占用如果被占改gateway.port到别的值比如 18790。如果是要局域网访问运行openclaw onboard选Enable LAN Access然后把gateway.bind改成0.0.0.0重启 gateway。第三个是reading choices相关报错日志里可能出现cannot read property choices of undefined或者reading choices。这是模型返回体不符合预期导致的通常是 baseUrl 指向的服务返回了非 OpenAI 格式的响应。检查baseUrl是不是指向了 TaoToken 的 API 入口而不是某个网页地址。另外api字段必须是openai-completions如果写成别的值OpenClaw 会用错误的解析器去读响应就会读不到choices。第四个是 OAuth 相关报错如果你在向导里误选了 OAuth 模式日志里会出现OAuth token expired或OAuth flow failed。OpenClaw 的模型通道用 API Key 模式就够了不需要 OAuth。解决办法是把auth.profiles里的 mode 改成api_keyprovider 改成你的自定义 provider 名然后重新openclaw configure在模型配置那一步选 API Key 模式。还有一个容易忽略的点是飞书配对码不生效。如果你关了终端再打开配对状态可能丢了需要重新跑openclaw onboard --flow quickstart恢复。如果配对码输入后提示无效检查配对码有没有过期配对码一般有时效重新在飞书里发消息拿新的。另外openclaw pairing approve feishu后面的配对码要跟飞书里显示的一致大小写敏感。排查的时候养成看日志的习惯openclaw logs --follow会实时输出报错信息比 dashboard 上看到的详细得多。如果日志里出现feishu websocket disconnected检查虚拟机的网络是不是断了或者飞书后台的长连接配置有没有保存。长连接模式下OpenClaw 主动连飞书不需要公网 IP这也是它在虚拟机里能跑通的原因。6. 把 settings 改到 TaoToken 后的长期使用建议配置改到 TaoToken 之后日常使用基本不用再动openclaw.json。如果你想换模型比如从deepseek-chat换成别的只需要在models.providers.taotoken-gateway.models数组里加一条然后在agents.defaults.model.primary里改引用就行。TaoToken 的 Key 是统一的换模型不用换 Key这是走统一通道最省事的地方。如果你团队里多人用可以把 Key 放在环境变量里openclaw.json里用${TAOTOKEN_API_KEY}这种占位符引用避免 Key 明文写在配置文件里。飞书渠道这边如果要把机器人拉到群里用groupPolicy保持allowlist然后在飞书后台把群加到白名单里。群聊里默认是 触发messages.ackReactionScope设成group-mentions就是这个意思。如果想让机器人响应所有消息改成all但这样群里消息多了会消耗模型额度建议还是保持 触发。长期跑的话建议把 gateway 做成 systemd 服务这样虚拟机重启后自动拉起。OpenClaw 本身有 daemon 模式openclaw onboard --install-daemon会帮你装好。装完之后用systemctl status openclaw看状态。日志可以用journalctl -u openclaw -f跟比openclaw logs更底层适合排查启动阶段的问题。最后说一个实用技巧。如果你在 dashboard 里测试模型通了但飞书里发消息没反应先看openclaw logs --follow里有没有收到飞书事件。如果日志里完全没有飞书事件说明飞书那边没推过来回去检查事件订阅是不是im.message.receive_v1以及版本有没有发布。如果日志里有事件但模型没回那就是模型通道的问题回到第 5 节排查 401 或 choices 报错。把这两段日志分开看定位问题会快很多。
返回列表