本文记录了在 Docker 环境下运行的 OpenClaw 中,正确安装并使用 ClawHub 的全过程,并解释了常见权限问题、配置误区,以及自定义 Skill 与 ClawHub Skill 的正确安装方式。
适用场景:
- OpenClaw 通过 Docker / Docker Compose 运行
- 容器内用户为
node(非 root) - 希望使用 ClawHub 管理 Skills
一、ClawHub 是什么?和 OpenClaw 的关系
在 OpenClaw 体系中,三者角色不同:
| 组件 | 作用 |
|---|---|
| OpenClaw(服务) | 运行 Gateway / Agent / Provider |
| ClawHub | 技能市场与技能安装工具 |
| Skill | 实际注入模型能力的规则或工具 |
关键结论:
ClawHub 不是 OpenClaw 的一部分
不需要、也不应该“把 ClawHub 安装进 OpenClaw”
只需要用 ClawHub 把 Skill 安装到 OpenClaw 会扫描的目录
二、进入 OpenClaw 运行容器
首先确认 OpenClaw 正在运行:
docker ps
找到 gateway 容器名,例如:
openclaw-openclaw-gateway-1
进入容器:
docker exec -it openclaw-openclaw-gateway-1 /bin/bash
进入后提示符通常为:
node@<container-id>:/app$
三、为什么 npm i -g clawhub 会失败?
直接执行:
npm i -g clawhub
通常会报错:
EACCES: permission denied, mkdir '/usr/local/lib/node_modules'
原因很简单:
- Docker 镜像中默认用户是
node node用户没有权限写/usr/local/lib- 全局 npm 安装会失败
这不是配置错误,而是容器安全设计
四、推荐方案:用户级全局安装 ClawHub(方案 2)
这是最稳定、最推荐的方式。
1️⃣ 配置 npm 的用户级全局目录
在容器中执行:
mkdir -p /home/node/.npm-global
npm config set prefix /home/node/.npm-global
将该目录加入 PATH:
echo 'export PATH=/home/node/.npm-global/bin:$PATH' >> /home/node/.bashrc
source /home/node/.bashrc
2️⃣ 安装 ClawHub
npm i -g clawhub
验证安装成功:
clawhub --help
如果能看到帮助信息,说明安装完成。
五、配置 ClawHub 的工作目录(非常重要)
OpenClaw 默认扫描的技能目录是:
/home/node/.openclaw/skills
因此需要告诉 ClawHub:
把技能安装到这里
export CLAWHUB_WORKDIR=/home/node/.openclaw
(可以写进 .bashrc 以便长期使用)
六、使用 ClawHub 安装技能
1️⃣ 搜索技能
clawhub search pdf
clawhub search ocr
clawhub search classify
2️⃣ 安装技能
假设技能 slug 为 <skill-slug>:
clawhub install <skill-slug>
安装完成后,技能会出现在:
/home/node/.openclaw/skills/<skill-slug>/SKILL.md
3️⃣ 重启 OpenClaw Gateway(推荐)
docker restart openclaw-openclaw-gateway-1
七、自定义 Skill 是否也用 ClawHub?
不需要。
自定义 Skill 的正确做法是:
/home/node/.openclaw/skills/
└── your-skill-name/
└── SKILL.md
只要目录结构正确,OpenClaw 会自动识别。
ClawHub 只用于:
- 下载社区技能
- 更新已有技能
- 管理 skill registry
八、如何确认 Skill 已生效?
这版 OpenClaw 不会在日志中逐条打印 Skill 加载信息。
正确判断方式是:
- 在 Web / Telegram / Chat UI 中使用 Skill
- 观察模型是否严格遵循
SKILL.md中的输出约束
例如:
- 强制 JSON 输出
- 固定字段结构
- 不再自由发挥
只要行为发生变化,就说明 Skill 已被注入。
九、常见误区总结
| 错误做法 | 结果 |
|---|---|
在容器里 npm i -g clawhub | EACCES 权限错误 |
配置 skillsDir | OpenClaw 报 Unknown key |
Skill 放在 /app 或项目根目录 | 不会被加载 |
用旧式 skill.json + index.js | 当前版本不识别 |
十、结语
在当前版本的 OpenClaw 中:
- Skill 是规则,不是插件
- ClawHub 是安装器,不是运行时
- 正确的目录结构比任何 CLI 都重要
一旦理解这一点,Skill 管理就会变得非常干净、可控。