乐于分享
好东西不私藏

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

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加载有明确的优先级:

  • 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 (14 → 15 eligible) Gmail技能已安装成功!不过使用前需要配置Google API凭证。 您需要: 1. 在Google Cloud Console创建一个OAuth 2.0客户端 2. 将Client ID和Client Secret配置到OpenClaw 需要我帮您配置吗?

ClawHub上热门的Skill包括:

Skill名称

功能

skill-gmail

Gmail邮件管理

skill-calendar

Google日历

skill-web-search

增强网页搜索

skill-file-ops

文件操作

skill-notion

Notion集成

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

从零创建一个自定义Skill

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

最简Skill:Hello World

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

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

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

---name: hello-worlddescription: 一个简单的问候技能,当用户打招呼时使用---# 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"}}---

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

2. Markdown Body(指令内容)

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

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

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

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

创建目录:

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

创建SKILL.md:

---name: server-patroldescription: 服务器巡检技能。当用户要求巡检服务器、检查服务器状态、或触发定时巡检时使用。生成结构化的巡检报告。---# 服务器巡检## 巡检流程执行以下检查项,每一项都通过 `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 -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-reportdescription: 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-advisordescription: 天气查询与穿衣建议。当用户询问天气、穿什么、要不要带伞时使用。metadata: {"openclaw": {"requires": {"bins": ["curl"]}, "primaryEnv""WEATHER_API_KEY"}}---# 天气与穿衣建议## 获取天气使用 `exec` 工具执行 curl 调用天气API:```bashcurl -s "https://api.weatherapi.com/v1/forecast.json?key=${WEATHER_API_KEY}&q={城市}&days=1&lang=zh"如果用户没有指定城市,默认使用"上海"输出内容当前天气:温度、体感温度、湿度、风向风速、天气状况今日预报:最高/最低温度、降水概率、紫外线指数穿衣建议:根据温度和天气状况给出具体建议5°C:羽绒服、围巾、手套5-15°C:厚外套、毛衣15-22°C:薄外套、长袖22-28°C:短袖、薄长裤28°C:短袖短裤、注意防晒带伞提醒:降水概率>40%时提醒带伞特殊提醒:雾霾建议戴口罩、紫外线强建议防晒等

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

```json5{  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: {      watchtrue,           // 默认开启      watchDebounceMs250   // 防抖间隔    }  }}

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

Skill覆盖

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

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

mkdir -p ~/.openclaw/skills/web_search
---name: web_searchdescription: 增强版网页搜索。使用多个搜索引擎并交叉验证结果。---# 增强版网页搜索搜索时同时使用以下策略:1. 使用默认搜索工具进行搜索2. 对搜索结果去重、排序3. 优先展示来自官方文档、GitHub、Stack Overflow的结果4. 自动过滤明显的SEO垃圾页面5. 对结果进行简要摘要,而不是返回大段原文

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

Skill vs MCP vs Plugin

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

简单来说:

  • 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容器的状态,你能不能自己写一个专门的技能,以后用起来更方便?

可以看到小龙虾开始干活,等待期间,可以用这个锻炼一下手部肌肉:

很快,一个Skill写好了:

好的老大,我来创建一个Docker容器管理的技能 🛠️ Exec {} mkdir -~/.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 (03 days ago | 📊 概要:4个容器,3个运行中,1个已停止,0个异常 💡 所有运行中的容器状态正常,资源使用合理。

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

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

我的Skill清单

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

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

总结

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

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

这意味着什么?

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

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

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

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

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

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

  • 如何梳理自己的工作流,从而整理一套自己的高频Skill清单

  • 如何把Skill和定时任务、飞书、MCP组合起来

  • 如何让龙虾在真实工作流里稳定地跑起来

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