Skills 介绍
Skills是OpenClaw中用于添加新功能的模块,每个Skill是一个目录,包含一个SKILL.md 文件(提供Skill功能和对应执行指令给大语言模型),以及可选的脚本或资源。Skills允许用户通过自定义指令和工具来增强OpenClaw助手的功能,使其能够执行特定任务,例如处理问候、运行脚本或访问外部服务。
Skills解决了OpenClaw的扩展性和定制化问题,OpenClaw设计为易于扩展,但默认功能可能有限。通过Skills,用户可以:
- 灵活添加能力:无需修改核心代码,就能集成自定义操作或集成第三方工具。
- 模块化管理:每个Skill独立存在,便于开发、测试和共享。
- 提升效率:将常用任务封装为Skills,让助手自动化执行,减少手动操作。
OpenClaw 每个Skill是独立的一个文件夹,一个完整的Skill文件结构如下:
one_skill_dir
|----SKILL.md #必须
|----scripts/ #可选
|----references/ #可选
|----assets/ #可选
以上文件解释如下:
SKILL.md
必须指定的核心文件,该文件中包含技能相关的元数据和执行指令,采用“YAML元数据 + Markdown指令”的混合格式。
YAML元数据区(位于文件顶部—内):用于定义Skill的基本属性,元数据区包含name(英文,Skill的唯一标识符,如 hello_world)、description(对Skill功能的简要描述,帮助AI理解何时调用此技能)、requires(可选,声明执行此技能所需依赖的工具列表,如 [“bash”],)
Markdown指令区:用自然语言清晰描述AI应如何执行任务。该部分核心原则是导AI“做什么”和“用什么工具做”,而非教授AI基础知识,内容可以包括任务触发条件、分步操作流程、所需调用的工具(如 echo, bash)、输出结果的格式或标准。
其他目录
另外三个目录用于存放支持技能运行的资源,使Skill更强大、更独立。
scripts/: 存放可执行的Shell、Python等脚本,供Skill指令调用。
references/: 存放相关的规范文档、数据表等参考材料。
assets/: 存放模板文件、示例图片、配置文件等静态资源。
OpenClaw按固定路径发现和加载Skill,优先级从高到低为:
- 工作区Skill (~/.openclaw/workspace/skills/): 用户自定义开发,仅对当前工作区生效,优先级最高。
- 本地Skill (~/.openclaw/skills/): 从ClawHub等社区仓库安装,对所有Agent共享。
- 内置Skill: OpenClaw系统自带的基础技能。
自定义Skill
OpenClaw中可以自定义Skill,所有自定义安装的Skills位于工作区“/home/zs/.openclaw/workspace/skills”目录中。自定义Skill步骤如下:
环境与路径准备
# 在终端中创建你的Skill目录 mkdir -p ~/.openclaw/workspace/skills/你的技能名创建并编写SKILL.md文件
在创建的技能目录中,新建SKILL.md 文件,准备YAML头和SKILL执行的指令,例如,创建一个名为file_organizer的技能,其SKILL.md 示例内容如下:
--- name: file_organizer description: 自动整理指定目录下的文件,按扩展名分类到不同文件夹。 requires: [“bash”] --- # 文件整理技能 当用户要求整理某个目录时,请执行以下操作: 1. 使用 `bash` 工具,在用户指定的目标目录中,创建 `Images`、`Documents`、`Archives` 子文件夹。 2. 将所有的 `.jpg`、`.png` 文件移动到 `Images` 文件夹。 3. 将所有的 `.pdf`、`.docx` 文件移动到 `Documents` 文件夹。 4. 将所有的 `.zip`、`.tar.gz` 文件移动到 `Archives` 文件夹。 5. 操作完成后,向用户报告整理结果。添加辅助工具或者脚本(可选)
如果技能逻辑复杂,可以将具体命令编写成脚本,放在 scripts/目录下,然后在 SKILL.md 的指令中调用该脚本,而非直接写入冗长的命令,这样更安全、更易维护。
刷新技能列表并测试
创建完成后,你需要让OpenClaw重新加载技能库才能生效。可以重启OpenClaw Gateway服务或者在对话过程中输入“刷新Skill”。
自定义Skill案例-HelloWorld
自定义HelloWorld技能,当用户要求打招呼时,调用该技能回复用户。
创建新文件夹
mkdir -p ~/.openclaw/workspace/skills/hello-world编写SKILL.md文件
在创建的目录中创建 SKILL.md 文件,内容如下:
--- name: hello_world description: 一个简单的技能用于打招呼 requires: [“echo”] --- # 打招呼技能 当用户请求问候时,使用“echo”工具回复:“你好——来自hello-world Skill的问候!”重启OpenClaw Gateway
openclaw gateway restart测试技能
打开浏览器,访问OpenClaw,可以通过WebUI看到该技能:

