专栏OpenClaw_AI 应用实战 第 18 篇字数约 9000 字阅读时间约 22 分钟难度⭐⭐⭐⭐ 中高级更新时间2026-04-01写在前面OpenClaw 内置功能不够用❌ 受限情况 用户我想让 AI 帮我... AI: 抱歉这个功能我不支持 因为没有对应的技能✅ 自定义技能 用户我想让 AI 帮我... AI: 好的我来处理 因为开发了自定义技能这篇文章教你如何开发自定义技能扩展 OpenClaw 能力。一、技能基础1.1 什么是技能**技能Skill**是 OpenClaw 中教 AI 如何使用工具的文档。结构skill-name/ ├── SKILL.md # 技能说明必需 ├── scripts/ # 脚本文件可选 ├── templates/ # 模板文件可选 └── assets/ # 资源文件可选1.2 技能位置位置路径优先级工作区技能~/.openclaw/workspace/skills/最高本地技能~/.openclaw/skills/中内置技能OpenClaw 安装包内最低1.3 技能加载OpenClaw 启动 ↓ 扫描技能目录 ↓ 读取 SKILL.md ↓ 检查依赖环境、工具 ↓ 加载到系统提示词 ↓ AI 可以使用技能二、技能开发流程2.1 创建技能目录# 进入工作区cd~/.openclaw/workspace/skills/# 创建技能目录mkdir-pmy-custom-skill# 进入目录cdmy-custom-skill2.2 编写 SKILL.md--- name: my-custom-skill description: 我的自定义技能 --- # 技能说明 ## 功能描述 这个技能用于... ## 使用场景 - 场景 1 - 场景 2 ## 使用方法 当用户...时执行以下步骤 1. 步骤 1 2. 步骤 2 3. 步骤 3 ## 输出格式 ... ## 依赖 - Python 3.8 - 工具xxx2.3 示例天气查询技能--- name: weather-query description: 查询任意城市的天气预报 metadata: {openclaw: {requires: {env: [WEATHER_API_KEY]}}} --- # 天气查询技能 ## 功能 查询全球任意城市的天气预报支持当前天气和未来 7 天预报。 ## 使用场景 - 用户询问天气 - 出行前查询天气 - 对比多个城市天气 ## 使用方法 当用户询问天气时执行以下步骤 1. **提取城市名** - 从用户问题中识别城市名称 - 如果未指定使用用户当前位置 2. **调用天气 API** bash curl https://api.weather.com/v1/current?city{city}key{WEATHER_API_KEY}解析响应温度天气状况湿度风速格式化输出️ [城市名] 天气预报 - 温度XX°C - 天气XX - 湿度XX% - 风速XX m/s 更新时间XXXX-XX-XX输出格式使用 emoji 和列表清晰展示天气信息。依赖WEATHER_API_KEY 环境变量curl 命令示例用户北京天气怎么样AI:️ 北京天气预报温度25°C天气晴湿度60%风速3 m/s更新时间2026-04-01 10:00“”### 2.4 添加脚本 python # scripts/query_weather.py import requests import os import sys def query_weather(city): 查询天气 Args: city: 城市名 api_key os.environ.get(WEATHER_API_KEY) if not api_key: return {error: WEATHER_API_KEY 未配置} url https://api.weather.com/v1/current params { city: city, key: api_key, lang: zh } try: response requests.get(url, paramsparams, timeout10) response.raise_for_status() data response.json() return { city: data[city], temperature: data[temperature], condition: data[condition], humidity: data[humidity], wind_speed: data[wind_speed], update_time: data[update_time] } except Exception as e: return {error: str(e)} if __name__ __main__: if len(sys.argv) 2: print(用法python query_weather.py 城市名) sys.exit(1) city sys.argv[1] result query_weather(city) if error in result: print(f❌ 错误{result[error]}) else: print(f️ {result[city]}天气预报) print(f- 温度{result[temperature]}°C) print(f- 天气{result[condition]}) print(f- 湿度{result[humidity]}%) print(f- 风速{result[wind_speed]} m/s)2.5 更新 SKILL.md 引用脚本--- name: weather-query description: 查询任意城市的天气预报 metadata: {openclaw: {requires: {bins: [python], env: [WEATHER_API_KEY]}}} --- # 天气查询技能 ## 功能 查询全球任意城市的天气预报。 ## 使用方法 当用户询问天气时 1. 提取城市名 2. 执行脚本 bash python {baseDir}/scripts/query_weather.py {city}解析输出格式化展示输出格式️ [城市名] 天气预报 - 温度XX°C - 天气XX - 湿度XX% - 风速XX m/s依赖WEATHER_API_KEY 环境变量Python 3.8requests 库“”--- ## 三、高级技能开发 ### 3.1 多步骤技能 markdown --- name:>步骤 2数据概览python{baseDir}/scripts/data_overview.py步骤 3统计分析python{baseDir}/scripts/statistical_analysis.py步骤 4生成可视化python{baseDir}/scripts/generate_charts.py步骤 5生成报告python{baseDir}/scripts/generate_report.py输出格式 数据分析报告 ## 数据概览 - 行数XXX - 列数XXX ## 统计信息 ... ## 可视化图表 [图表链接] ## 洞察发现 1. ... 2. ...依赖Python 3.8pandas, matplotlib, seaborn“”### 3.2 条件技能 markdown --- name: smart-reminder description: 智能提醒技能 metadata: {openclaw: {requires: {bins: [python]}}} --- # 智能提醒技能 ## 功能 根据上下文智能设置提醒。 ## 使用方法 当用户提到需要提醒时 ### 判断场景 1. **如果是会议提醒** - 提取时间、地点、参会人员 - 调用日历 API - 设置提前提醒 2. **如果是任务提醒** - 提取任务内容、截止时间 - 添加到待办列表 - 设置优先级提醒 3. **如果是生日/纪念日** - 提取日期、事件 - 添加到日历 - 设置每年重复 ### 执行脚本 python python {baseDir}/scripts/create_reminder.py \ --type {reminder_type} \ --time {time} \ --content {content}输出格式✅ 提醒已设置 类型{type} 时间{time} 内容{content} 提醒方式{notification_method}依赖Python 3.8系统通知权限“”### 3.3 组合技能 markdown --- name: content-publishing description: 内容发布技能 metadata: {openclaw: {requires: {bins: [python], env: [CMS_API_KEY]}}} --- # 内容发布技能 ## 功能 一键发布内容到多个平台。 ## 使用方法 当用户要发布内容时 ### 步骤 1内容格式化 调用 format-content 技能 ### 步骤 2SEO 优化 调用 seo-optimizer 技能 ### 步骤 3生成配图 调用 image-generator 技能 ### 步骤 4发布到平台 python python {baseDir}/scripts/publish.py \ --content {content} \ --platforms {platforms} \ --schedule {schedule}步骤 5确认发布返回发布结果和链接输出格式✅ 内容已发布 平台 - 微信公众号[链接] - 知乎[链接] - 掘金[链接] 发布时间{time} 预计阅读{read_time}依赖技能format-contentseo-optimizerimage-generator依赖Python 3.8CMS API Key“”--- ## 四、技能调试 ### 4.1 测试技能 bash # 1. 检查技能语法 openclaw skills check my-custom-skill/ # 2. 测试技能执行 openclaw skills test my-custom-skill --input 测试输入 # 3. 查看技能日志 openclaw skills logs my-custom-skill4.2 常见问题问题原因解决技能不生效SKILL.md 格式错误检查 YAML frontmatter依赖缺失环境变量未设置配置环境变量脚本失败路径错误使用{baseDir}变量权限问题文件无执行权限chmod x script.py4.3 调试技巧# scripts/debug_skill.pyimportlogging# 配置日志logging.basicConfig(levellogging.DEBUG,format%(asctime)s - %(name)s - %(levelname)s - %(message)s,filenameskill_debug.log)loggerlogging.getLogger(__name__)defmain():logger.info(技能执行开始)try:# 技能逻辑resultdo_something()logger.info(f技能执行成功{result})exceptExceptionase:logger.error(f技能执行失败{e},exc_infoTrue)raiseif__name____main__:main()五、技能发布5.1 发布到 ClawHub# 1. 注册 ClawHub 账号# https://clawhub.com# 2. 初始化技能包cdmy-custom-skill clawhub init# 3. 填写元数据# clawhub.yaml:# name: my-custom-skill# version: 1.0.0# description: 我的自定义技能# author: Your Name# 4. 发布clawhub publish# 5. 查看发布状态clawhub status5.2 技能版本管理# 查看版本clawhub versions my-custom-skill# 发布新版本# 更新 clawhub.yaml 中的 versionclawhub publish--version1.1.0# 回滚版本clawhub rollback my-custom-skill--version1.0.05.3 技能分享# 分享技能 ## 安装 bash clawhub install my-custom-skill配置exportMY_SKILL_API_KEYxxx使用用户使用 my-custom-skill 做 xxxAI: 好的我来处理…--- ## 六、OpenClaw 集成 ### 6.1 技能管理命令 bash # 列出所有技能 openclaw skills list # 启用技能 openclaw skills enable my-custom-skill # 禁用技能 openclaw skills disable my-custom-skill # 更新技能 openclaw skills update my-custom-skill # 卸载技能 openclaw skills uninstall my-custom-skill6.2 技能配置// ~/.openclaw/openclaw.json { skills: { entries: { my-custom-skill: { enabled: true, env: { MY_SKILL_API_KEY: xxx }, config: { timeout: 30, retry: 3 } } } } }总结核心要点技能结构SKILL.md 脚本 资源开发流程创建目录→编写 SKILL.md→添加脚本→测试高级技能多步骤、条件、组合调试技巧日志、测试命令发布分享ClawHub、版本管理配置管理环境变量、技能配置技能开发时间复杂度时间示例简单30 分钟天气查询中等2-4 小时数据分析复杂1-2 天内容发布下一步下一篇[OpenClaw 部署到服务器 24 小时在线](./19-OpenClaw 部署到服务器.md)学习如何将 OpenClaw 部署到服务器实现 24 小时在线。互动环节问题 1你想开发什么自定义技能问题 2开发技能时遇到过什么困难问题 3有什么技能想分享给大家欢迎在评论区留言字数约 9000 字阅读时间约 22 分钟难度⭐⭐⭐⭐ 中高级发布时间2026-04-01本文是《OpenClaw_AI 应用实战》专栏的第 18 篇共 20 篇。