21.2 技能结构
生成模型:Claude Opus 4.6 (anthropic/claude-opus-4-6) Token 消耗:输入 ~410k tokens,输出 ~7k tokens(本节)
上一节介绍了技能系统的整体架构。本节深入分析技能文件的具体规范——Front Matter 的每个字段意味着什么,内置技能目录的组织方式,以及几个代表性技能的设计思路。
21.2.1 SKILL.md 文件规范
文件结构
每个技能是一个目录,包含一个 SKILL.md 文件(或者技能也可以是一个单独的 .md 文件)。典型结构:
skills/
├── weather/
│ └── SKILL.md
├── github/
│ └── SKILL.md
├── discord/
│ ├── SKILL.md
│ └── (可能有辅助文件)Front Matter 字段
SKILL.md 的 YAML Front Matter 定义了技能的元数据。以 github 技能为例:
完整字段说明:
name
string
是
技能唯一标识符
description
string
是
技能描述(≤100 字符,用于命令提示)
homepage
string
否
技能主页 URL
user-invocable
boolean
否
是否可被用户通过斜杠命令调用(默认 true)
disable-model-invocation
boolean
否
是否禁止注入系统提示词(默认 false)
command-dispatch
string
否
命令调度方式(tool 表示确定性调度)
command-tool
string
否
确定性调度时调用的工具名
metadata
JSON5
否
OpenClaw 特定元数据(见下文)
OpenClaw 元数据(metadata.openclaw)
metadata 字段内嵌一个 JSON5 对象,其 openclaw 键包含 OpenClaw 特定的技能配置:
requires 是技能资格过滤的核心——它声明了技能运行所需的外部依赖。系统启动时检查这些依赖是否满足,不满足的技能自动隐藏。
安装规格(SkillInstallSpec)
install 数组定义了如何安装技能的外部依赖,支持五种安装器:
同一个技能可以提供多种安装方式。例如 github 技能同时支持 brew install gh 和 apt install gh——系统根据用户偏好和可用的包管理器选择最合适的方式。
Front Matter 解析
parseFrontmatter 从 Markdown 文件提取 YAML 头部,resolveOpenClawMetadata 从中提取 OpenClaw 元数据:
注意兼容性处理——代码尝试从多个可能的键名中读取元数据(openclaw、clawdbot、claude-code),这是 OpenClaw 从其他项目演化而来时保留的兼容层。
21.2.2 内置技能目录分析
52 个内置技能
OpenClaw 的 skills/ 目录包含 52 个内置技能。按功能领域分类:
开发与代码
github— GitHub CLI 操作(PR、Issue、CI)coding-agent— 子 Agent 编排(Codex、Claude Code、Pi)tmux— 终端复用器操作session-logs— 会话日志查看
通信与社交
discord— Discord 消息读写slack— Slack 频道操作imsg/bluebubbles— iMessage 集成himalaya— 电子邮件客户端
笔记与知识管理
obsidian— Obsidian 笔记库操作notion— Notion 页面管理bear-notes— Bear 笔记apple-notes/apple-reminders— macOS 原生应用
智能家居
openhue— Philips Hue 灯光控制sonoscli— Sonos 音响系统
AI 与模型
gemini— Google Gemini APIoracle— 高质量推理模型咨询openai-image-gen— DALL-E 图像生成openai-whisper/openai-whisper-api— 语音转文字
媒体与创作
spotify-player— Spotify 播放控制video-frames— 视频帧提取camsnap— 摄像头截图canvas— 画布绘图
实用工具
weather— 天气查询summarize— 文本摘要healthcheck— 服务健康检查model-usage— 模型使用统计blogwatcher— 博客监控
生态系统
clawhub— 技能注册中心 CLIskill-creator— 技能创作向导
技能复杂度光谱
内置技能从极简到复杂覆盖了完整光谱:
极简
weather
~55 行
单个 curl 命令,无 API Key
简单
github
~100 行
单个 CLI 工具的多命令用法
中等
discord
~200 行
需要 API Token + 多端点
复杂
coding-agent
~300 行
编排外部 Agent 进程,PTY 交互
21.2.3 代表性技能解读
weather:零依赖的简洁范例
weather 是最简单的技能之一——它展示了"技能即文档"的纯粹形态:
唯一的依赖是 curl(几乎所有类 Unix 系统都有)。正文提供了两个天气服务的用法(wttr.in 和 Open-Meteo),包含具体的 curl 命令和格式化参数。Agent 读取这些内容后,用户问"今天北京天气如何?"时,Agent 就知道执行 curl -s "wttr.in/Beijing?format=3"。
github:CLI 集成的标准模式
github 技能展示了如何集成一个成熟的 CLI 工具:
关键设计:
多安装方式:macOS 用户可以
brew install gh,Linux 用户可以用apt结构化正文:按功能分组(PR、Issue、CI),每组提供最常用的命令
注意事项:提醒 Agent 在非 Git 目录时使用
--repo owner/repo
coding-agent:复杂交互场景
coding-agent 是最复杂的内置技能之一——它指导 Agent 如何启动和管理其他编码 Agent(如 Codex、Claude Code):
注意 anyBins 而非 bins——只要安装了其中一个编码 Agent CLI 就满足条件。正文中详细说明了:
PTY 模式的必要性(编码 Agent 是交互式终端应用)
后台运行和会话管理
各工具参数(
command,pty,workdir,background)Process Tool 的操作(
poll,log,write,kill)
clawhub:生态自举
clawhub 技能体现了一种有趣的"自举"设计——它是一个技能,功能是管理其他技能:
Agent 通过 clawhub 技能学会如何搜索、安装、更新技能。当用户说"我需要一个能操作 Trello 的技能"时,Agent 会执行 clawhub search "trello",找到并安装相应技能。
21.2.4 技能调用策略
每个技能有两个调用控制开关,通过 Front Matter 设置:
四种组合:
true
false
默认:Agent 自动感知 + 用户可手动调用
true
true
仅用户调用:不注入提示词,只能通过 /command 触发
false
false
仅自动:Agent 自动感知,但无斜杠命令
false
true
完全禁用:既不注入提示词,也无命令
disableModelInvocation 适用于需要用户明确意图才应触发的操作(如发送消息到 Slack),避免 Agent 自作主张。
本节小结
SKILL.md 文件规范包含 YAML Front Matter(元数据)和 Markdown 正文(领域知识),通过
metadata.openclaw声明依赖、安装方式和特殊行为。五种安装器(brew/node/go/uv/download)覆盖了主流包管理器和直接下载场景,同一技能可提供多种安装选项。
52 个内置技能从极简(weather,55 行)到复杂(coding-agent,300+ 行)覆盖完整光谱,涵盖开发、通信、智能家居、媒体等领域。
调用策略通过
userInvocable和disableModelInvocation两个布尔值控制技能的触发方式,平衡自动化和用户控制。自举设计:
clawhub技能是一个管理技能的技能,skill-creator技能是一个创建技能的技能——技能系统用自身的机制来扩展自身。
Last updated