OpenClaw Skill:不写代码,让小龙虾24小时替你干活

如果你已经用上了AI助手,但发现它大多数时候还只是个"聊天机器人",那你大概率缺的不是更强的模型,而是更贴合你工作流的Skill(技能)

在OpenClaw里,一个Skill本质上就是一个markdown格式的SKILL.md文件。你用文字把自己的经验、流程和判断标准写进去,AI就能按你的方式干活。

这意味着什么?

  • 你可以让它每天早上自动巡检服务器,并把结果发到飞书
  • 你可以让它自动汇总Git提交,生成开发日报
  • 你甚至可以让它在对话里自己给自己写一个新Skill

更关键的是,这件事的门槛并不高。一点点简单的Markdown,就能开始教AI做事。

如果你正想把AI从"能聊"变成"能干活",这篇文章会比较适合你。

前情提要

上一篇文章中,我们完成了OpenClaw(小龙虾)的安装,并把它和飞书打通了,实现了在飞书里直接运维内网服务器。

但那只是冰山一角。

小龙虾之所以叫"龙虾",是因为它有一个威力无穷的"钳子"——Skill(技能)。一只刚出生的龙虾,和一只训练有素、装备精良的龙虾,战斗力天差地别。

今天这篇文章,就来彻底讲透OpenClaw的Skill系统,重点不是讲概念,而是讲一件更实际的事:怎么把你自己的经验封装成AI随时可调用的能力。

什么是Skill

Skill是OpenClaw的能力扩展单元,可以理解为龙虾身上的一把"钳子"。

一个Skill就是一个文件夹,里面放一个SKILL.md文件,用YAML frontmatter定义元数据,用Markdown写指令。就这么简单。

如果说大模型是龙虾的"大脑",那么Skill就是龙虾的"技能"。大脑负责思考,技能负责行动。没有Skill的龙虾只会聊天,有了Skill的龙虾才能真正把经验转化成生产力。

类比一下:

  • 大模型 = 龙虾的大脑(思考、理解、决策)
  • Skill = 龙虾的钳子和腿(行动、操作、执行)
  • MCP = 龙虾的触角(感知外部数据源)
  • Plugin = 龙虾的外挂装甲(第三方能力集成)
  • Channel = 龙虾的通讯方式(与外界交流的渠道)

Skill的三层架构

根据小龙虾官方文档,OpenClaw的Skill加载有明确的优先级:

  graph TD
    A["Workspace Skills<br>/skills<br>最高优先级"] --> D["OpenClaw Agent"]
    B["Managed/Local Skills<br>~/.openclaw/skills<br>中等优先级"] --> D
    C["Bundled Skills<br>随安装包自带<br>最低优先级"] --> D

    style A fill:#ff6b6b,stroke:#c0392b,color:#fff
    style B fill:#ffa502,stroke:#e67e22,color:#fff
    style C fill:#2ed573,stroke:#27ae60,color:#fff
    style D fill:#e6f3ff,stroke:#0066cc
  • Workspace Skills/skills):最高优先级。放在当前工作空间下,只对当前agent生效。适合放项目专属的技能。
  • Managed/Local Skills~/.openclaw/skills):中等优先级。放在用户目录下,对本机所有agent生效。适合放个人常用的技能。
  • Bundled Skills:最低优先级。随OpenClaw安装包自带,开箱即用。

如果三个位置存在同名Skill,高优先级覆盖低优先级。这意味着你可以通过在workspace放一个同名Skill来"覆盖"内置技能的行为。

看看小龙虾已经有了哪些Skill

安装OpenClaw后,它已经自带了大约几十个内置Skill。我们来问问它:

你目前有哪些技能?
目前我有以下技能: 
 
 🔧 工具类 
 - weather - 获取天气预报(通过 wttr.in 或 Open-Meteo) 
 - tmux - 远程控制 tmux 会话 
 
 🦊 飞书系列(需要配置) 
 - feishu-doc - 飞书文档读/写 
 - feishu-drive - 飞书云盘文件管理 
 - feishu-perm - 飞书权限管理 
 - feishu-wiki - 飞书知识库导航 
 
 🛡️ 系统运维 
 - healthcheck - 主机安全加固和风险配置检查 
 - node-connect - 诊断 OpenClaw 节点连接/配对失败 
 
 📝 其他 
 - skill-creator - 创建、编辑、改进或审计 AgentSkills 
 - daily-hot-images - 每天早上6点自动生成热点图片报告 
 - hot-report - 获取并汇报全球热点信息 
 
 需要我详细介绍某个技能,或者执行什么具体任务吗?

