1. OpenClaw 是什么,新手为什么卡在部署这一步
OpenClaw(原 Clawdbot,也用过 Moltbot 这个名字)是一个开源的 AI 智能体平台,核心能力是让模型不只是聊天,而是能调用工具、读写文件、执行任务,把「对话」变成「干活」。你可以把它理解成一个本地可跑的智能助理中枢:一边接模型,一边接工具和消息通道,中间靠配置文件把两者串起来。适合谁?想自己搭一个专属助理的个人开发者、想验证 Agent 工作流的学生、以及需要把自动化任务跑在本地或自己服务器上的小团队。
但新手第一次接触 OpenClaw,十有八九会卡在同一个地方:部署流程看起来步骤不多,真正跑起来却处处是坑。环境依赖版本不对、端口没放通、模型通道填错、Key 权限不足,任何一个环节出问题,表现都是「启动成功但发消息没反应」或者「日志里一堆报错」。更麻烦的是,很多教程默认你已经懂 Docker、懂反向代理、懂环境变量注入,对第一次上手的人并不友好。
我试过把整个流程拆开重走一遍,发现真正需要你手动决策的其实只有三件事:用什么方式跑起来、模型调用通道怎么配、怎么验证它真的通了。前两件事决定了后面顺不顺,第三件事决定了你遇到问题时能不能快速定位。这篇就按这个顺序来,从环境准备到启动验证,再把模型通道统一改到 TaoToken,交付可以直接复制的配置片段和逐步验证命令,目标是让你在本地或一台轻量服务器上跑通第一个任务。
需要先说明一点:OpenClaw 本身是开源项目,部署方式灵活,本文走的是最通用的「本地/服务器 + 配置文件」路线,不绑定某一家云厂商的镜像方案。这样你换环境时迁移成本最低,配置逻辑也最清楚。下面所有命令和配置都以 Linux/macOS 为主,Windows 用户用 WSL2 同样适用。
2. 部署前的环境准备与 TaoToken 统一 Key 配置
2.1 环境依赖清单
先把基础环境确认一遍,避免后面因为版本问题反复折腾。OpenClaw 对运行时的要求不算高,但几个关键依赖必须到位。
| 依赖项 | 推荐版本 | 检查命令 | 说明 |
|---|---|---|---|
| Node.js | 20 LTS 及以上 | node -v | 低于 18 容易在依赖安装阶段报错 |
| npm / pnpm | npm 10+ 或 pnpm 9+ | npm -v | pnpm 安装更快,推荐 |
| Git | 2.30+ | git -v | 拉取源码和更新用 |
| Docker(可选) | 24+ | docker -v | 想容器化运行时才需要 |
| 可用端口 | 18789 | lsof -i:18789 | 默认 Web 控制台端口 |
如果你机器上还没有 Node.js,建议用 nvm 管理版本,避免污染系统环境:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash source ~/.bashrc nvm install 20 nvm use 20 node -v看到输出v20.x.x就说明运行时没问题了。这一步别跳过,我见过太多「安装依赖报 gyp 错误」的案例,根因都是 Node 版本太旧。
2.2 拉取 OpenClaw 源码
git clone https://github.com/openclaw/openclaw.git cd openclaw如果仓库地址有变动,以官方 README 为准。进入目录后先别急着装依赖,把配置文件结构看清楚,后面改起来才不慌。
2.3 为什么要把模型通道统一到 TaoToken
OpenClaw 默认支持多种模型接入方式,但如果你同时用多个模型供应商,就会遇到一个很现实的问题:每个供应商一套 Key、一套 Base URL、一套计费口径,配置散落在不同文件里,换模型时改到崩溃。把模型调用通道统一到 TaoToken 之后,你只需要维护一个 API Key 和一个 Base URL,模型切换只改 Model ID 这一行。
TaoToken 的 API 入口是https://taotoken.net/api,兼容 OpenAI 风格的调用格式,所以 OpenClaw 里凡是走 OpenAI 兼容协议的地方,把 Base URL 指过来就行。下面这段配置是核心,先记住三个要素:Base URL、API Key、Model ID。
{ "model": { "provider": "openai-compatible", "baseUrl": "https://taotoken.net/api", "apiKey": "sk-你的TaoToken密钥", "modelId": "claude-sonnet-4-5", "temperature": 0.7, "maxTokens": 4096 } }这段 JSON 可以直接作为 OpenClaw 模型配置的基础模板。provider填openai-compatible是因为 TaoToken 走的是兼容协议;baseUrl结尾不要多加/v1,具体以你实际调用的路径为准,如果报 404 再检查这一项;modelId按你实际要用的模型填,比如 Claude 系列或 GPT 系列,填错会直接报模型不存在。
2.4 获取并配置 TaoToken Key
打开 TaoToken 控制台创建 API Key,拿到以sk-开头的字符串。这个 Key 等同于你的调用凭证,不要提交到 Git 仓库,也不要在公开渠道贴出来。推荐用环境变量注入,而不是硬编码在配置文件里:
export TAOTOKEN_API_KEY="sk-你的TaoToken密钥" echo 'export TAOTOKEN_API_KEY="sk-你的TaoToken密钥"' >> ~/.bashrc然后在 OpenClaw 的配置文件里用${TAOTOKEN_API_KEY}引用。这样即使配置文件被同步或分享,Key 也不会泄露。如果你更习惯用.env文件,确保.env已经写进.gitignore。
配置完成后,建议先用一条最简请求验证 Key 和 Base URL 是否配对成功,别等到 OpenClaw 启动后才发现通道不通。这一步在下一节展开。
3. 可复制的 OpenClaw 配置文件与启动步骤
3.1 安装依赖
回到 OpenClaw 目录,安装依赖:
pnpm install如果没装 pnpm,先npm install -g pnpm。安装过程中如果卡在某个包上,多半是网络问题,可以换镜像源:
pnpm config set registry https://registry.npmmirror.com依赖装完后,通常会有一个.env.example或config.example.json,复制一份改成自己的:
cp .env.example .env cp config.example.json config.json3.2 完整配置文件片段
下面这份config.json是可直接复制修改的版本,重点看model和server两段:
{ "server": { "host": "0.0.0.0", "port": 18789, "accessToken": "换成你自己的访问Token" }, "model": { "provider": "openai-compatible", "baseUrl": "https://taotoken.net/api", "apiKey": "${TAOTOKEN_API_KEY}", "modelId": "claude-sonnet-4-5", "temperature": 0.7, "maxTokens": 4096, "timeout": 60000 }, "tools": { "enabled": ["shell", "file", "http"], "workdir": "./workspace" }, "logging": { "level": "info", "file": "./logs/openclaw.log" } }几个参数说明一下。server.host填0.0.0.0是为了让外部能访问,如果你只在本机用,填127.0.0.1更安全。server.accessToken是 Web 控制台的登录凭证,别用默认值。model.timeout设 60 秒,是因为 Agent 任务有时会连续调用多次模型,超时太短会中途断掉。tools.workdir是 Agent 读写文件的目录,建议单独建一个,别指向系统目录。
如果你用的是 TOML 风格的配置(部分版本支持),等价写法是:
[server] host = "0.0.0.0" port = 18789 accessToken = "换成你自己的访问Token" [model] provider = "openai-compatible" baseUrl = "https://taotoken.net/api" apiKey = "${TAOTOKEN_API_KEY}" modelId = "claude-sonnet-4-5" temperature = 0.7 maxTokens = 4096两种格式选一种即可,不要混用。改完配置后,先做一次语法校验,避免因为一个逗号导致启动失败:
node -e "JSON.parse(require('fs').readFileSync('config.json','utf8')); console.log('config ok')"输出config ok就说明 JSON 格式没问题。
3.3 启动 OpenClaw
pnpm start或者用开发模式启动,能看到更详细的日志:
pnpm dev启动成功的标志是日志里出现类似Server listening on 0.0.0.0:18789和Model provider initialized两行。如果只看到端口监听、没有模型初始化那行,说明模型配置没被正确加载,回到上一节检查config.json的路径和字段名。
3.4 放通端口
如果你在云服务器上跑,记得在安全组放通 18789 端口。本地跑的话,确认防火墙没拦:
sudo ufw allow 18789/tcp这一步不做,表现就是「本地 curl 通、外部浏览器打不开」,很容易误判成程序问题。
4. 验证请求:确认模型通道真的通了
4.1 先用 curl 直连 TaoToken 验证 Key
在启动 OpenClaw 之前,先单独验证 TaoToken 通道,把变量隔离出来:
curl -s https://taotoken.net/api/chat/completions \ -H "Authorization: Bearer $TAOTOKEN_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "claude-sonnet-4-5", "messages": [{"role": "user", "content": "只回复两个字:通了"}], "max_tokens": 32 }'如果返回的 JSON 里choices[0].message.content是「通了」,说明 Key、Base URL、Model ID 三者匹配正确。这一步通过,后面 OpenClaw 里再报模型错误,就可以排除凭证问题,直接查配置加载。
4.2 验证 OpenClaw 服务本身
服务启动后,先测健康检查接口:
curl -s http://127.0.0.1:18789/health返回{"status":"ok"}之类的响应就说明服务活着。然后测带鉴权的对话接口:
curl -s http://127.0.0.1:18789/api/chat \ -H "Authorization: Bearer 你的访问Token" \ -H "Content-Type: application/json" \ -d '{"message":"你好,帮我列一下当前目录的文件"}'如果 Agent 正常返回,并且日志里能看到它调用了shell工具执行ls,说明整条链路——请求接入、模型调用、工具执行——全部打通。这是最有价值的一次验证,因为它同时覆盖了模型通道和工具系统。
4.3 浏览器访问控制台
打开http://你的服务器IP:18789,输入server.accessToken登录。进去后发一条简单消息,比如「现在几点」,看是否有正常回复。如果页面能打开但发消息转圈,基本就是模型通道的问题,回到 4.1 重新验证。
4.4 跑通第一个真实任务
验证通过后,给它一个稍微真实点的任务,比如「在当前 workspace 目录下创建一个 hello.txt,写入今天日期」。观察日志里是否依次出现模型思考、工具调用、文件写入三个阶段的记录。任务完成后去./workspace目录确认文件真的生成了。这一步跑通,你才算真正拥有了一个「能替你干活」的助理,而不只是一个能聊天的窗口。
5. 常见报错排查:401、local proxy failed、reading choices、OAuth
新手部署 OpenClaw 时遇到的报错高度集中,下面按真实错误信息对照排查。
5.1 401 Unauthorized
最常见。表现是 curl 或 OpenClaw 日志里返回 401。原因通常是三类:Key 没注入成功、Key 前后有空格或换行、Key 已失效。
排查命令:
echo "当前Key长度: ${#TAOTOKEN_API_KEY}"如果长度明显不对,说明环境变量没生效。注意export只在当前终端有效,新开终端要重新 source,或者写进~/.bashrc。另外复制 Key 时容易带上首尾空格,用echo "$TAOTOKEN_API_KEY" | tr -d ' \n'清理一下再试。
5.2 local proxy failed
这个报错通常出现在 OpenClaw 尝试通过本地代理转发请求时。表现是日志里local proxy failed后面跟着连接被拒绝。根因一般是配置里残留了代理设置,或者baseUrl指向了一个不存在的本地地址。
检查配置里有没有proxy字段,有的话先删掉。确认baseUrl是https://taotoken.net/api而不是http://localhost:xxxx。如果你之前配过其他工具的代理环境变量,检查HTTP_PROXY、HTTPS_PROXY是否被设置:
env | grep -i proxy有输出就unset掉再重启服务。
5.3 reading 'choices' of undefined
这个报错说明代码在解析响应时,期望拿到choices字段但没拿到。原因通常是返回结构不是标准的 OpenAI 兼容格式,或者请求根本没成功、返回的是错误对象。
排查步骤:先用 4.1 的 curl 命令看原始返回。如果返回里是{"error": {...}},那就是上游报错,按错误信息处理;如果返回正常但 OpenClaw 仍报这个错,检查provider字段是否填成了别的值,导致解析逻辑走错分支。还有一种情况是modelId填错,上游返回了非预期结构。
5.4 OAuth 相关报错
部分模型供应商走 OAuth 授权流程,如果你在 OpenClaw 里选了这类 provider 但没完成授权,就会报 OAuth 错误。既然我们已经把通道统一到 TaoToken,最省事的做法是把provider固定为openai-compatible,用 API Key 鉴权,绕开 OAuth 流程。检查配置里有没有残留的oauth、clientId、refreshToken字段,有就删掉。
5.5 端口占用与启动失败
如果启动时报EADDRINUSE,说明 18789 被占了:
lsof -i:18789 kill -9 对应PID或者改server.port换一个端口。改完记得同步更新安全组和访问地址。
5.6 工具调用无响应
模型能回复但工具不执行,检查tools.enabled是否包含你要用的工具,以及tools.workdir目录是否存在且有写权限。目录不存在时,Agent 调用文件工具会静默失败,日志级别调到debug能看到更多细节。
6. 把通道固定下来:长期使用与 Coding Plan 的选择
部署跑通只是开始,真正决定体验的是后面怎么用。如果你只是偶尔问几个问题,当前的按量调用就够了;但如果你打算把 OpenClaw 当成日常编码助手或长期运行的 Agent,频繁切换模型、反复调 Key 会很消耗精力。
我的建议是把模型通道彻底固定成一套:Base URL 永远是https://taotoken.net/api,Key 只维护一个,需要换模型时只改modelId这一行。这样你的配置文件可以长期稳定,迁移环境时也只需要带走一个 Key。
对于长期编码和 Agent 场景,可以了解一下 Coding Plan,它更适合高频、持续的调用需求,省去每次单独配置的麻烦。如果你还在选模型阶段,想先对比不同模型的实际表现,可以直接在模型对话里试,确认哪个模型更适合你的任务类型,再写进 OpenClaw 配置。
配置和 Key 的管理入口在控制台,API Key 的创建和轮换在 API Keys 页面。文档里有更细的接口说明和参数列表,遇到本文没覆盖的字段可以去查。整个流程走下来,你会发现 OpenClaw 的部署难点不在安装本身,而在模型通道的配置和验证。把这两步做扎实,后面加工具、接消息通道都是顺水推舟的事。