乐于分享
好东西不私藏

Openclaw学习笔记(4) 技能SKills

Openclaw学习笔记(4) 技能SKills

OpenClaw 采用与 AgentSkills 兼容的技能文件夹,用于指导智能体如何使用工具。每一项技能均对应一个目录,其中包含一个附带 YAML 格式和操作说明的 `SKILL.md` 文件。OpenClaw 会加载内置的预装技能以及可选的本地覆盖配置,并在加载阶段根据运行环境、配置设置以及相关二元文件的存在情况对这些技能进行筛选。

位置与优先级

OpenClaw 从以下来源加载技能:

  1. 额外技能文件夹:通过 `skills.load.extraDirs` 进行配置

  2. 预装技能:随安装包一同分发(npm 包或 OpenClaw.app)

  3. 托管/本地技能:`~/.openclaw/skills`

  4. 个人代理技能:`~/.agents/skills`

  5. 项目代理技能:`<workspace>/.agents/skills`

  6. 工作区技能:`<workspace>/skills`

如果技能名称发生冲突,其优先级顺序如下:

`<workspace>/skills`(最高) → `<workspace>/.agents/skills` → `~/.agents/skills` → `~/.openclaw/skills` → 预装技能 → `skills.load.extraDirs`(最低)

独立代理技能与共享技能

在多代理配置中,每个代理都拥有其独立的“工作空间”(workspace)。这意味着:

  • 独立代理技能位于 `<workspace>/skills` 目录下,仅供该特定代理使用。

  • 项目代理技能位于 `<workspace>/.agents/skills` 目录下,其优先级高于常规的 `<workspace>/skills` 目录,适用于该工作空间内的所有代理。

  • 个人代理技能位于 `~/.agents/skills` 目录下,适用于该机器上的所有工作空间。

  • 共享技能位于 `~/.openclaw/skills` 目录下(包含托管及本地技能),对同一机器上的所有代理均可见。

  • 如果您希望让多个代理共用一套技能包,也可以通过 `skills.load.extraDirs` 配置项来添加共享目录(其优先级最低)。

如果同一技能名称出现在多个位置,将遵循标准的优先级规则:工作空间级技能优先级最高,其次是项目代理技能、个人代理技能、托管/本地技能、预装(bundled)技能,最后是额外目录(extra dirs)中的技能。

创建技能

1、创建技能目录:在workspace/skills里面创建技能目录如"hello-world"

2. 编写SKILL.md

在该目录下创建 SKILL.md 文件。其中的 Frontmatter 用于定义元数据,Markdown 正文则包含针对代理的指令。

---name: hello_worlddescription: A simple skill that says hello.---# Hello World SkillWhen the user asks for a greeting, use the `echo` tool to say"Hello from your custom skill!".

3.添加工具(可选)

您可以在 Frontmatter 中定义自定义工具模式,或者指示代理使用现有的系统工具(例如 `exec` 或 `browser`)。此外,技能也可以随同其所描述的工具一同打包在插件中。

4. 加载技能:启动一个新的会话,以便 OpenClaw 能够识别该技能:

# 从聊天窗口/new或重启网关openclaw gateway restart

验证已加载的技能:

openclaw skills list

5.测试一下:发送一条应能触发该技能的消息:

技能元数据参考

YAML Frontmatter 支持以下字段:

字段

必填
描述
name

唯一标识符(snake_case 格式)

description

向代理显示的单行描述

metadata.openclaw.os

操作系统过滤器(如 ["darwin"]、["linux"] 等)

metadata.openclaw.requires.bins

PATH 环境变量中所需的二进制文件

metadata.openclaw.requires.config

所需的配置键