Openclaw出厂自带几十个"标配钳子",够用,但远远不够强。

从ClawHub安装社区技能

ClawHub是OpenClaw的技能市场,类似于手机上的应用商店。截至2026年3月,ClawHub上已有两万多个社区贡献的Skill。

浏览地址:https://clawhub.com

安装一个Skill非常简单,一条命令搞定:

clawhub install skill-name

也可以直接让龙虾自己安装:

帮我安装一个gmail的技能
 好的老大,我来安装Gmail技能。

 🛠️ Exec
 {}
 clawhub install skill-gmail

 ✔ Installed skill-gmail@2.1.4 to ./skills/skill-gmail
 ✔ Skills refreshed (1415 eligible)

 Gmail技能已安装成功!不过使用前需要配置Google API凭证。
 您需要:
 1. 在Google Cloud Console创建一个OAuth 2.0客户端
 2. 将Client ID和Client Secret配置到OpenClaw

 需要我帮您配置吗?

ClawHub上热门的Skill包括:

Skill名称 功能 安装量
skill-gmail Gmail邮件管理 210万+
skill-calendar Google日历 180万+
skill-web-search 增强网页搜索 160万+
skill-file-ops 文件操作 140万+
skill-notion Notion集成 89万+

但社区的Skill再多,终究是别人做的,不一定完全符合你的需求。真正让龙虾变成"你的"超级龙虾的方式,是自己创建Skill。

从零创建一个自定义Skill

重点来了,小龙虾自带的技能都是一些通用的功能,在自己实际的工作流中,往往并不满足需求,因此想自己的战力最大化,最好根据自己的需求打造一个自己的Skill。

最简Skill:Hello World

先来一个最简单的例子,理解Skill的结构。

mkdir -p ~/.openclaw/skills/hello-world

然后在里面创建一个SKILL.md文件:

---
name: hello-world
description: 一个简单的问候技能,当用户打招呼时使用
---

# Hello World

当用户说"你好"或打招呼时,用一种特别热情的方式回应,并且在末尾加上当前的系统时间。

使用 `exec` 工具执行 `date` 命令获取当前时间。

就这么简单。一个YAML头部定义名字和描述,下面的Markdown内容就是给大模型看的"指令"。

刷新技能后测试一下:

你好
 🎉 老大好啊!!!见到你太高兴了!!!

 🛠️ Exec
 {}
 现在是 2026年03月14日 星期六 22:58:03 CST

 此刻是2026年3月14日晚上22:58,周六的夜晚,
 希望老大今天过得愉快!有什么我能帮忙的吗?😊

生效了。这个Skill虽然简单,但它展示了Skill的本质:用自然语言告诉大模型该怎么做

SKILL.md的完整结构

一个标准的SKILL.md由两部分组成:

1. YAML Frontmatter(元数据)

---
name: my-skill              # 技能名称,小写字母+数字+连字符,最长64字符
description: 技能的描述      # 描述,最长1024字符,决定了大模型何时使用这个技能
metadata: {"openclaw": {"requires": {"bins": ["curl"]}, "primaryEnv": "API_KEY"}}
---

其中namedescription是必填的,metadata是可选的,用来定义依赖条件。

2. Markdown Body(指令内容)

这部分是给大模型读的"操作手册"。你怎么写都行,但记住一个原则:大模型已经很聪明了,只写它不知道的东西

不需要写"你是一个AI助手"这种废话,直接写"做什么、怎么做、有什么限制"就行。

实战:创建一个服务器巡检Skill

来做一个有实际价值的Skill——每天自动巡检服务器,生成报告。

创建目录:

mkdir -p ~/.openclaw/skills/server-patrol

创建SKILL.md

