Skills 与工具
OpenClaw 的工具系统分为两层:底层的 Tools(内置能力)和上层的 Skills(可组合的能力包)。
内置工具一览
| 工具 | 能力 |
|---|---|
| exec | Shell 命令执行,支持沙箱、PTY、自动后台 |
| process | 后台进程管理(list/poll/write/kill) |
| browser | Chrome/Chromium 浏览器控制(截图、操作、导航) |
| canvas | Node Canvas(渲染、eval、截屏、A2UI) |
| web_search | 网络搜索(Perplexity/Brave/Gemini/Grok/Kimi) |
| web_fetch | URL 内容抓取(HTML 转 Markdown/文本) |
| message | 跨渠道消息发送、搜索、Pin、Reaction |
| cron | 定时任务管理 |
| nodes | 设备管理(通知、摄像头、屏幕、定位) |
| image / pdf | 图片与 PDF 分析 |
| sessions_* | 会话检查与子 Agent 生成 |
工具 Profile
通过 Profile 快速控制工具集合的开放范围:
minimal— 仅基础读写coding— 编程相关工具messaging— 消息收发相关full— 全部工具
也可以用 tools.allow / tools.deny 做精细控制, 或按工具组(如 group:runtime、group:fs)批量开关。
命令执行与安全
exec 工具是 Agent 执行 Shell 命令的入口。默认在 Workspace 目录下执行。
host: "sandbox"— 在 Docker 沙箱中执行host: "gateway"— 在 Gateway 所在主机执行host: "node"— 在配对的移动设备上执行elevated: true— 需要人工审批的高危操作
长时间运行的命令会通过 yieldMs 自动转入后台,避免阻塞 Agent 响应。
Skill 系统
Skill 是可复用的能力包,本质是一个包含 SKILL.md 的文件夹。SKILL.md 使用 YAML Frontmatter 定义元数据和触发条件。
---
name: translator
description: 翻译文本到指定语言
metadata:
openclaw:
requires:
env: [DEEPL_API_KEY]
---
## 指令
当用户要求翻译时,调用 DeepL API 完成翻译...加载优先级
Skill 按以下顺序加载,同名时前者覆盖后者:
- Workspace 目录:
<workspace>/skills/ - 托管目录:
~/.openclaw/skills/ - 内置 Skill
门控条件
Skill 可通过 requires 声明加载前提:
requires.bins— 要求所有指定的二进制存在requires.anyBins— 要求至少一个存在requires.env— 要求环境变量已设置requires.config— 要求特定配置已存在os— 限制操作系统
ClawHub 社区
ClawHub 是 OpenClaw 的公开 Skill 仓库:
# 安装社区 Skill
clawhub install <slug>
# 更新所有已安装的 Skill
clawhub update --all
# 查看已安装的 Skill
openclaw skills list按模型限制工具
可以为不同模型供应商设置独立的工具策略:
{
tools: {
byProvider: {
"ollama/*": {
allow: ["web_search", "web_fetch"],
deny: ["exec", "browser"]
}
}
}
}这在使用能力较弱的本地模型时特别有用,可以防止模型误用高危工具。
最佳实践
- 遵循最小权限原则:只开放 Agent 实际需要的工具
- 不可信输入场景(如公开群聊)建议启用沙箱并收紧 tools.deny
- 自定义 Skill 放在 Workspace 的
skills/目录,方便版本管理 - 每个 Skill 在系统提示中约占 ~97 字符 + 字段长度的 Token