
npm install -g openclaw刚在普通用户下执行终端先给了一行EACCES: permission denied, mkdir /usr/lib/node_modules。把 npm 全局目录挪到~/.npm-global后OpenClaw 能安装、能启动模型接口却继续回 401。这个 401 不是安装权限的续集而是 Base URL 填错。把 OpenClaw 的模型通道指到 TaoTokenBase URL 用https://taotoken.net/apiKey 去 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 创建401 才会消失。下面按排障顺序走一遍先修 EACCES再分清官网和接口地址最后把 OpenClaw 的 Base URL、YOUR_API_KEY、模型 ID 填对。1. OpenClaw 的 EACCES 先别急着 sudo1.1 报错复现/usr/lib/node_modules 为什么归 root当你在普通用户下敲npm install -g openclawnpm 会尝试把包装到全局目录。多数 Linux 发行版和部分 macOS 上全局目录是/usr/lib/node_modules或/usr/local/lib/node_modules这两个位置默认归 root。普通用户没有写权限npm 在创建openclaw目录时就会抛出EACCES: permission denied, mkdir /usr/lib/node_modules。这个报错和 OpenClaw 的代码无关甚至和你有没有配模型 Key 无关它只是文件系统权限在拦路。可以先确认一下当前 npm 全局目录到底在哪npm config get prefix如果输出是/usr、/usr/local这类系统目录基本就能对上 EACCES 的现场。再去看目录归属ls -ld $(npm config get prefix)/lib/node_modules返回结果里 owner 是root而当前登录用户不是 rootnpm 又没有权限写进去所以安装直接失败。此时不要条件反射地加sudo因为用sudo npm install -g openclaw虽然能装进去但后续 OpenClaw 产生的缓存、插件目录、更新文件很可能又被 root 持有普通用户下次启动还是可能遇到权限问题。1.2 判断是全局目录权限不是 OpenClaw 本身EACCES 的一个典型特征是报错发生在 npm 创建目录、写文件、做软链的阶段而不是 OpenClaw 启动后连模型接口的阶段。你可以把问题拆成两层第一层是“OpenClaw 能不能被安装到磁盘上”第二层是“OpenClaw 启动后能不能连上模型通道”。第一层由 npm 全局目录权限决定第二层才轮到 Base URL、API Key、模型 ID 这些配置。如果openclaw --version都还没法执行就别急着去改模型配置。先把安装权限修好让openclaw命令能被当前用户正常调用。否则你会在终端里同时看到安装报错和一堆配置猜测排查范围反而扩大。这里有一个很实用的判断运行which openclaw如果返回为空说明命令根本没进 PATH如果返回~/.npm-global/bin/openclaw说明安装位置已经是当前用户可写的目录接下来才适合去处理 401。2. 把 npm 全局目录挪到 ~/.npm-global 再装 OpenClaw2.1 建目录、改 npm prefix、补 PATH原文方案一的核心思路是不动系统目录而是把 npm 全局目录改到用户主目录下。这样普通用户既能安装全局包又不会污染系统目录。先建一个专门放全局包的目录mkdir -p ~/.npm-global然后让 npm 以后把全局包装到这里npm config set prefix ~/.npm-global这一步只是改了 npm 的 prefix还需要把~/.npm-global/bin加入 PATH否则安装完openclaw也敲不出来。当前 shell 临时生效可以这样export PATH$HOME/.npm-global/bin:$PATH如果希望每次打开终端都生效就写进对应的 shell 配置文件。用 Bash 的写~/.bashrc用 Zsh 的写~/.zshrcecho export PATH$HOME/.npm-global/bin:$PATH ~/.zshrc source ~/.zshrc如果你用的是 Bash把上面的~/.zshrc换成~/.bashrc即可。这里不要漏掉source否则当前终端还是旧 PATH安装完仍然会提示openclaw: command not found。2.2 验证 openclaw 命令已经可用配置完 prefix 和 PATH 后先确认 npm 已经认到新目录npm config get prefix预期输出应该是/home/你的用户名/.npm-global而不是/usr或/usr/local。接着重新安装 OpenClawnpm install -g openclaw这次安装过程不应该再出现mkdir /usr/lib/node_modules的 EACCES。装完后检查命令位置和版本which openclaw openclaw --versionwhich openclaw应该指向~/.npm-global/bin/openclaw。如果openclaw --version能正常输出版本号说明安装权限这层已经修好。到这里EACCES 就算告一段落。接下来 OpenClaw 启动后如果报 401那是另一条战线和/usr/lib/node_modules的归属没有关系。3. OpenClaw 启动后的 401Base URL 不是官网地址3.1 401 的常见来源官网地址、/v1、Key 混用OpenClaw 装好之后很多人会在模型配置里填 Base URL。最容易踩的坑有三个第一把https://taotoken.net/这类官网落地页地址直接填进 Base URL第二在 Base URL 后面多加一个/v1写成https://taotoken.net/api/v1第三Key 用了别家平台的或者复制时带了空格和换行。前两个都会让 OpenClaw 请求打到错误端点服务端无法按预期识别认证信息于是返回 401。这里要分清两个地址的用途。官网地址是给人打开、注册、创建 Key、看模型广场、看用量用的接口 Base URL 是填进 OpenClaw 这种工具里的。填进 OpenClaw 的正确 Base URL 是https://taotoken.net/api末尾不要加/v1也不要加任何 UTM 参数。官网链接可以带 UTM接口地址不要带。你可以把 Base URL 理解成“OpenClaw 把请求发到哪个门”而 API Key 是“进这个门要出示的凭证”。门牌填错凭证再对也会被挡回来门牌填对凭证是旧的或者空的同样会 401。3.2 去 TaoToken 创建 Key认清官网和接口地址打开 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 注册并登录在控制台里创建 API Key。Key 只显示一次或只在创建时可见复制后先放到一个临时文本里后面会填进 OpenClaw。文章里统一用YOUR_API_KEY做占位符你实际要换成刚创建的那串 Key。创建入口就在 TaoToken 控制台如果只是测试也可以先去模型对话页发一条消息确认这把 Key 本身能用。模型 ID 不要凭记忆写也不要把网上看到的日期后缀直接拼上去。每个平台可用模型不同以 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 里的模型广场当时列表为准。你在 OpenClaw 里填的模型 ID应该和模型广场显示的一致。Base URL 则固定填https://taotoken.net/api。这两者一个决定“发到哪个通道”一个决定“通道里用哪个模型”不要混着抄。4. 在 OpenClaw 里填 TaoToken 的 Base URL、YOUR_API_KEY 和模型 ID4.1 配置界面字段对照不同版本的 OpenClaw 可能把模型配置放在设置页、Provider 表单或者本地配置文件里。字段名可能略有差异但核心就三个Base URL、API Key、Model ID。如果界面里让你选 Provider选自定义或 OpenAI Compatible 这一类即可。下面这张表可以直接对照字段填什么说明Provider自定义 / OpenAI Compatible不同版本名称可能不同Base URLhttps://taotoken.net/api末尾不要加/v1不要带 UTMAPI KeyYOUR_API_KEY从 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 创建Model ID以模型广场为准去 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 模型广场复制重点再重复一次Base URL 不是https://taotoken.net/也不是https://taotoken.net/api/v1而是https://taotoken.net/api。很多人修完 EACCES 之后太兴奋直接把浏览器地址栏里的官网地址粘进 Base URL结果 OpenClaw 请求打到网页端点返回 401 或类似认证错误然后又回头怀疑安装权限没修干净。其实安装权限和模型通道是两码事。4.2 ~/.openclaw/config.json 可复制示例如果 OpenClaw 当前版本读本地配置文件可以先在用户目录下找到或创建~/.openclaw/config.json。下面是一个最小示例字段名请以你本地版本实际支持为准但 Base URL 和 Key 的写法不要改{ provider: openai-compatible, baseUrl: https://taotoken.net/api, apiKey: YOUR_API_KEY, model: YOUR_MODEL_ID }保存后重启 OpenClaw让新配置生效。如果你的 OpenClaw 版本支持环境变量覆盖也可以临时用环境变量测试export OPENAI_BASE_URLhttps://taotoken.net/api export OPENAI_API_KEYYOUR_API_KEY export OPENAI_MODELYOUR_MODEL_ID openclaw环境变量和配置文件同时存在时通常环境变量优先级更高。如果你之前为了测试填过别家 Key记得在当前终端unset OPENAI_API_KEY或重新开一个干净终端避免旧 Key 覆盖新配置。模型 ID 占位符YOUR_MODEL_ID要换成模型广场里真实存在的 ID不要自己编一个带日期后缀的名字。5. 验证 OpenClaw 模型接口并定位残留 4015.1 一条测试消息和回显配置保存后不要直接开一个大重构任务去试。先在 OpenClaw 的聊天窗口里发一条最短消息比如ping或回复 pong。如果配置正确OpenClaw 应该能返回模型回复。这个测试的目的不是看模型多聪明而是确认三件事Base URL 真的指向https://taotoken.net/apiAPI Key 真的被 OpenClaw 读到了Model ID 真的在模型广场列表里。如果返回 401先别改代码按顺序检查配置。第一步看 Base URL 有没有被自动补成https://taotoken.net/api/v1。第二步看 API Key 是不是YOUR_API_KEY没替换或者复制时首尾多了空格。第三步看 Model ID 是不是从模型广场复制来的。第四步看环境变量里有没有旧 Key。第五步重启 OpenClaw有些界面改完配置不会热加载。5.2 401 还在时按顺序排查401 的核心含义是“认证没过”不是“网络没通”。所以不要一上来就去查 EACCES 那套 npm 权限也不需要重新建~/.npm-global。EACCES 是文件系统权限问题TaoToken 只负责模型通道不要把两者混为一谈。安装阶段看的是目录 owner 和 npm prefix模型阶段看的是 Base URL、Key、模型 ID。可以把排查顺序固定下来先看 Base URL 是否是https://taotoken.net/api不是官网地址不是/api/v1。再看 Key 是否从 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 创建并完整替换了YOUR_API_KEY。然后看模型 ID 是否来自模型广场不要用自己拼的 ID。接着看环境变量是否覆盖了配置文件尤其是OPENAI_API_KEY。最后重启 OpenClaw再发一条测试消息。如果这几步都正确401 通常会消失。若还是不行把 OpenClaw 里 Provider 类型改成自定义或 OpenAI Compatible再重新保存一次。不要在同一份配置里混用 Anthropic、OpenAI、别家通道的变量名OpenClaw 认哪个入口就填哪个入口Base URL 始终是https://taotoken.net/api。6. 跑通后去控制台对一下这次 OpenClaw 调用6.1 看用量和换模型OpenClaw 能返回第一条回复后建议回到 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 控制台看一眼用量和调用记录。如果记录里能看到刚才的测试调用说明 OpenClaw 的 Base URL 和 Key 都已经生效。换模型时不用改 Base URL只需要去模型广场复制新的模型 ID替换 OpenClaw 配置里的YOUR_MODEL_ID保存后重启即可。如果你在多个工具里共用同一把 Key建议按工具建不同的 Key比如 OpenClaw 一把、Claude Code 一把、临时测试一把。这样某个工具误填地址导致 401 时你能快速判断是哪份配置的问题而不是把所有工具一起停掉。Key 的管理和新建都在控制台里完成模型 ID 和 Base URL 的对应关系也以控制台和模型广场当时显示为准。6.2 长期写代码和下一次创建 KeyOpenClaw 配通之后下一步可以拿同一把 Key 去 TaoToken 模型对话 发一条测试消息确认模型 ID 和通道对得上。如果要长期在 OpenClaw 里写代码打开 Coding Plan 看套餐是否够用Key 不够或想按工具拆分就在 控制台 API Keys 再建一把。回看这次排障EACCES 靠~/.npm-global和 PATH 修401 靠https://taotoken.net/api和正确的 YOUR_API_KEY 修两件事别混在一起查。改完保存在 OpenClaw 里再发一条ping然后去控制台确认这次调用已经记上账。