---
name: server-patrol
description: 服务器巡检技能。当用户要求巡检服务器、检查服务器状态、或触发定时巡检时使用。生成结构化的巡检报告。
---

# 服务器巡检

## 巡检流程

执行以下检查项,每一项都通过 `exec` 工具运行对应的shell命令:

1. **磁盘使用率**`df -h`
   - 告警阈值:任一分区使用率超过85%
2. **内存使用**`free -h`
   - 告警阈值:可用内存低于总内存的15%
3. **CPU负载**`uptime`
   - 告警阈值:15分钟平均负载超过CPU核心数
4. **GPU状态**`nvidia-smi --query-gpu=name,temperature.gpu,utilization.gpu,memory.used,memory.total --format=csv,noheader` (如果有GPU)
   - 告警阈值:温度超过85°C或显存使用率超过90%
5. **关键服务状态**`systemctl is-active docker nginx mysql`(按需调整)
6. **最近异常日志**`journalctl -p err --since "24 hours ago" --no-pager | tail -20`
7. **网络连通性**`ping -c 3 8.8.8.8`
8. **系统运行时间**`uptime -s`

## 报告格式

'''
汇总后按以下格式输出:

🖥️ 服务器巡检报告
📅 时间:{当前时间}
⏱️ 运行时间:{启动时间至今}

✅ 正常项:
- {列出所有正常的检查项}

⚠️ 告警项:
- {列出超过阈值的项目及具体数值}

❌ 异常项:
- {列出失败或错误的检查项}

📊 概要:共检查{N}项,正常{X}项,告警{Y}项,异常{Z}项
'''

## 注意事项

- 如果某条命令执行失败,标记为异常但不中断整个巡检
- GPU检查在无GPU的服务器上直接跳过
- 服务列表根据实际部署情况灵活调整

刷新技能后测试:

巡检一下服务器
 好的老大,我来对服务器进行全面巡检。

 🛠️ Exec  df -h
 🛠️ Exec  free -h
 🛠️ Exec  uptime
 🛠️ Exec  nvidia-smi --query-gpu=...
 🛠️ Exec  systemctl is-active docker
 🛠️ Exec  journalctl -p err --since "24 hours ago" --no-pager | tail -20
 🛠️ Exec  ping -c 3 8.8.8.8
 🛠️ Exec  uptime -s

 🖥️ 服务器巡检报告
 📅 时间:2026-03-14 23:05:12 CST
 ⏱️ 运行时间:自2026-02-01启动,已运行41天

 ✅ 正常项:
 - 磁盘使用率:主盘58%,数据盘44%
 - 内存:总计64GB,可用38GB(59%)
 - CPU负载:0.12 0.08 0.05(远低于核心数16)
 - GPU温度:42°C,显存使用44MiB/22528MiB
 - Docker服务:运行中
 - 网络连通性:ping 8.8.8.8 平均延迟12.3ms

 ⚠️ 告警项:
 - 无

 ❌ 异常项:
 - nvidia-smi驱动版本不匹配(Driver/library version mismatch)
 - 过去24小时有3条error级别日志(USB设备相关,非严重)

 📊 概要:共检查8项,正常6项,告警0项,异常2项

 建议关注nvidia驱动版本不匹配的问题,可能需要更新驱动。
 其他一切正常,服务器状态良好。

一个完整的服务器巡检报告就生成了。而且这个Skill可以配合定时任务使用:

每天早上9点自动巡检服务器,结果发到飞书告诉我
 好的老大,我来设置定时巡检任务。

 🛠️ Scheduler
 {}
 ✔ 创建定时任务:每天 09:00 执行服务器巡检并通过飞书发送报告

 已设置完成!每天早上9点我会自动执行服务器巡检,
 并将巡检报告通过飞书发送给您。如果有告警或异常项,
 我会特别标注提醒。

这就是Skill的威力:定义一次,反复使用,还能和其他能力(定时器、飞书)组合。

实战:创建一个Git仓库日报Skill

再来一个更复杂的例子——自动生成Git仓库的每日开发日报。

mkdir -p ~/.openclaw/skills/git-daily-report

SKILL.md内容:

---
name: git-daily-report
description: Git仓库每日开发日报生成。当用户要求生成日报、查看今日代码提交、总结开发进度时使用。
---

