6.1 Skills概念与ClawHub

生成模型:OpenAI GPT-5.3 Codex(openai/gpt-5.3-codex) Token 消耗:输入约 12k,输出约 6k(本节,估算值)


到第 6 章,我们终于来到 OpenClaw 最“好玩”的一层:Skills 生态。

前面几章你已经看到 OpenClaw 的主干能力了:会话、路由、工具调用、消息处理都很强,但这些更像一台装配好的“通用机器”。真正让它变成“你自己的机器”的,是 Skills。

如果用一句话讲清楚:Skill 是给 Agent 提供“领域操作说明书”的热插拔能力模块

这里有三个关键词:

  • 热插拔:不改主程序,不重写核心代码,按需装、按需开。

  • 能力模块:一个 Skill 只解决一类问题,比如 GitHub 流程、天气查询、浏览器自动化。

  • 说明书:Skill 主要是写给模型读的,不是写给编译器读的。

这一节我们不进入底层源码细节(那是第 29 章重点),而是站在“使用者+系统设计直觉”的视角,搞懂下面几个问题:

  1. Skill 到底是什么、和 Tool 有什么关系;

  2. OpenClaw 里 Skill 有哪些类型,冲突时谁覆盖谁;

  3. ClawHub 这个技能市场怎么用;

  4. 平时如何安装、启用、禁用、排查 Skill 状态;

  5. 怎么在 CLI 命令和聊天指令里高效调用 Skills。


6.1.1 Skill 到底是什么:不是“插件代码”,而是“可执行知识包”

很多同学第一次接触 OpenClaw 会有个误解:Skill 是不是类似 VS Code 扩展,要写一堆 JS/TS 代码?

实际并不一定。

在 OpenClaw 里,一个 Skill 最小形态可以只是一个目录,里面放一个 SKILL.md。这个文件告诉模型:

  • 你解决什么问题;

  • 你依赖什么外部条件(命令行工具、环境变量、系统平台);

  • 面对具体任务时,推荐怎么操作;

  • 有哪些坑要避开。

你可以把它理解成“给 Agent 的标准作业流程(SOP)文档”。

Skill 和 Tool 的分工

这是非常关键的概念:

  • Tool(工具):提供“手脚”,比如 bash、文件读写、浏览器控制;

  • Skill(技能):提供“方法论”,告诉 Agent 什么时候用哪只手、先后顺序怎么排。

举个很直观的例子:

  • 没有天气 Skill,模型可能“凭常识瞎猜”天气;

  • 有天气 Skill 后,模型会按说明走 curl 去查询真实服务(如 wttr.in)。

所以 Skill 解决的是“会不会做、会不会稳做”的问题,不是“能不能执行系统调用”的问题。

衍生解释:为什么这是教科书外但很重要的概念?

在传统 CS 课程里,我们更常见的是“函数调用接口”或“插件 API”。Skill 这种“自然语言驱动的能力注入”属于 LLM 时代的新型扩展机制:不是让程序调用程序,而是让模型通过上下文学会一套行为策略,再去调用工具执行。这是一种“文档即能力”的工程模式。


6.1.2 Skills 的类型:Extra / Bundled / Managed / Workspace

根据来源和作用域,OpenClaw 里的 Skill 分为四类,按优先级从低到高排列:

1)Extra Skills(额外技能)

  • 通过配置指定的额外目录提供;

  • 优先级最低,通常由插件或自定义集成注入;

  • 适合补充一些非标准来源的技能。

实际使用中很少直接接触这一层,但它的存在让系统更灵活。

2)Bundled Skills(内置技能)

  • 随 OpenClaw 一起分发,当前版本内置 52 个技能;

  • 开箱就有,覆盖开发工具、通信平台、笔记/知识、智能家居、AI/模型、媒体、工具、生态等 8 大类;

  • 例如:coding-agentgithubweatherdiscordobsidianclawhub 等。

你可以把它当成“官方预装包”。

3)Managed Skills(托管技能)

  • 通常放在 ~/.openclaw/skills

  • 常由 ClawHub 安装和管理;

  • 跨项目复用最方便。

如果你在多个仓库都需要同一种能力,比如 GitHub 自动化或某个团队内部发布流程,这类最合适。

4)Workspace Skills(工作区技能)

  • 放在当前项目的 <workspace>/skills

  • 只在这个项目生效;

  • 优先级最高,特别适合团队私有规范。

比如 A 团队要求“发版前必须先跑某三项检查”,B 团队完全不同,那就把规则写成 workspace skill,互不干扰。

优先级:谁覆盖谁

当存在同名 Skill 时,OpenClaw 会按优先级选择:

workspace > managed > bundled > extra

这条规则很实用:

  • 你可以先用内置 Skill 起步;

  • 觉得不够贴合,再用 managed 版本增强;

  • 项目内再用 workspace 版本做最终定制。

这本质上是一种“逐层覆盖”的配置策略,与第 29 章源码分析中的 loadSkillEntries 四来源合并逻辑完全一致。


6.1.3 ClawHub 是什么:Skills 的“应用市场 + 分发中心”

如果把 Skills 生态比作手机 App 生态,ClawHub 就是应用商店。

它至少做三件事:

  1. 发现(Discover):让你搜索可用技能;

  2. 安装(Install):把技能装到本地可识别目录;

  3. 版本与分发(Distribute):方便作者发布、用户更新。

为什么 ClawHub 重要

