上周有个朋友问我,说你们天天说的那个 OpenClaw 技能,到底是个啥玩意儿?我看文档里 Skill 来 Skill 去的,感觉挺高大上,就是没搞清楚究竟它是干嘛的?
我当时就愣住了。
因为这问题太真实了。坦率的讲,我刚开始用 OpenClaw 的时候,也是一脸懵。看那些官方文档,什么「模块化能力扩展包」、什么「渐进式上下文加载」,每个字都认识,连在一起就不知道在说啥。
直到我自己折腾了几天,使用了十几个技能,又手搓了两个之后,才突然开窍。
技能其实就是给 AI 用的工具箱。
就这么简单。
你装一个天气技能,AI 就能查天气;装一个搜索技能,AI 就能上网搜东西;装一个写公众号的技能,AI 就能帮你排版发文。AI 本身是个啥都不会的书呆子,技能就是让它变聪明的外挂。
今天我就把这个事儿彻底讲清楚。不是说教,就是聊聊我自己从懵逼到开窍的过程。
说真的,要理解技能为啥存在,得先看看 AI 能力扩展这事儿是怎么一路演化过来的。
最早的时候,全靠 Prompt(提示词)。你想让 AI 查天气,就在 Prompt 里写:「你是一个助手,当用户问天气时,告诉他去查天气网站。」
然后呢?
然后 AI 就只会说:「建议您查看天气应用哦。」
它根本没能力查,只能嘴上说说。就像个只会背书的书呆子,你问啥它都「理论上知道」,但动不了手。这不是 AI 笨,是它真的没「手」可用。
后来有了 Function Calling(函数调用),情况就好多了。开发者可以定义一系列工具函数,并把函数名、参数、用途告诉模型,比如:「有个函数叫 get_weather,传入城市名参数,就能返回当地天气」。模型在理解用户问题「北京天气」后,会判断需要调用工具,于是结构化地输出函数调用指令:get_weather("北京"),再由程序执行这个调用并把结果返回给模型。
这已经进步了,但问题也很明显。
工具散乱在各处,没有统一管理;AI 只知道怎么调,不知道「什么时候该调」;换个项目,工具得重新写一遍。就像你家里工具扔得到处都是,用的时候找不着,搬家还得重新买。
Skill 系统,就是来解决这些问题的。
2025年10月16日,Anthropic首次发布Agent Skils。最初,Skills只能在ClaudeCode里使用,而且还必须是Claude的Pro付费用户。