# Git日报生成

## 触发条件

当用户说"生成日报"、"今天的开发进度"、"代码提交总结"等相关内容时触发。

## 操作步骤

1. 确认目标仓库路径(如果用户没指定,询问)
2. 执行以下命令获取数据:
   - `git log --since="today 00:00" --format="%h|%an|%s|%ci" --all` — 今日所有提交
   - `git diff --stat HEAD~{N}..HEAD` — 代码变更统计(N为今日提交数)
   - `git branch -a` — 分支信息
   - `git log --since="today 00:00" --format="%an" | sort | uniq -c | sort -rn` — 贡献者统计

3. 整理成日报格式

## 输出格式

'''
📋 开发日报 — {仓库名} — {日期}

👥 贡献者({人数}人):
- {姓名}:{提交数}次提交

📝 提交记录:
| 哈希 | 作者 | 提交信息 | 时间 |
|------|------|----------|------|
| ... | ... | ... | ... |

📊 代码统计:
- 变更文件数:{N}
- 新增行数:{+N}
- 删除行数:{-N}

🌿 活跃分支:
- {分支列表}

💡 今日概要:
{用一段话概括今天的主要开发内容和进展}
'''

## 注意事项

- "今日概要"需要根据提交信息智能总结,不是简单罗列
- 如果今天没有提交,输出"今天暂无代码提交"
- 时间格式统一使用24小时制

实战:创建一个带API调用的Skill

Skill不仅可以调用shell命令,还可以调用外部API。比如创建一个天气+穿衣建议的Skill:

mkdir -p ~/.openclaw/skills/weather-advisor
---
name: weather-advisor
description: 天气查询与穿衣建议。当用户询问天气、穿什么、要不要带伞时使用。
metadata: {"openclaw": {"requires": {"bins": ["curl"]}, "primaryEnv": "WEATHER_API_KEY"}}
---

# 天气与穿衣建议

## 获取天气

使用 `exec` 工具执行 curl 调用天气API:

···bash
curl -s "https://api.weatherapi.com/v1/forecast.json?key=${WEATHER_API_KEY}&q={城市}&days=1&lang=zh"
···

如果用户没有指定城市,默认使用"上海"。

## 输出内容

1. 当前天气:温度、体感温度、湿度、风向风速、天气状况
2. 今日预报:最高/最低温度、降水概率、紫外线指数
3. 穿衣建议:根据温度和天气状况给出具体建议
   - < 5°C:羽绒服、围巾、手套
   - 5-15°C:厚外套、毛衣
   - 15-22°C:薄外套、长袖
   - 22-28°C:短袖、薄长裤
   - > 28°C:短袖短裤、注意防晒
4. 带伞提醒:降水概率>40%时提醒带伞
5. 特殊提醒:雾霾建议戴口罩、紫外线强建议防晒等

然后在~/.openclaw/openclaw.json中配置API Key:

{
  skills: {
    entries: {
      "weather-advisor": {
        enabled: true,
        env: {
          WEATHER_API_KEY: "你的API密钥"
        }
      }
    }
  }
}

这样API密钥通过环境变量注入,不会暴露在Skill文件里。 小龙虾自己也可以查询天气,但是这样自定义的天气预报能力更强大,输出更符合的需求。

Skill的高级特性

环境变量注入

openclaw.json中可以为每个Skill单独配置环境变量和API Key:

{
  skills: {
    entries: {
      "my-skill": {
        enabled: true,
        apiKey: { source: "env", provider: "default", id: "MY_API_KEY" },
        env: {
          MY_API_KEY: "sk-xxx",
          MY_ENDPOINT: "https://api.example.com"
        }
      }
    }
  }
}

这些变量在agent运行时注入,运行结束后恢复原始环境,不会污染系统环境。

热更新(Skills Watcher)

OpenClaw默认开启了文件监听,当你修改SKILL.md文件后,不需要重启,下一次对话就会自动加载最新的Skill内容:

{
  skills: {
    load: {
      watch: true,           // 默认开启
      watchDebounceMs: 250   // 防抖间隔
    }
  }
}