在对话中输入如下测试技能:

特别注意:在OpenClaw中直接对话可能会命中Skill,这个与Skill描述有关,如果命中不了,可以显式提示使用xx Skill来回答xx问题。
自定义Skill案例-file_search
自定义file_search技能,该技能可以查找OpenClaw工作空间指定类型的文件信息、统计各类文件的数量。
创建新文件夹
# 创建技能主目录 mkdir -p ~/.openclaw/workspace/skills/file-search # 创建子目录存放脚本 mkdir -p ~/.openclaw/workspace/skills/file-search/scripts编写 SKILL.md 文件
# 进入技能目录,创建SKILL.md文件 cd ~/.openclaw/workspace/skills/file-searchSKILL.md 内容如下:
--- name: file_search description: 该技能可以在工作空间中搜索特定扩展名文件信息、查找最近修改的文件信息、统计工作空间中各类文件类型及数量信息。 --- # 文件搜索技能 ## 重要说明 请不要使用find命令! 请使用下面提供的Python脚本进行文件搜索和统计。 ## 功能列表 1. 搜索特定扩展名的文件 - 使用search_files.py脚本 2. 查找最近修改的文件 - 使用search_files.py脚本并指定--sort-by time参数 3. 统计各类文件数量 - 使用file_counter.py脚本 ## 具体使用方法 ### 1. 搜索Python文件(使用Python脚本) 当用户需要搜索Python文件时,请执行以下命令: python3 /home/starzy/.openclaw/workspace/skills/file-search/scripts/search_files.py --extension py ### 2. 查找最近修改的Python文件(使用Python脚本) 当用户需要查找最近修改的Python文件时,请执行以下命令: python3 /home/starzy/.openclaw/workspace/skills/file-search/scripts/search_files.py --extension py --sort-by time --max-results 10 ### 3. 统计各类文件数量(使用Python脚本) 当用户需要统计文件类型时,请执行以下命令: python3 /home/starzy/.openclaw/workspace/skills/file-search/scripts/file_counter.py ## 参数说明 ### search_files.py参数: - --extension:文件扩展名(如py、md、txt),不需要点号 - --max-results:最大显示结果数量,默认20 - --sort-by:排序方式:name(名称)、size(大小)、time(修改时间) ### file_counter.py参数: - --top-n:显示前N种最常见的文件类型,默认10 - --min-count:只显示出现次数大于此值的文件类型 ## 示例对话 用户:"使用file_search技能查询工作空间中所有Python文件,然后找出最近10修改的文件,并统计该空间内各类文件数量" 助手应该执行以下三个命令: 1. 搜索所有Python文件: python3 /home/starzy/.openclaw/workspace/skills/file-search/scripts/search_files.py --extension py 2. 找出最近10个修改的Python文件: python3 /home/starzy/.openclaw/workspace/skills/file-search/scripts/search_files.py --extension py --sort-by time --max-results 10 3. 统计各类文件数量: python3 /home/starzy/.openclaw/workspace/skills/file-search/scripts/file_counter.py准备python代码
将如下 search_files.py 和 file_counter.py 文件复制到Ubuntu目录 ~/.openclaw/workspace/skills/file-search/scripts 中。
search_files.py:
""" 文件搜索器脚本 - 在工作空间中搜索特定类型的文件 """ import json import argparse from pathlib import Path def search_files(extension, max_results=20, sort_by="name"): """搜索指定扩展名的文件""" # Path.home() 表示用户主目录 workspace_path = Path.home() / ".openclaw" / "workspace" # workspace_path = Path("D:/BigDataArchitect-master/bigdata_hbase/notes") if not workspace_path.exists(): return {"error": f"工作空间目录不存在: {workspace_path}"} # 初始化文件列表,用于存储符合条件的文件信息 files = [] # 使用rglob递归搜索工作空间下所有指定扩展名的文件, f"*.{extension}" 构建搜索模式,如 "*.txt" for file_path in workspace_path.rglob(f"*.{extension}"): # 确保找到的是文件而非目录 if file_path.is_file(): # 获取文件状态信息(大小、修改时间等) stat = file_path.stat() # 将文件信息添加到列表中 files.append({ "path": str(file_path.relative_to(workspace_path)), # 相对路径,相对于工作空间 "size": stat.st_size, # 文件大小(字节) "modified": stat.st_mtime # 文件最后修改时间(时间戳) }) # 排序 if sort_by == "size": # 按文件大小降序排序(较大的文件先显示) files.sort(key=lambda x: x["size"], reverse=True) elif sort_by == "time": # 按修改时间降序排序(最新的先显示) files.sort(key=lambda x: x["modified"], reverse=True) else: # 默认按名称升序排序(字典序) files.sort(key=lambda x: x["path"]) # 限制结果数量 files = files[:max_results] return { "workspace": str(workspace_path), "extension": extension, "total_files": len(files), "files": files } def main(): # 创建命令行参数解析器 parser = argparse.ArgumentParser(description='搜索OpenClaw工作空间中的文件') # 添加必需参数:文件扩展名(-e或--extension),文件扩展名(如txt、py、md),不需要点号 parser.add_argument('--extension', '-e', required=True) # 添加可选参数:最大结果数(-n或--max-results),最大显示结果数量,默认20 parser.add_argument('--max-results', '-n', type=int, default=20) # 添加可选参数:排序方式(-s或--sort-by),排序方式:name(名称)、size(大小)、time(修改时间) parser.add_argument('--sort-by', '-s', default="name", choices=["name", "size", "time"]) # 解析参数 args = parser.parse_args() result = search_files(args.extension, args.max_results, args.sort_by) print(json.dumps(result, indent=2, ensure_ascii=False)) if __name__ == "__main__": main()file_counter.py:
""" 文件类型统计脚本 - 统计OpenClaw工作空间中各类文件的数量 """ import json import argparse from pathlib import Path from collections import Counter def get_file_extension(filename): """获取文件的扩展名""" if '.' in filename: return filename.split('.')[-1].lower() return "无扩展名" def count_file_types(): """统计工作空间中各类文件的数量""" # Path.home() 表示用户主目录 workspace_path = Path.home() / ".openclaw" / "workspace" # workspace_path = Path("D:/BigDataArchitect-master/bigdata_hbase/notes") if not workspace_path.exists(): return {"error": f"工作空间目录不存在: {workspace_path}"} # 创建Counter对象,用于自动计数每种扩展名的文件数量 file_counter = Counter() # 总文件数计数器 total_files = 0 # 统计所有文件 for file_path in workspace_path.rglob("*"): # 只处理文件,忽略目录 if file_path.is_file(): file_extension = get_file_extension(file_path.name) file_counter[file_extension] += 1 total_files += 1 # 转换为排序后的列表(按文件数量降序) sorted_files = sorted( file_counter.items(), key=lambda x: x[1], reverse=True ) # 计算百分比 file_stats = [] for extension, count in sorted_files: file_stats.append({ "extension": extension, # 文件扩展名 "count": count, # 文件数量 }) return { "workspace": str(workspace_path), # 工作空间路径 "total_files": total_files, # 总文件数 "file_types_count": len(file_counter), # 文件类型数量 "file_stats": file_stats # 文件类型统计列表 } def filter_results(file_stats, top_n=None, min_count=1): """过滤和限制结果数量""" # 先按最小数量过滤 filtered_stats = [ stat for stat in file_stats if stat["count"] >= min_count ] # 再按top_n限制数量 if top_n is not None and top_n > 0: filtered_stats = filtered_stats[:top_n] return filtered_stats def main(): parser = argparse.ArgumentParser(description='统计OpenClaw工作空间中各类文件的数量') # 添加参数, 显示前N种最常见的文件类型 parser.add_argument('--top-n', '-n', type=int, default=None) # 添加参数, 只显示出现次数大于此值的文件类型 parser.add_argument('--min-count', '-m', type=int, default=1) # 添加参数, 以人类可读格式输出 parser.add_argument('--human', action='store_true') args = parser.parse_args() # 统计文件类型 result = count_file_types() if "error" in result: print(json.dumps(result, indent=2, ensure_ascii=False)) return # 过滤结果,根据用户指定的top_n和min_count if args.top_n is not None or args.min_count > 1: filtered_stats = filter_results( result["file_stats"], args.top_n, args.min_count ) result["file_stats"] = filtered_stats result["displayed_types"] = len(filtered_stats) # 打印统计结果 print(f"工作空间: {result['workspace']}") print(f"文件总数: {result['total_files']:,}") print(f"文件类型数量: {result['file_types_count']}") print(f"显示类型数量: {result.get('displayed_types', result['file_types_count'])}") print("\n文件类型统计:") for stat in result["file_stats"]: ext = stat["extension"] count = stat["count"] # 对齐打印:扩展名左对齐宽度15,数量左对齐宽度10 print(f"文件扩展名: {ext:<15} 文件数量: {count:<10,}") if __name__ == "__main__": main()重启OpenClaw Gateway
openclaw gateway restart测试技能
打开浏览器,访问OpenClaw,可以通过WebUI看到该技能:

