 Ubuntu 系统部署教程:把 settings 改到 TaoToken 打通微信接入)
1. 为什么要在 Ubuntu 上把 OpenClaw 的模型通道换成 TaoTokenOpenClaw 是一个可以跑在自己服务器上的 AI Agent 框架它能接企业微信、个人微信、飞书、钉钉这些入口把大模型能力塞进日常聊天工具里。你发一句话它调用模型、执行 skill、再把结果回给你整个过程像在跟一个住在服务器里的助手对话。适合谁适合手里有一台 Ubuntu 机器、想让 AI 帮自己处理消息和任务、又不想被单一模型厂商额度卡住的人。我这次部署的起点和很多人一样先用阿里云百炼的免费 API 把 OpenClaw 跑起来。百炼确实友好新账号送一批免费 token控制台里申请一个 API Key 就能用模型市场里 kimi、qwen 这些都能选。但用着用着问题就来了——免费额度有时限模型切换要改配置多个 Agent 共用一套 Key 时额度混在一起不好管。更麻烦的是如果你后面还想接别的模型就得在openclaw.json里反复改baseUrl和apiKey每换一次都要重启网关。所以这篇教程的重点不是怎么装 OpenClaw而是装完之后怎么把模型通道统一改到 TaoToken。TaoToken 提供的是 OpenAI 兼容的 API 通道一个 Key 可以走多个模型Base URL 固定配置一次就能长期用。对 OpenClaw 这种把 provider 写在 JSON 里的框架来说改 endpoint 比换厂商省事得多。下面我会从 Ubuntu 前置依赖开始一路写到企业微信回调验证中间所有配置文件都给可复制的片段。先明确一个概念OpenClaw 里的模型提供商和消息渠道是两套独立配置。models.providers管的是模型从哪来channels管的是消息从哪进。我们这次动的是前者把dashscope那套换成 TaoToken 的兼容端点后者企业微信的配置照旧。这样改完微信消息进来后走的还是 OpenClaw 的 Agent 逻辑只是底层模型请求发到了 TaoToken。2. Ubuntu 前置依赖与 OpenClaw 安装Git、Node.js 22、Cmake 一个都不能少Ubuntu 上装 OpenClaw前置库这块最容易卡人。官方安装脚本会检查 Git、Node.js 和 Cmake版本不够直接报错退出。我建议先手动把这三个装好再跑安装脚本能省掉很多脚本跑到一半失败的排查时间。先更新软件源然后装 Gitsudo apt update sudo apt install -y gitNode.js 要求 22 或更新版本。Ubuntu 自带的 apt 源里版本通常偏低用 NodeSource 的源装curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash - sudo apt-get install -y nodejs装完验证一下node -v npm -vnode -v输出应该是v22.x.x这种。如果还是旧版本说明 PATH 里有别的 node用which node看一下路径。Cmake 要求 3.19 以上。Ubuntu 22.04 自带的 cmake 版本可能刚好卡在边界稳妥起见用 Kitware 的源sudo apt install -y wget gnupg lsb-release wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2/dev/null | sudo apt-key add - sudo apt-add-repository deb https://apt.kitware.com/ubuntu/ $(lsb_release -cs) main sudo apt update sudo apt install -y cmake$(lsb_release -cs)会自动取你当前 Ubuntu 的代号比如 jammy、focal不用手动改。装完cmake --version确认一下。三个依赖齐了之后跑 OpenClaw 官方安装脚本curl -fsSL https://openclaw.ai/install.sh | bash安装器会走一个新手引导问你要不要加 skill、选哪些能力。这一步按自己喜好来不确定就选默认。装完后 OpenClaw 会尝试打开 Gateway Dashboard如果你的 Ubuntu 是纯命令行没有桌面环境浏览器打不开是正常的后面我们用 SSH 转发或者直接改配置走公网访问。这里有个坑要提前说如果你用的是阿里云、腾讯云这类云服务器安全组里必须放行 18789 端口否则 Dashboard 和后面的企业微信回调都进不来。放行规则是 TCP 18789来源可以先设成你的固定 IP调试阶段图省事设0.0.0.0/0也行但调完记得收紧。Dashboard 访问不了的话打开 OpenClaw 目录下的openclaw.json找到gateway段把bind改成lanallowedOrigins填你的公网地址再加两个开关gateway: { port: 18789, mode: local, bind: lan, controlUi: { allowedOrigins: [ http://你的公网IP:18789 ], allowInsecureAuth: true, dangerouslyDisableDeviceAuth: true }, auth: { mode: token, token: 你的DashboardToken } }改完重启网关openclaw gateway restart然后浏览器访问http://你的公网IP:18789/?token你的DashboardToken。注意这个地址和 token 别往外发公网暴露的 Dashboard 等于把 Agent 的控制权交出去。3. 把 settings 改到 TaoTokenopenclaw.json 里的 models.providers 完整配置这一步是整篇的核心。OpenClaw 默认用阿里云百炼时models.providers里写的是dashscopebaseUrl指向https://dashscope.aliyuncs.com/compatible-mode/v1。我们要做的是把这个 provider 换成 TaoToken 的兼容端点Key 换成 TaoToken 的 API Key。先拿到 TaoToken 的 API Key。登录官网后进控制台在 API Keys 页面创建一个新 Key复制出来。这个 Key 就是后面配置里apiKey字段的值。TaoToken 的 API 基础地址是https://taotoken.net/apiOpenClaw 走 OpenAI 兼容模式所以baseUrl填这个地址即可。打开openclaw.json找到models段改成下面这样。注意providers下面的键名我用了taotoken你可以叫别的但agents.defaults.model.primary里的前缀必须跟它一致{ models: { mode: merge, providers: { taotoken: { baseUrl: https://taotoken.net/api, apiKey: 你的TaoTokenAPIKey, api: openai-completions, models: [ { id: claude-sonnet-4-5, name: Claude Sonnet 4.5, reasoning: true, input: [text, image], contextWindow: 200000, maxTokens: 64000, compat: { supportsDeveloperRole: false, supportsStrictMode: false } } ] } } }, agents: { defaults: { model: { primary: taotoken/claude-sonnet-4-5 }, compaction: { mode: safeguard } } } }几个字段解释一下。api固定写openai-completions因为 TaoToken 提供的是 OpenAI 兼容接口。models数组里可以放多个模型每个模型有自己的id、contextWindow、maxTokens。id是调用时用的模型标识name是显示名。compat里的开关按模型特性来不确定就保持false。如果你之前配过百炼记得把dashscope那个 provider 整段删掉或者至少把agents.defaults.model.primary改成taotoken/前缀否则 OpenClaw 还是会走旧通道。改完配置后重启网关openclaw gateway restart重启后进 Dashboard在对话界面发一条测试消息。如果模型正常返回说明 TaoToken 通道已经通了。这一步的验证很关键因为后面企业微信接入后消息最终也是走这条模型通道模型不通的话微信那边只会一直转圈。有个细节要注意baseUrl结尾不要带/v1。TaoToken 的 API 地址是https://taotoken.net/apiOpenClaw 内部会按 OpenAI 兼容格式拼接路径。如果你手滑写成https://taotoken.net/api/v1请求会 404。这个坑我踩过排查了半天才发现是路径多了一段。另外如果你想让不同 Agent 用不同模型可以在agents下面定义多个 agent每个 agent 的model.primary指向不同的taotoken/模型id。这样一套 Key 就能跑多个模型不用来回改配置。4. 企业微信接入回调地址、Token、EncodingAESKey 与 openclaw.json 的 channels 配置模型通道通了之后接下来把企业微信接进来。OpenClaw 官方本身不直接支持企业微信需要装一个中国区插件。插件地址在 GitHub 上叫openclaw-china支持飞书、钉钉、QQ、企业微信和个人微信。我们这次用企业微信这条线。先装插件openclaw plugins install openclaw-china/wecom-app openclaw china setupopenclaw china setup是插件的配置向导会引导你填企业微信的参数。如果你想手动配也可以直接改openclaw.json。企业微信这边需要先创建一个自建应用。登录企业微信管理后台左侧菜单点「应用管理」在「自建」区域点「创建应用」填个应用名称和 logo创建成功后进入应用详情页。这里要记三个东西AgentId 在应用详情页顶部是一串数字比如1000002。Secret 点「查看」获取这个就是corpSecret。企业 ID 在左侧「我的企业」页面底部叫「企业 ID」这个就是corpId。拿到这三个值后回到应用详情页找到「接收消息」设置点「设置 API 接收」。这里要填三样URL 填 OpenClaw Gateway 的公网地址加回调路径格式是http://你的公网IP:18789/wecom-app?token你的随机Token。如果你有域名可以用https://你的域名.com/wecom-app。Token 点「随机获取」生成一个或者自己定一个字符串。EncodingAESKey 也点「随机获取」是 43 位字符。注意顺序先在 OpenClaw 这边把配置写好、网关重启好再回企业微信后台点「保存」。反过来的话企业微信会发验证请求OpenClaw 没起来就会提示验证失败。OpenClaw 这边的配置手动改openclaw.json的话在channels段加wecom-app{ channels: { wecom-app: { enabled: true, webhookPath: /wecom-app, token: 你的随机Token, encodingAESKey: 你的43位EncodingAESKey, corpId: 你的企业ID, corpSecret: 你的应用Secret, agentId: 1000002, asr: { enabled: false }, inboundMedia: { enabled: true, maxBytes: 10485760, keepDays: 7 } } } }webhookPath要跟企业微信后台 URL 里的路径一致都是/wecom-app。token和encodingAESKey必须跟后台填的一模一样差一个字符都会验证失败。agentId是数字类型不要加引号。asr是语音识别需要额外的腾讯云配置暂时用不上就设false。inboundMedia管的是接收图片、文件这些媒体消息maxBytes是单文件大小上限keepDays是保留天数。改完重启网关openclaw gateway restart然后回企业微信后台在「接收消息」设置里点「保存」。如果配置正确会提示保存成功。如果提示失败先看 OpenClaw 日志有没有收到请求再看 token 和 AESKey 是否一致。还有一步别漏在应用详情页的「企业可信 IP」设置里把你服务器的公网 IP 加进去。企业微信只允许白名单 IP 接收回调不加的话消息进不来。5. 常见报错排查401、local proxy failed、reading choices、OAuth 验证失败部署过程中最容易撞上的几类报错我按实际遇到的顺序列一下每个都给排查方向。401 Unauthorized这个基本是 API Key 的问题。先确认openclaw.json里taotoken.apiKey填的是完整的 Key没有多余空格。然后确认baseUrl是https://taotoken.net/api没有多写/v1。如果 Key 是对的但还报 401去 TaoToken 控制台看一下这个 Key 的状态是不是被禁用或者额度用完了。还有一种情况是 Key 复制时漏了尾部字符重新复制一次。local proxy failed这个报错通常出现在 OpenClaw 启动阶段意思是本地代理起不来。常见原因是 18789 端口被占用。用sudo lsof -i:18789看一下谁占着如果是残留的 OpenClaw 进程kill掉再重启。另一个原因是gateway.bind设成了lan但allowedOrigins没配对你的访问地址导致控制台请求被拒。检查allowedOrigins里的 IP 和端口跟你浏览器地址栏是否一致。reading choices 相关报错这个一般出现在模型返回格式不对的时候。OpenClaw 期望 OpenAI 兼容格式的响应里面有choices数组。如果 TaoToken 返回的模型 ID 写错了或者api字段没设成openai-completions解析就会失败。检查models.providers.taotoken.models[].id是不是 TaoToken 支持的模型标识以及api字段的值。另外compat里的supportsStrictMode如果设成true但模型不支持也可能导致响应异常先设false试。OAuth 验证失败 / 企业微信保存失败企业微信后台点保存时提示验证失败九成是 OpenClaw 这边没准备好。按这个顺序查网关是否在运行openclaw gateway status、18789 端口是否放行、webhookPath是否跟 URL 路径一致、token和encodingAESKey是否跟后台完全一致。还有一个容易忽略的点企业微信回调要求 URL 能公网访问如果你在本地虚拟机里跑企业微信的请求根本到不了必须是有公网 IP 的服务器。消息发出去没回复企业微信后台保存成功了但发消息没反应。先看 OpenClaw 日志有没有收到 inbound 消息。如果收到了但没回复说明模型通道有问题回到第 3 步验证 TaoToken 通道。如果日志里连 inbound 都没有检查「企业可信 IP」白名单是否加了服务器 IP。排查的时候养成看日志的习惯openclaw gateway logs -f这个命令会实时输出网关日志消息进来、模型调用、回复发出每个环节都有记录。比盲猜快得多。6. 端到端验证与后续从微信发一条消息到 Agent 回复的完整链路配置都完成后做一次端到端验证。打开企业微信 App找到你创建的那个应用发一条消息比如「你好帮我列一下今天的待办」。然后看 OpenClaw 日志应该能看到类似这样的流程收到 wecom-app 的 inbound 消息、调用 taotoken 的模型、返回结果、通过 wecom-app 发回企业微信。如果这条链路走通了说明整个部署完成Ubuntu 上的 OpenClaw 跑起来了模型通道走的是 TaoToken企业微信回调也通了。个人微信这边回到企业微信后台在「我的企业」设置里找到「微信插件」用个人微信扫码「邀请关注」的二维码就能在个人微信里打开入口。这样你不用装企业微信 App直接用个人微信就能跟 Agent 对话。后续如果想换模型只需要改openclaw.json里models.providers.taotoken.models数组加一个新模型然后把agents.defaults.model.primary指过去重启网关就行。不用换 Key不用改 baseUrl这是统一通道最省事的地方。如果后面要接飞书或者钉钉插件也支持装对应的 channel 插件在channels段加配置即可。模型通道不用动还是走 TaoToken。最后提醒一句公网暴露的 Gateway 一定要设好 tokendangerouslyDisableDeviceAuth这个开关只在调试阶段开正式用的时候建议关掉改用正常的设备认证。企业微信的 Secret 和 EncodingAESKey 也别泄露这些等于你应用的钥匙。