这意味着你可以一边写Skill,一边测试,即时生效。

Skill覆盖

如果你对某个内置Skill的行为不满意,不需要修改源码,只需要在高优先级目录下创建一个同名Skill即可覆盖。

比如,你觉得内置的web_search技能返回的结果不够好,可以在~/.openclaw/skills/下创建自己的版本:

mkdir -p ~/.openclaw/skills/web_search
---
name: web_search
description: 增强版网页搜索。使用多个搜索引擎并交叉验证结果。
---

# 增强版网页搜索

搜索时同时使用以下策略:
1. 使用默认搜索工具进行搜索
2. 对搜索结果去重、排序
3. 优先展示来自官方文档、GitHub、Stack Overflow的结果
4. 自动过滤明显的SEO垃圾页面
5. 对结果进行简要摘要,而不是返回大段原文

你的版本会覆盖内置版本,生效于本机所有agent。

Skill vs MCP vs Plugin

这三个概念容易混淆,但它们的定位完全不同:

  graph LR
    subgraph "OpenClaw能力体系"
        A["Skill 技能<br>教龙虾'怎么做'<br>用SKILL.md定义<br>OpenClaw原生"] 
        B["MCP 协议<br>给龙虾'新感官'<br>连接外部数据源<br>通用标准协议"]
        C["Plugin 插件<br>给龙虾'新器官'<br>添加通道/工具<br>代码级扩展"]
    end

    style A fill:#ff6b6b,stroke:#c0392b,color:#fff
    style B fill:#ffa502,stroke:#e67e22,color:#fff
    style C fill:#2ed573,stroke:#27ae60,color:#fff
维度 Skill MCP Plugin
本质 自然语言指令 数据连接协议 代码扩展包
难度 零代码,写Markdown即可 需要配置MCP Server 需要编写代码
场景 教agent做事的流程 连接数据库、API等 添加通讯渠道、新工具
类比 教员工做事的SOP手册 给办公室装网线 给办公室加新设备
示例 服务器巡检流程 连接PostgreSQL 飞书通道集成

简单来说:

  • Skill是最轻量的扩展方式,一个Markdown文件搞定
  • MCP适合需要和外部数据打通的场景
  • Plugin适合需要深度集成、添加新协议的场景

对于大多数用户,Skill就够用了。

Skill设计的最佳实践

写了这么多Skill之后,总结几条实战经验:

1. 描述(description)决定一切

description是大模型决定"什么时候使用这个Skill"的唯一依据。写得不好,Skill就是废物。

# 差:太模糊,大模型不知道什么时候该用
description: 一个有用的工具

# 好:明确说了做什么、什么时候用
description: 服务器巡检技能。当用户要求巡检服务器、检查服务器状态、或触发定时巡检时使用。

2. 指令要具体,不要空洞

# 差:大模型本来就会这些
请帮用户完成任务,注意礼貌用语。

# 好:告诉大模型它不知道的事
磁盘使用率超过85%时标记为告警。
使用 nvidia-smi 的 --query-gpu 参数获取结构化数据。
报告使用表格格式输出。

3. 提供明确的输出格式

大模型最怕"你看着办"。给一个明确的输出模板,可以让输出结果稳定和标准化,效果会好很多。

4. 善用已有工具

Skill本身不需要实现功能,它只需要"指挥"大模型使用已有的工具。exec能执行任何命令,web_fetch能抓取任何网页,memory能记住任何信息。Skill做的是把这些能力编排成流程。

5. 一个Skill做一件事

不要试图写一个"万能Skill",那和没有Skill没区别。每个Skill聚焦一个明确的场景,多个Skill可以被大模型自动组合使用。

让龙虾自己写Skill

最后,分享一个最"赛博朋克"的玩法——让龙虾自己给自己写Skill。

OpenClaw的meta skill功能允许agent在对话过程中创建新的Skill,不需要重启:

