1. 树莓派上跑 OpenClaw,Tools 与 Skills 到底怎么配才不踩坑
OpenClaw 是一个开源 AI Agent 平台,简单说就是让对话直接变成电脑上的真实操作:读写文件、执行命令、查 GitHub、定时推送简报。它和只能聊天的助手最大的区别在于,OpenClaw 有一套 Tools(工具)和 Skills(技能)体系,Tools 决定它“能不能”做某件事,Skills 决定它“怎么组合 Tools”完成任务。这套东西在 Linux 和树莓派上跑起来特别有意思,因为树莓派本身就是一台低功耗常开的边缘设备,很适合挂一个 24 小时在线的 Agent。
但问题也来了:很多人照着教程装完 OpenClaw,发现 Skills 列表里一堆 Missing,或者 Tools 开了却调不动。我自己在树莓派 4B(8GB)和一台 Ubuntu 22.04 的 x86 小主机上都部署过,踩过的坑主要集中在三块:Tools 的权限分层没搞清、Skills 的依赖没装全、以及配置文件的字段写错导致整个 Agent 起不来。这篇就按“从零到验证闭环”的顺序,把可复制的配置和命令都给你,重点放在 Tools 与 Skills 的配置实践上,而不是泛泛介绍。
适合谁看:想在 Linux 或树莓派上搭一套本地 AI 工具链的开发者,手上有树莓派 4B/5 或者任意 Debian/Ubuntu 机器,愿意用命令行,想搞清楚 OpenClaw 的 Tools 和 Skills 到底怎么配、怎么验证、报错怎么查。全文的命令和配置都可以直接复制,路径和字段名保持和官方一致。
先说结论性的认知:装 Skill 不会自动给你新权限,真正控制能力的是配置里的tools.allow。一个 Skill 要能用,必须同时满足三件事——授权(比如 GitHub 是否已授权)、安装(系统上有没有装它依赖的 CLI,比如gh、himalaya)、设定(配置里有没有允许相关 Tool,比如exec、read、write)。这三条缺一条,Skill 就会显示 Missing。理解这一点,后面所有配置都不会迷路。
2. 前置准备:在 Linux 与树莓派上装好 OpenClaw 并拿到模型 Key
这一节解决“环境从哪来”的问题。树莓派和普通 Linux 的安装流程基本一致,区别主要在架构(arm64 vs x86_64)和系统依赖。我建议用 64 位系统,32 位在跑某些 CLI 时会有兼容问题。
先更新系统并装基础依赖。树莓派官方系统(Raspberry Pi OS 64-bit)和 Ubuntu 都适用:
sudo apt update && sudo apt upgrade -y sudo apt install -y curl git jq ripgrep tmux ffmpeg build-essential这里装的jq、rg、tmux、ffmpeg不是随便选的,后面好几个 bundled Skills 的requires.bins就点名要它们。提前装好能少一半 Missing。
接着装 OpenClaw。官方推荐用 npm 全局安装,前提是有 Node.js 18+:
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - sudo apt install -y nodejs node -v # 确认 >= 18 npm install -g openclaw openclaw --version装完后初始化配置目录。OpenClaw 的配置文件默认在~/.openclaw/openclaw.json,第一次运行会自动生成骨架:
openclaw init ls -la ~/.openclaw/你会看到openclaw.json和可能的skills/目录。接下来是模型接入。OpenClaw 需要一个 LLM 后端来驱动 Agent 的推理,这里我用 TaoToken 的兼容接口来配,因为它同时提供对话和编码类模型,配置方式就是标准的 Base URL + Key + Model ID 三件套。
先去控制台创建一个 API Key:
# 打开 https://taotoken.net/api-keys 创建 Key,然后写入环境变量 export TAOTOKEN_API_KEY="sk-你的key" echo 'export TAOTOKEN_API_KEY="sk-你的key"' >> ~/.bashrc如果你更习惯用 Claude Code 那套配置,TaoToken 也提供 Anthropic 兼容入口,文档在 https://taotoken.net/doc ,里面有 Base URL 和模型 ID 的完整列表。对 OpenClaw 来说,关键是拿到一个能用的 Base URL 和 Model ID,填进openclaw.json的llm段。这一步做完,Agent 才有“大脑”,后面的 Tools 和 Skills 才有意义。
树莓派上还要注意一点:内存小于 4GB 的机器,跑大模型本地推理会很吃力,建议直接用云端 API,把树莓派当成“执行器”而不是“推理器”。这样 Tools 和 Skills 的配置才是重点,而不是被模型加载拖垮。
3. 可复制配置:openclaw.json 里 Tools 与 Skills 的完整写法
这一节是全文的核心,给你一份可以直接改的~/.openclaw/openclaw.json。OpenClaw 的 Tools 分两层:Layer 1 是核心能力(8 个),包括read、write、edit、apply_patch、exec、process、web_search、web_fetch;Layer 2 是进阶能力(17 个),包括browser、canvas、image、memory_search、memory_get、sessions_*、message、cron、gateway、nodes等。只开 Layer 1 时,OpenClaw 相当于“能读写文件、跑命令、上网查资料的助手”。
下面这份配置是我在树莓派上实测能跑通的版本,重点开了核心 Tools,并对exec加了审批,Skills 侧只允许需要的几个:
{ "llm": { "provider": "openai-compatible", "baseUrl": "https://taotoken.net/api", "apiKey": "${TAOTOKEN_API_KEY}", "model": "gpt-4o-mini" }, "tools": { "allow": [ "read", "write", "edit", "apply_patch", "exec", "process", "web_search", "web_fetch" ], "deny": [ "browser", "canvas", "message" ] }, "approvals": { "exec": { "enabled": true, "mode": "confirm" }, "write": { "enabled": false } }, "skills": { "allow": [ "github", "healthcheck", "session-logs", "tmux", "weather" ], "autoLoad": true }, "gateway": { "enabled": true, "port": 8787 } }几个字段要解释清楚。tools.allow是白名单,没列进去的 Tool 一律不可用,这比黑名单安全。approvals.exec.mode设成confirm后,Agent 每次执行命令前都会等你确认,避免误删文件。skills.allow只放你确认依赖已装的 Skill,autoLoad让 OpenClaw 启动时自动扫描~/.openclaw/skills/下的技能。
如果你用 Cline MCP 或者 Codex 的auth.json那套体系,记住三件套必须写全:Base URL、Key、Model ID。缺任何一个都会在启动时报认证失败。TaoToken 的 Base URL 是https://taotoken.net/api,Key 从控制台拿,Model ID 按文档填。这三样在 OpenClaw 里对应llm.baseUrl、llm.apiKey、llm.model。
配置写完后校验 JSON 合法性,这一步别省:
jq . ~/.openclaw/openclaw.json > /dev/null && echo "JSON OK"如果报parse error,多半是多了逗号或者引号没配对。树莓派上用nano编辑时特别容易漏掉结尾的},建议用jq每次改完都验一遍。
4. 验证请求:从 skills list 到一次真实 Agent 调用
配置写完不代表能用,必须逐步验证。第一步看 Skills 状态:
openclaw skills list输出里每个 Skill 会标Ready或Missing。Ready表示依赖已满足,Missing表示缺东西。比如github显示 Missing,多半是没装gh:
sudo apt install -y gh gh auth login # 按提示完成 GitHub 授权 openclaw skills info githubopenclaw skills info <技能名>会列出这个 Skill 的requires.bins和env,照着提示补依赖就行。这一步是排查 Missing 的标准动作,比瞎猜快得多。
第二步验证 Tools 是否生效。启动 Gateway:
openclaw gateway start # 或者用 systemd 用户服务常驻 systemctl --user enable --now openclaw-gateway然后发一条本地对话,让它读一个文件:
echo "hello from raspberry pi" > /tmp/test.txt openclaw agent --local --agent main --message "读取 /tmp/test.txt 的内容并告诉我"如果配置正确,Agent 会调用readTool,返回文件内容。这一步成功,说明 LLM 接入、Tools 白名单、审批链路都通了。如果它说“我没有读取文件的权限”,回去检查tools.allow里有没有read。
第三步验证一个带依赖的 Skill。以weather为例:
openclaw agent --local --agent main --message "用 weather 技能查一下我所在城市的天气"weather依赖curl,前面已经装了,正常会返回天气数据。如果返回 Missing,用openclaw skills info weather看它到底要什么。
第四步验证exec审批。发一条会触发命令的请求:
openclaw agent --local --agent main --message "执行 uname -a 看看系统架构"因为approvals.exec.mode是confirm,终端会弹出确认提示,你按y才执行。这一步验证的是安全链路,确认审批真的拦得住。
整套验证下来,你应该看到:Skills 列表里目标技能是 Ready、Agent 能读文件、能调 Skill、exec 有审批。这四件事都过,闭环就算完成了。
5. 常见报错排查:401、local proxy failed、reading choices、OAuth
这一节按真实报错来对。第一个高频错误是401 Unauthorized。表现是 Agent 一启动就报认证失败,或者对话时返回 401。原因通常是llm.apiKey没读到环境变量,或者 Key 本身失效。排查:
echo $TAOTOKEN_API_KEY # 确认变量有值 openclaw config get llm.apiKey # 看配置里解析成了什么如果配置里写的是${TAOTOKEN_API_KEY}但变量为空,就会 401。解决方法是把export写进~/.bashrc并source一次,或者直接在配置里填 Key(不推荐,容易泄露)。
第二个错误是local proxy failed。这个多半出现在你给 OpenClaw 配了本地代理端口,但代理没起来,或者端口被占。检查gateway.port有没有和别的服务冲突:
ss -tlnp | grep 8787如果端口被占,改gateway.port为别的值,重启 Gateway。注意这里说的是本地服务端口冲突,和网络访问方式无关,别往那方面联想。
第三个错误是reading choices相关,通常长这样:error reading choices: unexpected end of JSON input。这是 LLM 返回体不完整或格式不对,常见于 Base URL 填错、模型 ID 不存在、或者流式响应被中途截断。排查顺序:先用curl直接打一次接口确认返回正常:
curl -s https://taotoken.net/api/chat/completions \ -H "Authorization: Bearer $TAOTOKEN_API_KEY" \ -H "Content-Type: application/json" \ -d '{"model":"gpt-4o-mini","messages":[{"role":"user","content":"hi"}]}' | jq .如果这里就报错,说明是 Key 或 Model ID 的问题,跟 OpenClaw 无关。如果这里正常但 OpenClaw 报错,检查llm.baseUrl有没有多写或少写/v1之类的路径。
第四个是 OAuth 相关,比如 GitHub Skill 授权失败:OAuth token expired或device flow failed。重新跑gh auth login,选Login with a web browser或Paste an authentication token。树莓派没有桌面环境时,用 device flow 会给你一个码,在另一台设备上打开链接输入即可。授权完再openclaw skills info github确认状态变 Ready。
还有一个树莓派特有的坑:某些 Skill 在openclaw skills list里永远 Missing,比如apple-notes、things-mac、imsg。这不是配置问题,是这些 Skill 只支持 macOS,在 Linux 上属于正常现象,直接忽略即可。判断方法就是看openclaw skills info里的系统要求。
6. 把 Tools 与 Skills 用起来:长期编码与 Agent 场景的接入建议
配置跑通之后,真正决定体验的是你怎么用它。如果你打算让 OpenClaw 长期在树莓派上做编码辅助或自动化 Agent,建议把 Gateway 做成 systemd 用户服务,开机自启:
systemctl --user enable --now openclaw-gateway loginctl enable-linger $USER # 让服务在未登录时也运行这样树莓派一通电,Agent 就在线,你可以从别的机器发消息给它。长期编码场景下,模型选择很关键,TaoToken 的 Coding Plan 提供适合 Agent 循环调用的编码模型,接入方式和前面一样,换llm.model即可,具体模型 ID 看 https://taotoken.net/coding-plan 。
安全上再强调三条:exec一定开审批,message如果只给自己发通知就限制用途,结账、对外发帖这类“收不回来”的操作永远自己来。ClawHub 上有大量第三方 Skill,安装前务必审查来源和代码,别直接autoLoad一个来路不明的技能。
最后给一个实用技巧:把常用的 Agent 调用封装成 shell 函数,省得每次敲一长串:
oc() { openclaw agent --local --agent main --message "$*"; } # 用法:oc 帮我看看 /var/log/syslog 最后 20 行有没有报错这样在树莓派上随手就能让 Agent 干活,Tools 和 Skills 的价值才真正体现出来。整套流程从安装、配置、验证到排错,你按这个顺序走一遍,基本能把 OpenClaw 在 Linux 和树莓派上的 Tools 与 Skills 配置闭环跑通。