2月18日,Anthropic把Agent Skils作为统一标准,对外开放,不论你是不是Claude的付费用户,都可以使用。之后,很快像Codex、Cursor、Antigravity、OpenCode、Trae、Qoder、CodeBuddy等Coding Agentl以及ClaudeCowork、Skywork、MiniMaxAgent、扣子等桌面Agent都陆续支持了Skills。包括OpenClaw和最近大热的HermesAgent”(中文名“爱马仕"),也都支持Sills。
它把「工具」打包成一个个「即插即用的能力包」。一个 Skill 文件夹里,装着完整的「使用说明书」——什么时候该激活、怎么调用、遇到复杂情况去哪查。写一次,到处能用,换个项目直接复制过去就行。
说到这儿,我们可以做个类比:
• Prompt Engineering 像是手写说明书,告诉 AI「你应该这样回答」 • Function Calling 像是给 AI 一把螺丝刀,但它不知道什么时候该用 • Skill 像是给 AI 一个工具箱,里面工具齐全,还附带使用场景说明
AI 从「只会背书的书呆子」,变成了「知道什么时候用什么工具的熟练工」。
那 Skill 具体能干嘛?
坦率的讲,这取决于里面配了什么。有的能读文件、查日历,有的能发消息、调 API,有的提供专业领域的知识,还有的是一整套复杂流程。
我跟你说我实际用过的。
weather 技能。你问「今天天气咋样」,AI 一看 description 里写着「当用户询问天气、温度或预报时激活」,匹配上了,加载 SKILL.md,找到里面的 curl 命令,调 wttr.in 接口,返回「北京 18 度,多云」。整个过程你无感知,就像 AI 本来就会查天气一样。
有人可能会问,技能和插件有啥区别?
这么分吧。插件是耳朵和嘴巴,负责消息怎么进来、怎么出去;技能是大脑里的知识,让 AI 能回答各种问题。插件管通道,技能管能力。
目前 OpenClaw 已内置了 53 个技能,覆盖天气、搜索、文件管理、各种外部服务。说真的,先不用自己装其它的skill,就够你玩一阵子了。
~/openclaw/skills/├── 1password/├── apple-notes/├── apple-reminders/└── ……(共53个)而且OpenClaw官方插件中心现在已有约5.6万个技能,根本玩不过来。

说到这儿,你可能会好奇,技能是怎么被 AI 找到的?
这事儿稍微有点硬,但我尽量讲清楚。
OpenClaw 启动的时候,会去 skills/ 目录走一圈,找到所有带 SKILL.md 的文件夹。每个 SKILL.md 文件开头都有一段 YAML 格式的元数据,以内置的weather技能为例,长这样:
---name: weatherdescription: "Get current weather and forecasts via wttr.in or Open-Meteo. Use when: user asks about weather, temperature, or forecasts for any location. NOT for: historical weather data, severe weather alerts, or detailed meteorological analysis. No API key needed."homepage: https://wttr.in/:helpmetadata: { "openclaw": { "emoji": "☔", "requires": { "bins": ["curl"] }, "install": [ { "id": "brew", "kind": "brew", "formula": "curl", "bins": ["curl"], "label": "Install curl (brew)", }, ], }, }---name 是技能名字,description 是技能描述。这个 description 很关键,它告诉 AI「什么时候该激活我」。
当用户发来消息,AI 会把你的问题和所有技能的 description 做相似度比较,找到最匹配的那个。
比如你问「今天天气怎么样」,AI 一匹配,发现 weather skill 的 description 里有 weather、forecasts,匹配度最高,好,激活它。
这就是为什么写 Skill 时,description 要写清楚「什么时候用」——写得越清楚,匹配越准。
而且加载是有策略的,不是把所有东西一次全塞进上下文。第一层只加载元数据,100 字左右,始终在;第二层加载 SKILL.md 正文,匹配后才加载;第三层是其它的详细文档,按需加载。
这样设计是为了省 Token。AI 只需要知道啥时候用这个技能,不用一口气读完所有文档。
匹配上了,接下来就是执行。
执行过程大概是这样:AI 先激活技能,把 SKILL.md 的 body 部分加载到上下文里。这时候 AI 才知道这个技能具体怎么用、有哪些命令、有什么限制。
然后 Skill 可以向外提供工具,让 AI 在回答问题时调用。
拿 weather 技能来说,它的 SKILL.md 里定义了好几条 curl 命令。AI 看到这些,就知道「哦,调这个命令就能查天气」。
# One-line summarycurl "wttr.in/London?format=3"# Detailed current conditionscurl "wttr.in/London?0"# Specific citycurl "wttr.in/New+York?format=3"我们 Trace 一下「北京今天多少度」这个 case。
用户问「北京今天多少度」,AI 匹配到 weather skill,加载 SKILL.md,看到 curl 命令格式,组装命令执行,拿到结果「partly cloudy, 18°C」,然后生成自然语言回答:「北京今天 18 度,多云。」
整个过程你无感知,就像魔法一样。
而且 Skill 和 Skill 之间是隔离的。A 技能里设的变量不会影响到 B 技能,这样设计是为了安全,防止一个技能意外改掉另一个技能的状态。
说了这么多原理,来点实际的。
你自己写一个技能,最少只需要一个 SKILL.md 文件。
my-skill/└── SKILL.md里面必须有两样东西:frontmatter(name + description)和 body(怎么用这个技能)。
1. frontmatter:name + description 2. body:怎么用这个技能
---name: my-skilldescription: "当用户需要做xxx时使用"---写之前,先想清楚两个核心问题。
第一,什么时候用?description 要写得让 AI 知道啥场景该激活。第二,怎么用?body 里的指令要清楚,AI 看了就会操作。
这就够了。
真的,我第一次写技能的时候,想得太复杂了。又是考虑异常处理,又是想怎么优化匹配算法。后来才发现,只要把「什么时候用」和「怎么用」说清楚,其他的 OpenClaw 都帮你搞定了。
聊到现在,你应该对 OpenClaw 的技能系统有个整体概念了。
技能就是给 AI 用的工具箱,让它从书呆子变成能干活的助手。加载过程是扫描、解析、匹配、渐进加载;执行过程是激活、读文档、注册工具、处理请求、返回结果。
我自己从一脸懵到能写技能,大概花了三天。不是因为我多聪明,就是花时间去试了。先多试几个内置的技能,看看它们的 SKILL.md 是怎么写的,再自己动手写一个,很快就上手了。
说真的,技术这东西,看十遍不如做一遍。
文章内容基于OpenClaw版本2026.4.14 。
我已收集了OpenClaw的资料并已打好包,关注后发消息:小龙虾获取。
以上,既然看到这里了,如果觉得不错,随手点个赞、在看、转发三连吧,如果想第一时间收到推送,也可以给我个星标⭐~谢谢你看我的文章,我们,下次再见。

我的Openclaw教程
夜雨聆风