21.1 技能平台设计

生成模型:Claude Opus 4.6 (anthropic/claude-opus-4-6) Token 消耗:输入 ~400k tokens,输出 ~7k tokens(本节)


LLM 本身是通用的——它什么都能聊,但什么都不精通。要让 Agent 在特定领域(天气查询、GitHub 操作、智能家居控制)变得专业,需要给它注入领域知识和操作指南。OpenClaw 的技能系统(Skills)正是为此而设计:一套可热插拔、自描述、自动发现的 Agent 能力扩展机制。


21.1.1 什么是技能:可热插拔的 Agent 能力模块

设计理念

技能的核心思想很简单:一个 Markdown 文件就是一项技能。技能文件(通常名为 SKILL.md)包含两部分:

  1. Front Matter(YAML 头部)——结构化元数据:名称、描述、依赖要求、安装方式

  2. 正文——Agent 要学习的领域知识:API 用法、命令示例、最佳实践

---
name: weather
description: Get current weather and forecasts (no API key required).
metadata: { "openclaw": { "emoji": "🌤️", "requires": { "bins": ["curl"] } } }
---

# Weather

Two free services, no API keys needed.

## wttr.in (primary)

Quick one-liner:
```bash
curl -s "wttr.in/London?format=3"

内置技能(Bundled)

OpenClaw 随包附带 52 个内置技能,覆盖开发工具、通信平台、智能家居、媒体处理等领域:

类别
代表性技能
说明

开发工具

github, coding-agent, tmux

Git 操作、子 Agent 编排、终端会话

通信平台

discord, slack, imsg, bluebubbles

聊天平台集成

笔记/知识

obsidian, notion, bear-notes, apple-notes

各类笔记应用

智能家居

openhue, sonoscli

Hue 灯光、Sonos 音响

AI/模型

gemini, oracle, openai-image-gen

模型调用、图像生成

媒体

spotify-player, video-frames, camsnap

音乐、视频、摄像头

工具

weather, summarize, healthcheck

天气、摘要、健康检查

生态

clawhub, skill-creator

技能注册中心、技能创作

内置技能目录解析

resolveBundledSkillsDir 负责定位内置技能的物理目录,支持多种安装场景:

looksLikeSkillsDir 通过检查目录中是否存在 .md 文件或包含 SKILL.md 的子目录来判断。


21.1.3 技能加载与快照

加载流程

loadSkillEntries 是技能加载的核心函数。它从四个来源加载技能,解析 Front Matter,提取元数据:

每个 SkillEntry 包含四个层次的信息:

资格过滤

并非所有加载的技能都会被激活。shouldIncludeSkill 实现了多维度的资格检查:

这就是为什么用户安装 OpenClaw 后,只会看到与其环境匹配的技能——没有安装 gh CLI 的用户不会看到 github 技能,没有配置 Discord Token 的用户不会看到 discord 技能。

技能快照

技能快照(SkillSnapshot)是某一时刻所有激活技能的静态表示,用于注入到 Agent 的系统提示词中:

buildWorkspaceSkillSnapshot 构建快照的过程:加载 → 过滤 → 排除 disableModelInvocation 的技能 → 调用 formatSkillsForPrompt 生成提示文本。

技能命令规格

每个技能还可以注册为斜杠命令(/weather/github),让用户直接调用。buildWorkspaceSkillCommandSpecs 为每个可调用的技能生成命令规格:

命令名经过 sanitizeSkillCommandName 处理(只保留 [a-z0-9_]),并通过 resolveUniqueSkillCommandName 确保唯一性。技能的 Front Matter 还可以通过 command-dispatch: tool + command-tool: <toolName> 指定确定性调度——即命令不经过 LLM 推理,直接调用指定工具。


本节小结

  1. 技能本质是 Markdown 文档,通过 Front Matter 声明元数据,正文提供领域知识,注入系统提示词后指导 Agent 行为。

  2. 四种来源按优先级排列:Extra < Bundled < Managed < Workspace,同名技能高优先级覆盖低优先级。

  3. 资格过滤检查八个维度:配置禁用、白名单、OS 兼容性、always 标记、必需二进制、环境变量、配置路径,确保只激活与当前环境匹配的技能。

  4. 技能快照是激活技能的静态表示,formatSkillsForPrompt 将其格式化为系统提示词的一部分。

  5. 52 个内置技能覆盖开发、通信、智能家居、媒体等领域,每个技能文件独立自包含,便于理解和扩展。

Last updated