🦞OpenClaw ClawBook

Skills 与工具

OpenClaw 的工具系统分为两层:底层的 Tools(内置能力)和上层的 Skills(可组合的能力包)。

内置工具一览

工具能力
execShell 命令执行,支持沙箱、PTY、自动后台
process后台进程管理(list/poll/write/kill)
browserChrome/Chromium 浏览器控制(截图、操作、导航)
canvasNode Canvas(渲染、eval、截屏、A2UI)
web_search网络搜索(Perplexity/Brave/Gemini/Grok/Kimi)
web_fetchURL 内容抓取(HTML 转 Markdown/文本)
message跨渠道消息发送、搜索、Pin、Reaction
cron定时任务管理
nodes设备管理(通知、摄像头、屏幕、定位)
image / pdf图片与 PDF 分析
sessions_*会话检查与子 Agent 生成

工具 Profile

通过 Profile 快速控制工具集合的开放范围:

  • minimal — 仅基础读写
  • coding — 编程相关工具
  • messaging — 消息收发相关
  • full — 全部工具

也可以用 tools.allow / tools.deny 做精细控制, 或按工具组(如 group:runtimegroup: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 按以下顺序加载,同名时前者覆盖后者:

  1. Workspace 目录:<workspace>/skills/
  2. 托管目录:~/.openclaw/skills/
  3. 内置 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