1. 为什么你的 OpenClaw 装完像块砖:Skills 才是灵魂
很多人装完 OpenClaw,跑通第一条指令之后就陷入沉默——它能听懂话,能拆任务,但真让它干点具体活儿,比如查个天气、读个本地文件、调个接口,它就开始打太极。这不是 OpenClaw 不行,而是你还没给它装“应用”。
OpenClaw 本体更像一个操作系统内核:负责任务理解、上下文管理、工具调度。它本身内置的能力非常克制,真正让它从“能聊天”变成“能干活”的,是 Skills。你可以把 Skills 理解成 OpenClaw 的 App Store 应用——每一个 Skill 聚焦一个明确的功能边界,装上就能用,禁用就下线,互不干扰。
这篇内容面向已经装好 Node.js、跑通过 OpenClaw 基础对话的开发者,带你走完一条完整链路:从 ClawHub 找到 Skill、用命令行拉取安装、配置 MCP 通道、最后发一次真实请求验证调用链是否打通。全程可复制,不跳步。
核心检索词先摆出来:OpenClaw Skills 是什么、ClawHub 怎么用、MCP 配置怎么写、Node.js 环境下如何跑通第一个自定义 Skill。如果你正卡在“装完不知道下一步干嘛”的阶段,这篇就是给你写的。
我试过在本地把 Skill 从拉取到调用完整跑了一遍,中间踩了几个配置坑,后面会逐个拆开讲。你不需要自己从零写 Skill,ClawHub 上现成的轮子足够多,关键是知道怎么把它们接进你的 OpenClaw 实例。
2. 前置准备:Node.js 环境、ClawHub 账号与 MCP 通道认知
在动手之前,先把三件事确认清楚,否则后面报错会很难定位。
第一,Node.js 版本。OpenClaw 的 Skill 运行时依赖 Node.js 18 以上,推荐 20 LTS。你可以在终端执行:
node -v npm -v如果版本低于 18,先去 Node.js 官网装 LTS 版本。别用系统自带的旧版本,很多 Skill 的依赖会直接报engine不匹配。
第二,ClawHub 的定位。ClawHub 是 OpenClaw 社区的 Skills 仓库,目前收录了 3000+ Skills,覆盖天气查询、日历管理、网页自动化、代码分析、图像生成、数据库操作等场景。你可以把它当成 OpenClaw 的“应用商店”,但它不是唯一来源——GitHub 上的 awesome-openclaw-skills 精选列表、社区分享的个人仓库同样值得关注。ClawHub 的优势在于标准化:每个 Skill 都有统一的 manifest 描述文件,安装和启用流程一致。
第三,MCP 通道是什么。MCP 全称 Model Context Protocol,是 OpenClaw 与外部服务、工具之间通信的开放标准。你可以把它理解成“插槽协议”:Skill 通过 MCP 声明自己需要哪些能力、暴露哪些接口,OpenClaw 通过 MCP 把任务路由到对应的 Skill。配置 MCP 的本质,就是告诉 OpenClaw:“这个 Skill 在哪儿、怎么调、用什么参数”。
这里有一个关键认知:Skill 安装 ≠ Skill 可用。安装只是把文件拉到本地,真正让它生效的是 MCP 配置。很多人装完 Skill 发现没反应,90% 是 MCP 通道没配对。
另外,如果你打算长期跑编码类或 Agent 类任务,建议提前了解 TaoToken 的 Coding Plan,它提供稳定的模型调用通道,配合 OpenClaw 的 Skill 调度会更顺。API 地址是 https://taotoken.net/api,模型对话入口在 https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=,API Keys 管理在 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=。这些后面配置 MCP 时会用到。
3. 可复制配置:从 ClawHub 拉取 Skill 并写入 MCP 配置片段
这一节是全文的核心操作区,每一步都给完整命令和配置文件片段,你直接复制改路径就能用。
3.1 用命令行从 ClawHub 拉取 Skill
OpenClaw 提供了 CLI 工具来管理 Skill。假设你已经全局安装了 openclaw:
npm install -g openclaw openclaw --version确认版本后,搜索你需要的 Skill。比如我想找一个“本地文件读取”的 Skill:
openclaw skill search file-reader输出会列出 ClawHub 上匹配的 Skill 名称、作者、下载量和简短描述。选定后拉取:
openclaw skill install @clawhub/file-reader安装完成后,Skill 文件会落在~/.openclaw/skills/file-reader/目录下。你可以进去看一眼结构:
ls ~/.openclaw/skills/file-reader/ # 输出示例:manifest.json index.js package.json README.mdmanifest.json是这个 Skill 的“身份证”,里面声明了它需要哪些 MCP 能力、暴露哪些方法。打开看一眼:
{ "name": "file-reader", "version": "1.2.0", "mcp": { "transport": "stdio", "command": "node", "args": ["./index.js"], "env": { "ALLOWED_DIRS": "/Users/yourname/documents" } } }注意mcp字段——这就是你要写进 OpenClaw 主配置里的内容。
3.2 写入 MCP 配置:settings.json 片段
OpenClaw 的主配置文件通常位于~/.openclaw/settings.json。你需要把 Skill 的 MCP 声明注册进去。打开文件,找到mcpServers字段(没有就新建),写入:
{ "mcpServers": { "file-reader": { "transport": "stdio", "command": "node", "args": ["/Users/yourname/.openclaw/skills/file-reader/index.js"], "env": { "ALLOWED_DIRS": "/Users/yourname/documents", "TAOTOKEN_API_KEY": "sk-your-key-here", "TAOTOKEN_BASE_URL": "https://taotoken.net/api" } } } }三个关键点:command必须是绝对路径,否则 OpenClaw 启动时找不到入口;env里的ALLOWED_DIRS是 Skill 自己的安全限制,不同 Skill 字段不同,以 manifest 为准;如果你这个 Skill 需要调用模型能力,把 TaoToken 的 API Key 和 Base URL 写进 env,这样 Skill 内部请求会走统一通道。
如果你用的是 TOML 格式的配置(部分 OpenClaw 版本支持),等价写法:
[mcpServers.file-reader] transport = "stdio" command = "node" args = ["/Users/yourname/.openclaw/skills/file-reader/index.js"] [mcpServers.file-reader.env] ALLOWED_DIRS = "/Users/yourname/documents" TAOTOKEN_API_KEY = "sk-your-key-here" TAOTOKEN_BASE_URL = "https://taotoken.net/api"保存后,重启 OpenClaw 服务:
openclaw restart或者如果你是用 systemd 管理的:
systemctl --user restart openclaw3.3 验证 Skill 是否被识别
重启后,执行:
openclaw skill list输出里应该能看到file-reader状态为active。如果显示inactive或error,先去看日志:
openclaw logs --tail 50常见问题是路径写错或 Node.js 版本不匹配,日志里会直接告诉你。
4. 验证请求:发一次端到端调用确认链路打通
配置写完不算完,必须发一次真实请求,确认从 OpenClaw 到 Skill 再到返回结果的整条链路是通的。
4.1 用 CLI 直接触发 Skill
OpenClaw 支持直接调用某个 Skill 的方法进行测试:
openclaw skill invoke file-reader read --path /Users/yourname/documents/test.txt如果文件存在且权限正确,你会看到类似输出:
{ "status": "success", "content": "这是 test.txt 的内容...", "skill": "file-reader", "duration_ms": 45 }status: success就说明 MCP 通道打通了。如果返回error,看下一节的排查清单。
4.2 通过自然语言指令触发
更贴近真实使用场景的方式,是直接对 OpenClaw 说话:
openclaw chat "帮我读一下 documents 目录下的 test.txt"OpenClaw 会解析意图,匹配到file-readerSkill,然后通过 MCP 调用它。你会在对话流里看到工具调用记录:
[Tool Call] file-reader.read({"path": "/Users/yourname/documents/test.txt"}) [Tool Result] success, 45ms这一步成功,说明 Skill 已经真正融入 OpenClaw 的任务调度体系,不再是孤立文件。
4.3 验证模型通道是否正常
如果你的 Skill 内部需要调用模型(比如做摘要、翻译),确认 TaoToken 通道正常:
curl -X POST https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer sk-your-key-here" \ -H "Content-Type: application/json" \ -d '{"model": "claude-3-5-sonnet", "messages": [{"role": "user", "content": "ping"}]}'返回正常 JSON 就说明模型通道没问题。如果这里报 401,先去 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 检查 Key 是否有效。
5. 本篇常见错排查:401、local proxy failed、reading choices、OAuth
这一节按真实报错来,你遇到哪个直接对号入座。
报错一:401 Unauthorized
Error: 401 Unauthorized - invalid api key原因:TaoToken API Key 没写对,或者写进了错误的环境变量。检查settings.json里TAOTOKEN_API_KEY的值,确认没有多余空格,确认 Key 没有过期。如果你用的是 Coding Plan 的 Key,确认它和 API Keys 页面生成的是同一个。
报错二:local proxy failed
Error: local proxy failed - connection refused原因:MCP 的command路径不对,或者 Node.js 不在系统 PATH 里。先手动执行一遍:
node /Users/yourname/.openclaw/skills/file-reader/index.js如果手动跑也报错,说明 Skill 本身有问题,去看它的 README 或提 issue。如果手动跑正常但 OpenClaw 报错,把command改成 Node.js 的绝对路径:
which node # 输出:/usr/local/bin/node然后把配置里的"command": "node"改成"command": "/usr/local/bin/node"。
报错三:reading 'choices' of undefined
TypeError: Cannot read properties of undefined (reading 'choices')原因:模型返回体结构不对,通常是 Base URL 写错或模型名不存在。检查TAOTOKEN_BASE_URL是否为https://taotoken.net/api,检查请求里的model字段是否是 TaoToken 支持的模型 ID。你可以先去 https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 确认可用模型列表。
报错四:OAuth token expired
Error: OAuth token expired - please re-authenticate原因:部分 Skill 需要 OAuth 授权(比如访问 Google Calendar、Notion 等)。重新执行授权命令:
openclaw skill auth file-reader按提示在浏览器完成授权,token 会写回本地。如果反复过期,检查系统时间是否准确。
报错五:Skill not found after install
Error: skill 'file-reader' not found in registry原因:安装路径和 OpenClaw 扫描路径不一致。确认~/.openclaw/skills/下有对应目录,确认settings.json里mcpServers的 key 和 Skill 名称一致。改完重启。
6. 下一步:把 Skill 接进你的真实工作流
跑通第一个 Skill 之后,真正的价值在于组合。你可以同时启用多个 Skill,让 OpenClaw 根据任务自动路由。比如装一个web-fetch做网页抓取,装一个code-analyzer做代码审查,再装一个notifier做结果推送,三个 Skill 串起来就是一条自动化流水线。
ClawHub 上现成的 Skill 足够你折腾很久,但如果你有企业内部系统需要对接,用 Node.js 写自定义 Skill 也不复杂——照着manifest.json的结构声明 MCP 通道,实现index.js里的方法,注册进settings.json就能用。
长期跑编码类或 Agent 类任务的话,建议把模型通道固定到 TaoToken 的 Coding Plan,避免频繁切换 Key 带来的配置漂移。接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=,里面有完整的 MCP 配置示例和排错指南。
最后留一个实用习惯:每次装完新 Skill,先跑openclaw skill invoke做单点验证,再跑自然语言指令做链路验证。两步都过,再放进生产工作流。这样出问题的时候,你能立刻定位是 Skill 本身的问题还是 MCP 配置的问题。