1. 为什么 npm 装完 OpenClaw 后,第一件事是配好统一 Key
OpenClaw 是一个可以本地跑起来的 AI 助手运行框架,npm 安装版最大的好处是跨平台、升级方便,Windows、macOS、Linux 都能用一套命令搞定。它本身不绑定某一家模型,而是通过配置文件里的 API Key 去调用后端模型服务。很多人卡住的地方不是安装,而是安装完之后:Key 写哪儿、写什么格式、为什么终端一直报 Invalid Authentication。
这篇就围绕这条链路讲透:Node.js 环境准备 → npm 全局安装 OpenClaw → 接入 TaoToken 统一 Key/API 通道 → 写配置文件 → 发一条验证请求确认鉴权成功 → 遇到 Invalid Authentication 怎么逐条定位。适合刚接触 OpenClaw、想用一个 Key 打通多个模型、又不想在配置文件里反复改 base_url 的人。
我试过把 Key 直接塞进环境变量、也试过写进 settings.json,最后发现最稳的做法是:统一走 TaoToken 的 API 通道,把 base_url 和 Key 一次性写进配置骨架,后面换模型只改 model 字段。下面按可复制的顺序来。
2. 前置准备:Node.js 环境与 TaoToken 统一 Key
2.1 Node.js 版本要求与验证
OpenClaw 对 Node.js 版本有要求,建议 ≥ 22。先在终端确认:
node -v npm -v如果版本低于 22,去 Node.js 官网下载 LTS 或 Current 版本安装。Windows 用户如果遇到路径或权限问题,推荐在 WSL2 里操作,命令和 Linux 一致,后面所有步骤都能直接复制。
2.2 获取 TaoToken 统一 Key
TaoToken 的作用是提供一个统一的 API 通道和 Key,你不需要为每个模型单独申请密钥。注册和登录入口在官网,登录后进控制台创建 API Key:
- 官网入口:https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=
- 控制台创建 Key:https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console
- API Key 管理页:https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys
创建后你会拿到一串以sk-开头的 Key,先复制保存好。注意:Key 只在创建时完整显示一次,关掉页面就看不到了,建议先存到本地密码管理器。
2.3 确认 API 通道地址
TaoToken 的 API 基础地址是:
https://taotoken.net/api这个地址后面要写进 OpenClaw 的配置文件,作为base_url或baseURL。注意它不带任何查询参数,就是干净的/api路径。
3. 安装 OpenClaw 并写入统一 Key 配置
3.1 npm 全局安装
npm install -g openclaw openclaw -v能打印出版本号(例如 v2026.3.7)就说明安装成功。如果提示command not found,检查 npm 全局 bin 目录是否在 PATH 里:
npm config get prefix把这个路径下的bin(Linux/macOS)或根目录(Windows)加进环境变量即可。
3.2 初始化向导
openclaw onboard向导里会问安全确认、配置模式、AI 服务商、授权方式、Key 存储位置等。关键点:授权方式选通用 API Key,Key 存储选直接写入配置文件。服务商这一步如果你打算走 TaoToken 统一通道,可以先选一个占位,后面我们直接改配置文件覆盖。
3.3 配置文件骨架:settings.json
OpenClaw 的配置通常落在用户目录下的配置文件夹里。不同版本路径略有差异,常见位置:
~/.openclaw/settings.json ~/.config/openclaw/settings.json你可以用下面命令定位:
openclaw config path拿到路径后,写入或修改成这样的骨架:
{ "model": { "provider": "openai-compatible", "baseURL": "https://taotoken.net/api", "apiKey": "sk-你的TaoToken密钥", "model": "claude-sonnet-4-5", "temperature": 0.7 }, "server": { "port": 18789 } }几个字段说明:
| 字段 | 作用 | 注意 |
|---|---|---|
| provider | 指定协议类型 | 走统一通道用 openai-compatible |
| baseURL | API 基础地址 | 必须是 https://taotoken.net/api |
| apiKey | 鉴权密钥 | sk- 开头,别带空格和引号外的字符 |
| model | 默认模型名 | 按你实际要用的模型填 |
| port | 本地服务端口 | 冲突时改成 18790 等 |
3.4 配置文件骨架:config.toml
如果你的 OpenClaw 版本用 TOML 配置,等价写法如下:
[model] provider = "openai-compatible" base_url = "https://taotoken.net/api" api_key = "sk-你的TaoToken密钥" model = "claude-sonnet-4-5" temperature = 0.7 [server] port = 18789注意 TOML 里字段名可能是base_url和api_key(下划线),而 JSON 里是baseURL和apiKey(驼峰)。这是最容易写错、也最容易触发 Invalid Authentication 的地方之一。
3.5 用环境变量兜底
如果你不想把 Key 写死在文件里,可以用环境变量:
export OPENCLAW_API_KEY="sk-你的TaoToken密钥" export OPENCLAW_BASE_URL="https://taotoken.net/api"Windows PowerShell:
$env:OPENCLAW_API_KEY="sk-你的TaoToken密钥" $env:OPENCLAW_BASE_URL="https://taotoken.net/api"配置文件里的值优先级通常高于环境变量,两者别同时写冲突的值。
4. 启动服务并验证鉴权是否成功
4.1 启动与状态检查
openclaw start openclaw statusstatus会显示进程、端口、配置加载情况。如果端口被占用,改配置里的port再重启:
openclaw stop openclaw start4.2 直接用 curl 验证 Key 是否通
在启动 OpenClaw 之前,先用一条最小请求确认 TaoToken 的 Key 和通道是通的:
curl -X POST https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer sk-你的TaoToken密钥" \ -H "Content-Type: application/json" \ -d '{ "model": "claude-sonnet-4-5", "messages": [{"role": "user", "content": "只回复 ok"}] }'返回里带choices字段和内容,就说明 Key 和通道没问题。如果这里就报 401,那问题在 Key 或请求头,跟 OpenClaw 无关,先解决这一步。
4.3 通过 OpenClaw 发一条验证请求
服务起来后,用内置命令或 Web 面板发一条消息:
openclaw chat "只回复 ok"或者打开面板:
openclaw dashboard浏览器访问http://127.0.0.1:18789,用向导给的 Token 登录,发一条消息。能正常返回内容,说明整条链路:OpenClaw → 配置文件 → TaoToken 通道 → 模型,全部打通。
4.4 看日志确认鉴权细节
openclaw logs --tail 100日志里会打印实际使用的 base_url 和请求状态码。如果看到 401,重点看它请求的 URL 是不是https://taotoken.net/api/v1/chat/completions,以及 Authorization 头有没有带上。
5. Invalid Authentication 逐条排查清单
报 Invalid Authentication 或 HTTP 401,按下面顺序查,基本能定位到具体原因。
5.1 Key 本身的问题
最常见的是 Key 复制不完整、带了空格、或者已经失效。重新去 API Key 管理页生成一个:
https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys生成后立刻用 4.2 的 curl 测一遍,确认新 Key 可用再写进配置。
5.2 base_url 写错
这是第二大坑。常见错误写法:
https://taotoken.net/api/ # 末尾多斜杠,部分客户端会拼成 //v1 https://taotoken.net/api/v1 # 多写了 /v1,客户端再拼一次就重复 https://taotoken.net # 少了 /api正确写法就是干净的:
https://taotoken.net/api5.3 字段名大小写/下划线不匹配
JSON 用baseURL、apiKey;TOML 用base_url、api_key。写错字段名,配置加载时读不到,就会用空 Key 去请求,直接 401。改完配置后一定要重启服务:
openclaw stop openclaw start5.4 配置文件没被加载
用openclaw config path确认你改的文件就是它实际读的那个。有些版本会同时存在全局配置和项目级配置,项目级覆盖全局。如果你在项目目录下运行,检查有没有.openclaw/settings.json之类的本地配置在捣乱。
5.5 环境变量与配置文件冲突
如果环境变量里有一个旧的、失效的 Key,而配置文件里是新 Key,某些加载顺序下旧值会覆盖新值。排查时先清掉环境变量:
unset OPENCLAW_API_KEY unset OPENCLAW_BASE_URL再重启服务测试。
5.6 模型名不被支持
Key 和通道都对,但模型名写错,也可能返回鉴权类错误。确认你填的模型名在 TaoToken 通道里是可用的。可以先用模型对话页面确认可用模型:
https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=model-chat5.7 排查顺序速查表
| 现象 | 优先检查 | 动作 |
|---|---|---|
| curl 就 401 | Key 是否有效 | 重新生成 Key |
| curl 通、OpenClaw 401 | 配置文件字段名 | 核对 baseURL/apiKey |
| 改完配置仍 401 | 服务是否重启 | stop 再 start |
| 时好时坏 | 环境变量冲突 | unset 后重启 |
| 换模型后 401 | 模型名是否可用 | 在模型对话页确认 |
6. 后续接入与长期使用建议
跑通之后,如果你只是偶尔对话验证模型,直接用模型对话页面最省事:
https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=model-chat如果你要把 OpenClaw 当成长期编码助手或 Agent 底座,频繁调用、需要稳定配额,建议看 Coding Plan:
https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan接入文档里有各客户端的完整配置示例,遇到字段不确定时对照着改:
https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc如果你用的是 Claude Code 这类 Anthropic 协议客户端,配置方式略有不同,参考:
https://taotoken.net/claudecode-anthropic?utm_source=taotoken_aicg_blog_end&utm_content=claudecode最后给一个实用习惯:每次改完配置文件,先openclaw stop再openclaw start,然后openclaw logs --tail 50看一眼实际请求的 URL 和状态码。这一步能省掉大量「明明改了却没生效」的困惑。Key 轮换时,先在新 Key 上用 curl 验证通过,再替换配置文件,避免服务中断。