1. 为什么要在本地跑 OpenClaw,以及模型调用为什么值得单独管
OpenClaw 是一个本地 AI 助手框架,能让你在自己的电脑、树莓派或服务器上运行一个智能助手,支持自动化任务、多消息平台接入、浏览器自动化、系统监控,以及飞书、GitHub 等工具的深度集成。它适合谁?适合那些不想把对话数据交给云端、希望自己掌控模型和配置、又愿意花半小时折腾环境的开发者。你可以定义助手的个性,让它理解你的工作方式,逐步构建属于自己的生产力工具。
但真正部署过的人会碰到一个绕不开的问题:模型调用怎么管。OpenClaw 支持任何 OpenAI 兼容的 LLM,Claude、GPT、Deepseek 都能接。问题在于,如果你同时用多个模型供应商,每个供应商一套 Key、一套 Base URL、一套额度,配置散落在不同文件里,切换模型时要改代码、重启服务,调试起来非常烦。更麻烦的是,有些供应商的接口地址和鉴权方式还不完全一致,OpenClaw 的 provider 配置写错一个字段,启动就报错。
我试过把 endpoint 和 API Key 统一改到 TaoToken,用一个 Key 管理多个模型的调用。TaoToken 提供 OpenAI 兼容的接口,Base URL 是https://taotoken.net/api,你只需要在 OpenClaw 的 provider 配置里把 baseUrl 指向它,把 apiKey 换成 TaoToken 的 Key,就能让 OpenClaw 通过统一入口调用模型。这样做的好处是:配置只写一次,换模型只改 model ID,不用动鉴权逻辑;额度、日志、Key 管理都在一个地方看;本地助手和云端 coding 工具可以共用同一个 Key,减少维护成本。
这篇指南会从零开始,带你走完 OpenClaw 的完整部署链路:环境准备、安装、配置引导、把模型 endpoint 改到 TaoToken、启动服务、验证对话请求成功返回。每一步都有可复制的命令和配置文件片段,你跟着做就能跑通。重点会放在模型接入和验证上,因为这是最容易卡住的地方。
2. 环境准备与 OpenClaw 安装:Node 版本、依赖检测和 onboard 引导
OpenClaw 的前置条件不复杂,但版本卡得比较死:Node.js >= 22,并且需要安装 Git。低于这个版本,npm 安装会直接报 engine 不匹配。我建议直接用 Node 24,稳定性和兼容性都更好。
Windows 系统下,用 PowerShell 执行以下命令安装 Chocolatey 和 Node:
powershell -c "irm https://community.chocolatey.org/install.ps1|iex" choco install nodejs --version="24.14.0" node -v npm -vLinux 系统下,用 nvm 管理 Node 版本更灵活:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.4/install.sh | bash . "$HOME/.nvm/nvm.sh" nvm install 24 node -v npm -v确认node -v输出 v24.x 之后,就可以安装 OpenClaw 了。官方提供脚本安装和 npm 手动安装两种方式。脚本安装会自动检测并安装缺失依赖,适合新手:
# Linux / Mac curl -fsSL https://openclaw.ai/install.sh | bash# Windows PowerShell iwr -useb https://openclaw.ai/install.ps1 | iex如果你更喜欢手动控制,用 npm 全局安装:
npm install -g openclaw@latest openclaw onboard --install-daemonopenclaw onboard --install-daemon会启动新手引导,并安装后台服务。引导流程里会依次问你几个问题:风险提示选 Yes,操作模式选 QuickStart,模型供应商先随便选一个(后面我们会改成 TaoToken),聊天渠道可以先 Skip,Skills 和 Hooks 也先 Skip。引导完成后,OpenClaw 会自动启动服务,并在控制台打印访问地址和 Token。
这里有一个关键信息要记下来:控制台会输出 Web UI 地址,形如http://127.0.0.1:18789/#token=xxxxx。这个 Token 是网关鉴权用的,后面验证请求时会用到。如果你不小心关掉了控制台,可以用openclaw status查看运行状态,或者直接看~/.openclaw/openclaw.json里的gateway.auth.token字段。
安装过程中如果遇到依赖缺失,脚本安装会自动补。npm 手动安装的话,如果openclaw onboard报错说找不到某个模块,先执行openclaw doctor诊断,再用openclaw doctor --fix尝试自动修正。这两个命令在排障时非常有用,建议记住。
3. 把模型 endpoint 改到 TaoToken:openclaw.json 配置片段与参数说明
OpenClaw 的模型配置集中在~/.openclaw/openclaw.json文件里。Windows 下路径是C:\Users\<你的用户名>\.openclaw\openclaw.json。这个文件是 JSON 格式,结构上分为models、gateway、channels等几个大块。我们要改的是models.providers部分。
OpenClaw 默认会写入一个 provider,比如qwen-portal,它的 baseUrl 指向https://portal.qwen.ai/v1。我们要做的是新增一个 OpenAI 兼容的 provider,把 baseUrl 指向 TaoToken 的 API 地址,把 apiKey 换成你在 TaoToken 控制台创建的 Key。
先获取 Key。访问 TaoToken 的 API Keys 页面(https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=openclaw_deploy&utm_campaign=rewrite),创建一个新的 Key,复制出来。然后编辑openclaw.json,在models.providers下加入以下配置:
{ "models": { "providers": { "taotoken": { "type": "openai", "baseUrl": "https://taotoken.net/api", "apiKey": "sk-你的TaoTokenKey", "models": [ { "id": "claude-sonnet-4-20250514", "name": "Claude Sonnet 4" }, { "id": "gpt-4o", "name": "GPT-4o" }, { "id": "deepseek-chat", "name": "DeepSeek Chat" } ] } }, "defaultModel": "taotoken/claude-sonnet-4-20250514" } }几个参数需要解释一下。type填openai,表示用 OpenAI 兼容协议,TaoToken 的接口就是这个协议。baseUrl填https://taotoken.net/api,注意不要多加/v1,OpenClaw 会自己拼接路径。apiKey填你刚才复制的 Key。models数组里列出你想用的模型 ID,这些 ID 要和 TaoToken 支持的模型名一致。defaultModel的格式是provider名/模型ID,这里就是taotoken/claude-sonnet-4-20250514。
如果你之前已经用 onboard 配过其他 provider,不用删掉,直接在providers里新增taotoken这一项就行。OpenClaw 支持多 provider 共存,你可以随时切换 defaultModel 来换模型。
改完配置后,需要重启网关让配置生效:
openclaw gateway restart如果你是用 Docker 部署的,重启命令是:
docker compose restart openclaw-gateway重启后,用openclaw status确认服务正常运行。如果启动时报reading choices之类的错误,说明 baseUrl 或 apiKey 有问题,检查一下有没有多余空格,或者 Key 是否已失效。
这里要提醒一点:TaoToken 的 Key 是敏感信息,不要提交到 Git 仓库。如果你用 Docker,可以把 Key 放在.env文件里,然后在openclaw.json里用环境变量引用,但 OpenClaw 目前对 provider 的 apiKey 字段支持环境变量替换的版本不一致,稳妥起见还是直接写在配置文件里,并确保文件权限是 600。
4. 验证请求:从 openclaw health 到实际对话返回
配置改完之后,不能只看服务启动成功就完事,必须实际发一个请求,确认模型能返回内容。验证分两步:先做健康检查,再发对话请求。
健康检查用openclaw health:
openclaw health这个命令会检查网关、模型 provider、渠道等组件的状态。如果 TaoToken provider 配置正确,输出里会显示 provider 可用。如果显示 provider 不可达,先检查网络能不能访问https://taotoken.net/api,再检查 Key 是否正确。
接下来发一个实际对话请求。OpenClaw 提供了 CLI 方式直接和模型对话:
openclaw chat --model taotoken/claude-sonnet-4-20250514 "你好,请用一句话介绍你自己"如果配置正确,你会看到模型返回的文本。这一步成功,说明 endpoint 和 Key 都通了。
如果你更喜欢用 Web UI 验证,打开控制台输出的那个带 Token 的 URL,进入 Control UI,在对话框里输入问题,选择模型为taotoken/claude-sonnet-4-20250514,发送。正常情况下会流式返回内容。
还有一种验证方式是用 curl 直接打 TaoToken 的接口,排除 OpenClaw 本身的干扰:
curl https://taotoken.net/api/chat/completions \ -H "Authorization: Bearer sk-你的TaoTokenKey" \ -H "Content-Type: application/json" \ -d '{ "model": "claude-sonnet-4-20250514", "messages": [{"role": "user", "content": "ping"}] }'如果这个 curl 能返回 JSON,说明 TaoToken 侧没问题,问题就在 OpenClaw 配置。如果 curl 也报错,那就是 Key 或网络的问题。
验证成功后,你可以把 defaultModel 设成你常用的模型,这样每次对话不用手动指定。如果你同时用 Claude Code 做编码,可以把 TaoToken 的 Key 也配到 Claude Code 的 settings 里,实现本地助手和编码工具共用同一个 Key。Claude Code 的配置方式是在~/.claude/settings.json里设置ANTHROPIC_BASE_URL和ANTHROPIC_API_KEY,具体可以参考 TaoToken 的接入文档(https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=openclaw_deploy&utm_campaign=rewrite)。
5. 常见报错排查:401、local proxy failed、reading choices 与 OAuth 失败
部署过程中最容易卡住的就是报错。下面列出几个我实际遇到过的错误,以及对应的排查思路。
401 Unauthorized。这个最直接,就是 Key 不对。检查openclaw.json里apiKey字段有没有写错,有没有多余空格,Key 是不是已经过期或被删除。如果你用的是环境变量引用,确认环境变量在当前 shell 里生效。还有一种情况是 baseUrl 写成了https://taotoken.net/api/v1,导致路径拼接后变成/api/v1/chat/completions,而 TaoToken 的接口路径是/api/chat/completions,多了一层/v1就会 401 或 404。把 baseUrl 改成https://taotoken.net/api即可。
local proxy failed。这个错误通常出现在 OpenClaw 尝试通过本地代理访问外部服务时。如果你没有配代理,检查openclaw.json里有没有残留的proxy字段。有些教程会让你在 provider 或 channel 里加proxy配置,如果你不需要,删掉它。另外,Docker 部署时,容器内的127.0.0.1指向容器本身,不是宿主机,如果配置里写了http://127.0.0.1:xxxx作为代理,容器内访问不到,就会报 local proxy failed。解决办法是删掉代理配置,或者改成宿主机的局域网 IP。
reading choices 报错。这个错误一般出现在模型返回的 JSON 结构不符合预期时。OpenClaw 期望返回体里有choices数组,如果 TaoToken 返回的是错误信息,比如{"error": {"message": "..."}},OpenClaw 解析时就会报 reading choices。这时候要看完整的错误日志,用openclaw logs --follow查看实时日志,里面会打印模型返回的原始内容。常见原因是模型 ID 写错了,TaoToken 找不到对应模型,返回了错误。检查models数组里的id是否和 TaoToken 支持的模型名完全一致。
OAuth 失败。如果你在 onboard 引导时选了 Qwen 或其他需要 OAuth 的 provider,可能会遇到 OAuth 回调失败。这个和 TaoToken 无关,是引导流程里的 provider 选择问题。解决办法是重新运行openclaw onboard,在模型供应商那一步选择 Skip 或 Manual,然后直接编辑openclaw.json加入 TaoToken provider。或者用openclaw config进入配置界面,选择 Model 部分,手动添加 provider。
Docker 权限错误。如果你用 Docker 部署,执行./docker-setup.sh时可能报EACCES: permission denied, open '/home/node/.openclaw/openclaw.json'。这是因为容器内用户 uid=1000,而挂载的目录属于 root。解决办法是:
chown -R 1000:1000 "$HOME/.openclaw"然后再重新执行启动脚本。
网关 Token 不一致。Docker 部署时,.env文件里的OPENCLAW_GATEWAY_TOKEN要和openclaw.json里gateway.auth.token的值一致,否则 Web UI 会提示鉴权失败。检查这两个值,改成一样的,然后docker compose restart openclaw-gateway。
排查问题的通用思路是:先看日志,openclaw logs --follow或docker compose logs -f;再用 curl 直接打 TaoToken 接口,确认 Key 和网络没问题;最后检查 OpenClaw 配置文件,逐字段核对。大部分问题都出在 baseUrl 多写/v1、apiKey 有空格、模型 ID 拼错这三个地方。
6. 长期使用建议:Coding Plan 与统一 Key 管理
跑通之后,如果你打算长期用 OpenClaw 做本地助手,同时又在用 Claude Code 或其他编码工具,建议把模型调用统一到 TaoToken 的 Coding Plan。Coding Plan 适合长期编码和 Agent 场景,额度和计费方式对开发者更友好。你可以在 TaoToken 控制台(https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=openclaw_deploy&utm_campaign=rewrite)查看当前的套餐和用量。
统一 Key 的好处是,OpenClaw 的对话请求、Claude Code 的编码请求、其他工具的 API 调用,都走同一个入口,额度共享,日志集中,换模型只改 model ID。你不需要为每个工具单独申请 Key、单独充值、单独排查问题。
如果你还没决定用哪个模型,可以先用 TaoToken 的模型对话功能(https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=openclaw_deploy&utm_campaign=rewrite)快速试几个模型,看看哪个在 OpenClaw 的场景下表现更好。试好之后,把对应的 model ID 写进openclaw.json的models数组,设为 defaultModel。
最后提醒一点:OpenClaw 的配置文件在升级版本后可能会被覆盖或迁移,升级前先备份~/.openclaw/openclaw.json。用openclaw update升级后,检查一下 provider 配置是否还在,如果被重置了,把备份的配置合并回去,重启网关即可。