在对话中输入如下测试技能:
使用 file_search skill技能统计工作空间中文件类型及数量 使用 file_search skill技能给我统计工作空间中 md 文件信息 使用 file_search skill技能查找工作空间中最近修改的python文件有哪些?
注意:如果使用不到对应的Skill,可以在对话过程中明确提示检查xx路径中的skill技能,这样在对话中可以发现并使用对应skill。
ClawHub Skills
OpenClaw中还可以通过ClawHub搜索公开、免费的Skill。ClawHub是OpenClaw的官方公共技能中心,完全免费开放且每个skill都有版本历史,地址:https://clawhub.ai/skills 。如果想为OpenClaw助手添加新功能,ClawHub是最简单的查找和安装技能的方式。
此外,推荐一个Skills中国网站:https://hub.cocoloop.cn/
ClawHub Skill安装及使用
使用ClawHub前提是需要在Ubuntu系统中安装clawhub,执行命令:
npm i -g clawhub
如果你知道某个skill名称,可以通过如下命令进行搜索及安装:
#ClawHub搜索指定Skill
clawhub search "china"
#ClawHub 安装对应skill
clawhub install "china-news"
#ClawHub更新Skill(非必须,有新版本是可以执行更新)
clawhub update "china-news"

以上安装完成之后,可以进入到工作空间“/home/starzy/.openclaw/workspace/skills”路径中看到有对应目录。

