
1. 这个报错到底卡在哪openclaw onboard --install-daemon 与 tslib.js 的关系openclaw onboard --install-daemon是 OpenClaw 初始化守护进程的入口命令它会把 CLI 本体、后台 daemon 以及一批运行时依赖一次性装好。你敲下这条命令后看到Error: Cannot find module ./internal/tslib.js说明 Node 在加载某个包时按相对路径去找internal/tslib.js这个文件结果没找到。注意关键词是「相对路径」——./internal/tslib.js不是从 node_modules 根目录找而是从报错那个包自己的目录里找。这个报错最常出现在anthropic-ai相关依赖的深层嵌套结构里。tslib 本来是 TypeScript 编译后代码的运行时辅助库正常安装时它会被放在包的internal/子目录下。一旦 npm 在安装这个深层依赖时网络中断、缓存写坏或者包本身发布时打包不完整这个文件就会缺失于是 require 直接抛错。它和 TaoToken 的关系在于TaoToken 提供统一的 Key 与 API 通道OpenClaw 通过它去调用模型能力。但依赖安装这一层和 API 通道是两回事——报错发生在本地文件系统不是网络鉴权。很多人一看到报错就以为是 Key 配错了其实方向反了。这篇就按「依赖完整性 → Node 版本 → 安装路径」三个角度把这条命令从报错到 daemon 正常启动走一遍。适合已经在用 OpenClaw、并且把模型请求接到 TaoToken 通道上的开发者。2. 先把 TaoToken 通道准备好Key 与接入信息在动依赖之前先把上层通道确认好避免修完依赖又卡在鉴权上。TaoToken 的定位是统一 Key/API 通道你只需要一个 Key就能在 OpenClaw 这类工具里对接模型能力不用为每个模型单独维护一套凭证。你需要拿到两样东西一个是 API Key一个是接入地址。Key 在控制台的 API Keys 页面创建地址用https://taotoken.net/api这个地址不加任何查询参数。创建 Key 的入口在这里控制台 API Keyshttps://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentopenclaw_tslib拿到 Key 之后先别急着写进 OpenClaw 配置用一条最简请求验证通道本身是通的。这一步能把「通道问题」和「依赖问题」彻底分开——如果这条命令都失败那后面修 tslib 也没意义。curl -sS https://taotoken.net/api/v1/models \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -H Content-Type: application/json返回里能看到模型列表就说明 Key 和通道都正常。把 Key 存成环境变量后面 OpenClaw 直接读它避免明文写进配置文件# Linux / macOS export TAOTOKEN_API_KEYsk-你的key # Windows PowerShell $env:TAOTOKEN_API_KEY sk-你的key如果你更想先在网页里确认模型能不能正常对话可以直接用模型对话页试一句比命令行更直观模型对话https://taotoken.net/model-chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentopenclaw_tslib通道确认没问题再回到openclaw onboard --install-daemon的依赖修复上。3. 可复制配置三步定位 tslib.js 缺失3.1 第一步确认报错包与文件是否真的缺失先别急着重装先定位到底是哪个包缺文件。用 Node 直接打印模块解析路径比盲猜快得多# 找到 openclaw 全局安装位置 npm root -g # 进入全局 node_modules搜索 tslib.js 的实际分布 find $(npm root -g) -name tslib.js -path *internal* 2/dev/nullWindows PowerShell 用这条npm root -g Get-ChildItem -Path (npm root -g) -Recurse -Filter tslib.js -ErrorAction SilentlyContinue | Where-Object { $_.FullName -like *internal* }如果输出为空说明internal/tslib.js确实没被装下来属于文件缺失如果输出里有路径但报错依旧那多半是 Node 版本或路径解析的问题往下看 3.2 和 3.3。3.2 第二步核对 Node 版本与包要求./internal/tslib.js这种相对路径解析对 Node 版本和包导出规则比较敏感。先看当前版本node -v npm -vOpenClaw 这类工具通常要求 Node 18 以上部分新版本依赖需要 Node 20 LTS。如果你的版本偏低用 nvm 切一个稳定版再重装比在旧版本上反复折腾省事# 安装并使用 Node 20 LTS nvm install 20 nvm use 20 node -v版本对齐后再执行一次依赖重装。这里建议先清缓存避免又下到坏文件npm cache clean --force npm install -g openclawlatest --verbose--verbose会打印每个依赖的下载与解压过程如果 tslib 相关文件在安装阶段就报错日志里能直接看到是哪个包、哪一步断的。3.3 第三步检查安装路径与残留文件如果版本没问题、缓存也清了还是报错那就是安装路径里有残留的损坏文件。npm 的uninstall有时删不干净尤其是全局目录下的旧包。手动清一遍最有效。Windows 下全局 npm 目录通常在%AppData%\npm进去删掉这几样如果存在%AppData%\npm\node_modules %AppData%\npm\openclaw %AppData%\npm\openclaw.cmdLinux / macOS 对应的是$(npm root -g)和$(npm bin -g)下的 openclaw 可执行文件。删之前把里面其他重要的全局包记一下回头一起重装。清理完再重装并强制走 HTTPS 拉取避免 SSH 方式在部分网络下中断导致文件不完整git config --global url.https://github.com/.insteadOf ssh://gitgithub.com/ npm install -g openclawlatest --verbose如果最新版依然报同样的错说明这个版本在打包上可能有问题降一个稳定版试试npm view openclaw versions --json # 先看历史版本 npm install -g openclaw上一个稳定版本号 --verbose4. 验证请求daemon 是否真的起来了依赖修好后重新跑初始化命令并加上--verbose看详细过程openclaw onboard --install-daemon --verboseWindows 上如果遇到执行策略拦截用这条绕过powershell -ExecutionPolicy Bypass -Command openclaw onboard --install-daemon --verbose命令跑完后用openclaw doctor做一次自检它会检查 daemon 状态、依赖完整性和配置项openclaw doctor自检通过后再确认 daemon 进程确实在跑# Linux / macOS ps aux | grep openclaw # Windows PowerShell Get-Process | Where-Object { $_.ProcessName -like *openclaw* }最后做一次端到端验证让 OpenClaw 通过 TaoToken 通道发一个最小请求确认模型能正常返回。这一步同时验证了「依赖修复成功」和「通道配置正确」两件事。如果你在验证模型响应时想换个更轻的方式可以直接在模型对话页发同一句 prompt 做对照模型对话https://taotoken.net/model-chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentopenclaw_tslib5. 本篇常见错排查报错依旧但文件已存在多半是 Node 版本和包的导出规则不匹配。切到 Node 20 LTS 后重装别在旧版本上反复试。重装后报权限错误Windows 下用管理员 PowerShellLinux/macOS 下检查全局目录归属必要时用sudo或改 npm 全局前缀到用户目录。npm install卡在某个包不动先npm cache clean --force再确认镜像源可用。国内环境可以临时切镜像源加速但装完建议切回官方源避免镜像同步延迟导致版本对不上。daemon 启动后立刻退出看openclaw doctor的输出通常是配置里 Key 或接入地址写错。确认用的是https://taotoken.net/api且 Key 从环境变量读取而不是硬编码。降级后仍报 tslib 缺失说明问题不在版本而在安装路径残留。回到 3.3把全局目录里的 openclaw 相关文件和 node_modules 彻底删干净再装。改了配置但 daemon 没生效daemon 通常需要重启才会重读配置。改完配置后重启 daemon再跑一次openclaw doctor确认。6. 长期跑编码与 Agent把通道固定下来如果你不只是偶尔用 OpenClaw而是长期跑编码任务或 Agent 流程建议把 TaoToken 通道固定成一套配置避免每次重装都重新配。Key 统一从环境变量读接入地址写死成https://taotoken.net/api这样依赖升级、版本回退都不会影响通道本身。需要长期跑编码和 Agent 的场景可以看下 Coding Plan它更适合把模型调用稳定接进日常开发流Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentopenclaw_tslib接入细节和参数说明都在文档里遇到配置项不确定时对照着改接入文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentopenclaw_tslib回到这条报错本身Cannot find module ./internal/tslib.js的核心就一句话本地依赖文件缺失或路径解析失败和 API 通道无关。按「确认文件缺失 → 对齐 Node 版本 → 清理安装路径」三步走基本都能修好。修完记得用openclaw doctor和一次真实请求做双重验证别只看命令没报错就以为成了。