我经常让你帮我查Docker容器的状态,你能不能自己写一个专门的技能,以后用起来更方便?
 好的老大,我来创建一个Docker容器管理的技能。

 🛠️ Exec
 {}
 mkdir -p ~/.openclaw/skills/docker-patrol

 📝 Edit
 {}
 Created ~/.openclaw/skills/docker-patrol/SKILL.md

 我已经创建了 docker-patrol 技能,内容包括:

 1. 查看所有容器状态(运行中/已停止/异常)
 2. 容器资源使用统计(CPU、内存、网络)
 3. 异常容器告警(非Running状态、重启次数过多)
 4. 输出结构化的状态报告

 技能已自动加载,现在你可以直接说"查看Docker状态" 我就会按照标准流程执行检查。

 要试试吗?
试试
 🛠️ Exec  docker ps -a --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
 🛠️ Exec  docker stats --no-stream --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"

 🐳 Docker容器状态报告
 📅 时间:2026-03-14 23:22:18

 ✅ 运行中(3个):
 | 容器名 | 状态 | CPU | 内存 | 端口 |
 |--------|------|-----|------|------|
 | nginx-proxy | Up 41 days | 0.02% | 12MiB/64GiB | 80,443 |
 | postgres-main | Up 41 days | 0.15% | 256MiB/64GiB | 5432 |
 | redis-cache | Up 41 days | 0.08% | 48MiB/64GiB | 6379 |

 ⏹️ 已停止(1个):
 | 容器名 | 状态 |
 |--------|------|
 | temp-builder | Exited (0) 3 days ago |

 📊 概要:4个容器,3个运行中,1个已停止,0个异常
 💡 所有运行中的容器状态正常,资源使用合理。

龙虾给自己写了一个Skill,然后自己用上了。

这就是为什么说OpenClaw打开了一个新篇章——AI不再只是使用工具,而是开始制造工具

我的Skill清单

分享一下我目前正在使用的自定义Skill,供参考:

Skill名称 用途 触发场景
server-patrol 服务器巡检 “巡检”、“检查服务器”
docker-patrol Docker状态检查 “Docker状态”、“容器情况”
git-daily-report Git日报生成 “生成日报”、“今日提交”
weather-advisor 天气穿衣建议 “天气”、“穿什么”
hot-tracker 每日热点新闻追踪 “今天世界上发生了什么大事”
web-catcher web抓站 “帮我把http://xxxx的信息抓下来”
note-backup 笔记备份 “备份下笔记”

每一个Skill都是一个Markdown文件,不超过50行,却能让龙虾在特定场景下表现得像一个专业的运维工程师。

总结

Skill是OpenClaw最优雅的扩展机制——零代码、零部署、即时生效。

写一个Skill,本质上就是在写一份"给AI看的SOP"。你把自己的专业经验、工作流程、判断标准写成Markdown,龙虾就能按照你的标准去执行。

  graph LR
    A["你的经验和知识"] -->|写成SKILL.md| B["OpenClaw Skill"]
    B -->|加载到| C["小龙虾的大脑"]
    C -->|执行| D["自动化的专业工作"]

    style A fill:#fffacd,stroke:#8b4513
    style B fill:#e6f3ff,stroke:#0066cc
    style C fill:#ff6b6b,stroke:#c0392b,color:#fff
    style D fill:#2ed573,stroke:#27ae60,color:#fff

这意味着什么?

意味着每一个人都可以把自己多年积累的专业经验"灌注"到一只龙虾里,让它成为你在数字世界的分身。运维工程师可以打造一只运维龙虾,开发者可以打造一只开发龙虾,产品经理可以打造一只产品龙虾。

你有多专业,你的龙虾就有多强大。

这也许就是AI时代个人能力的新杠杆——你的经验不再只存在于你的脑子里,而是可以被编码、被复制、被24小时不间断地执行。

小龙虾还在进化,而你的Skill清单,就是它进化的方向。

如果你准备自己动手,建议先从文中的三个模板开始:server-patrolnote-backupweather-advisor。这三个场景最容易上手,也最容易立刻感受到收益。

如果你对这种"把经验写成AI能力"的玩法感兴趣,欢迎关注公众号。后面我还会继续写:

  • 如何梳理自己的工作流,从而整理一套自己的高频Skill清单
  • 如何把Skill和定时任务、飞书、MCP组合起来
  • 如何让龙虾在真实工作流里稳定地跑起来

(文章中所有的key、code均已经过混淆处理)