安装新Sill后,重启OpenClaw Gateway,使OpenClaw识别新技能:
openclaw gateway restart
除了这种方式搜索安装技能外,还可以直接进入OpenHub官网搜索技能,找到对应技能名称再进行安装:


重启OpenClaw后,在对话中使用Skill:
openclaw gateway restart

注意:如果需要删除安装的Skill,直接进入对应目录删除skill数据目录即可,也可以执行“clawhub delete [skill_name]”删除,这种方式需要登录clawhub。
ClawHub Skill使用示例
1. 搜索微信公众号文章
wechat-article-search:https://clawhub.ai/wuchubuzai2018/wechat-article-search
安装及重启:
# 安装skill
clawhub install "wechat-article-search"
# 该脚本依赖NodeJS依赖包 cheerio,建议先执行全局安装或在项目中安装:
npm install -g cheerio
# 重启gateway
openclaw gateway restart
使用如下,如果找不到该技能,对话中多提示几次。

2. 聚合新闻
News-aggregator:国内外社会、科技、军事新闻汇总。自动搜索、筛选、整理新闻要点。该工具需要安装tavily或者web-fetch,需要通过联网工具搜索信息。
news-aggregator:https://clawhub.ai/httencn/news-aggregator
安装及重启:
#安装skill
clawhub install "news-aggregator"
#重启gateway
openclaw gateway restart
使用如下:

3. 获取抖音热榜
douyin-hot-trend:获取抖音热榜/热搜榜数据,包含热门视频、挑战赛、音乐等多领域热门内容,并输出标题、热度值、跳转链接及封面图(如有)。
douyin-hot-trend:https://clawhub.ai/franklu0819-lang/douyin-hot-trend
安装及重启:
#安装skill
clawhub install "douyin-hot-trend"
#重启gateway
openclaw gateway restart
使用如下:

其他推荐:
- 小红书全能助手:https://clawhub.ai/hi-yu/xhs
- B站 (bilibili) 热门视频监控:https://clawhub.ai/Jacobzwj/bilibili-hot-monitor