如果没有 ClawHub,Skill 分享会变成“发压缩包+手工拷目录”,体验和可维护性都很差。ClawHub 把这件事产品化了:

  • 统一入口;

  • 统一安装命令;

  • 统一命名和可发现性。

对于学习者来说,最大的价值是:你可以先站在成熟 Skill 的肩膀上,理解一个好 Skill 长什么样,再自己写。


6.1.4 安装与发现:CLI 视角的一套标准动作

下面给你一套很实用的“固定动作”,建议直接记下来。

第一步:看本地技能现状

  • list:看有哪些技能;

  • list --eligible:看当前环境真正可用的技能;

  • info <name>:看单个技能描述、依赖;

  • check:做整体健康检查。

这里的 eligible 很关键。它告诉你“理论上有”不等于“实际上可用”。

例如 github Skill 常依赖 gh,如果你没装 gh,那技能就可能处于不可用状态。

第二步:在 ClawHub 搜索

第三步:安装技能

第四步:回到 OpenClaw 验证

如果这里显示正常,基本就可以在对话里直接用了。


6.1.5 在聊天里怎么触发 Skill

很多人把 Skill 想成“要先手动打开插件开关”。实际上,常见流程是:

  • 你自然语言提任务;

  • Agent 根据任务类型和已加载 Skills 决定采用哪套策略;

  • 再配合工具完成执行。

比如你可以直接说:

如果 github Skill 可用,模型会倾向于按照 Skill 推荐流程去用 gh 完成,而不是只给你“纸面建议”。

再比如:

weather Skill 时,模型会优先查真实天气服务,再输出建议。

衍生解释:命令式调用 vs 意图式调用

传统系统常要求用户明确调用某个命令(命令式)。Skill 生态更偏“意图式”:你表达目标,系统根据上下文和能力快照选择策略。这个思想在智能体系统里非常重要,它降低了使用门槛,但前提是 Skill 设计要清晰可靠。


6.1.6 在配置里管理 Skill 开关与参数

当你不想“全自动”,或者需要对某些 Skill 注入配置,可以在 openclaw.jsonskills.entries 做管理。

示例:

这个配置里有几个常用点:

  • enabled:快速开关;

  • env:注入环境变量;

  • apiKey:给技能透传密钥(通常配合环境变量);

  • config:放业务参数(地址、团队、阈值等)。

推荐习惯

  • 密钥不要硬编码,统一放环境变量;

  • 先在 workspace 里验证,再上 managed 全局;

  • 给团队 skill 约定清晰的 config 字段名,避免口口相传。


6.1.7 Skill 状态管理:能装不等于能用

实战里最容易踩的坑不是“不会安装”,而是“装了但没生效”。

你可以用一个三层检查法:

第一层:发现层

  • openclaw skills list 能看到吗?

  • 名称是否和你调用时一致?

第二层:资格层

  • openclaw skills list --eligible 里有吗?

  • 依赖命令(如 ghcurl)是否存在?

第三层:行为层

  • 你提出对应任务时,Agent 的执行路径是否体现了该 Skill 的策略?

  • 输出是否引用了真实外部信息,而非凭空生成?

常见状态问题和处理

  1. Skill 显示存在,但不 eligible

    • 多数是外部依赖没装。

    • 处理:按 skills info 提示补齐命令行依赖。

  2. 同名 Skill 行为和预期不一致

    • 可能是被高优先级来源覆盖了。

    • 处理:检查 workspace/managed 是否有同名版本。

  3. 启用了 Skill,效果仍像没启用

    • 可能是任务描述过于模糊,没触发该技能场景。

    • 处理:任务描述里加上明确目标和约束。

例如把“帮我看看 GitHub”改成“帮我用 gh 检查最近 5 个 PR 的 CI 状态并列出失败原因”。


6.1.8 一个完整示例:从 0 到可用

这里我们做一遍完整流程,目标是启用 github Skill。

1)安装依赖与技能

2)检查可用性

3)在对话中使用

如果一切正常,Agent 会倾向调用与 GitHub 流程相关的操作路径,而不是只“泛聊 GitHub 概念”。


6.1.9 给学习者的实践建议:先“会用”,再“会造”

你现在最应该做的不是立刻写复杂自定义 Skill,而是先把这三件事练熟:

  1. 会判断 Skill 是否真的生效eligible + 行为观察);

  2. 会做最小配置管理enabledenvconfig);

  3. 会选择作用域(workspace 还是 managed)。

等你这三步稳定了,再进入 6.3 自定义 Skill,会非常顺。

因为写 Skill 最大难点其实不是语法,而是“把模糊经验变成稳定可复用的操作说明”。


本节小结

这一节你可以带走 5 个核心结论:

  • Skill 是 OpenClaw 的能力扩展层,本质是面向 LLM 的“可执行知识包”;

  • Tool 负责执行能力,Skill 负责行为策略,两者是互补关系;

  • Skill 来源有四种:extra / bundled / managed / workspace,优先级是 workspace > managed > bundled > extra

  • ClawHub 是 Skills 的发现与分发中心,建议形成“搜索→安装→验证”的固定流程;

  • 技能管理的关键不在“装没装”,而在“是否 eligible、是否按预期行为执行”。

下一节我们就进入你最关心的部分:把 coding-agentgithubweather、浏览器自动化、discordcanvas 这些常用 Skills 一次讲透,直接上手实战。

Last updated