OpenClaw 自定义 Skill 开发完整指南(最新版)

OpenClaw 自定义 Skill 开发完整指南(最新版)

OpenClaw
Skill
开发样例详解
OpenClaw
Skill 是构建
AI
Agent 扩展能力的核心模块,下面通过具体样例展示不同类型
Skill 的实现方式。 1. 纯文本描述型
Skill(零代码) 此类
Skill 仅通过 `
SKILL.md` 文件描述能力,无需编写代码: “`markdown # 计算器
技能 能力描述 我是一个智能计算器,可以帮您完成基本的数学运算,包括加减乘除、幂运算和平方根计算。 使用规则 – 用户可以用自然语言描述数学计算需求 – 支持整数、小数和负数的运算 – 复杂表达式会分步计算并解释过程 操作步骤 1. 解析用户输入中的数学表达式 2. 识别运算类型和数值 3. 执行计算并验证结果 4. 以清晰格式返回计算过程 输出格式 “` 计算过程: 输入:3 + 5 × 2 步骤:先计算 5 × 2 = 10,再计算 3 + 10 = 13 结果:13 “` “` 应用场景:简单的逻辑判断、信息查询、流程指导等不需要外部工具调用的场景 [ref_1]。 2.
Python 代码型
Skill(文件处理示例) 以下是一个文件内容统计
Skill
完整实现:
SKILL.md 文件: “`markdown # 文件统计分析
技能 能力描述 我可以分析指定文本文件的基本统计信息,包括行数、字数、字符数和文件大小。 权限声明 需要读取用户指定文件路径的权限。 工具调用 – file_analyzer: 分析文件统计信息 使用示例 “请分析 document.txt 文件的统计信息” “统计 report.md 的字数和行数” “`
skill.py 文件: “`
python import asyncio import os from typing import Dict, Any async def file_analyzer
(file_path: str
) -> Dict[str, Any]: “”” 分析文件统计信息 Args: file_path: 要分析的文件路径 Returns: 包含文件统计信息的字典 “”” try: # 检查文件是否存在 if not os.path.exists
(file_path
): return {“error”: f”文件 {file_path} 不存在”} # 获取文件大小 file_size = os.path.getsize
(file_path
) # 读取文件内容进行统计 with open
(file_path, ‘r’, encoding=’utf-8′
) as file: content = file.read
(
) lines = content.split
(‘ ‘
) # 统计信息 stats = { “file_path”: file_path, “file_size_bytes”: file_size, “file_size_kb”: round
(file_size / 1024, 2
), “line_count”: len
(lines
), “word_count”: len
(content.split
(
)
), “character_count”: len
(content
), “non_whitespace_chars”: len
(content.replace
(‘ ‘, ”
).replace
(‘ ‘, ”
)
) } return stats except Exception as e: return {“error”: f”分析文件时出错: {str
(e
)}”} # 异步函数注册 __all__ = [‘file_analyzer’] “` 测试验证: “`bash # 在
OpenClaw 环境中测试
openclaw –test-
skill file_stats “` 安全实践:文件操作类
Skill 必须明确声明权限需求,并在执行前验证文件路径合法性 [ref_3]。 3. API 集成型
Skill(天气查询) 基于国内 API 服务的天气查询
Skill
SKILL.md 文件: “`markdown # 国内天气查询 能力描述 我可以查询中国主要城市的实时天气信息,包括温度、湿度、风向和天气状况。 工具调用 – get_weather: 获取指定城市的天气信息 使用规则 – 支持城市中文名称查询 – 自动处理城市名称模糊匹配 – 返回结构化天气数据 输出格式 以表格形式展示天气信息,包含温度区间、体感温度和建议。 “`
skill.py 文件: “`
python import asyncio import
aiohttp import json from typing import Dict, List async def get_weather
(city_name: str
) -> Dict[str, Any]: “”” 获取城市天气信息(使用国产 uapis.cn API) Args: city_name: 城市名称,如”北京”、”上海” Returns: 结构化天气信息 “”” # API 配置(示例配置,实际需要申请密钥) API_URL = “https://api.uapis.cn/weather/query” API_KEY = “your_api_key_here” # 需要在实际使用时替换 try: async with
aiopenclawohttp.ClientSession
(
) as session: params = { “city”: city_name, “key”: API_KEY } async with session.get
(API_URL, params=params
) as response: if response.status == 200: data = aw
ait response.json
(
) # 解析返回数据 weather_info = °C – °C”, “current_temp”: f”°C”, “weather”: data.get
(“weather”, “未知”
), “humidity”: f”%”, “wind”: data.get
(“wind”, “未知”
), “update_time”: data.get
(“reporttime”, “未知”
) } return weather_info else: return {“error”: f”API 请求失败: {response.status}”} except Exception as e: return {“error”: f”获取天气信息失败: {str
(e
)}”} __all__ = [‘get_weather’] “` 部署配置: “`bash #
技能目录结构 ~/.
openclaw/
skills/weather_query/ ├──
SKILL.md ├──
skill.py └── config.json # 可选配置文件 “` 4. 混合型
Skill(文本处理 + 文件输出) 结合自然语言处理和文件操作的复杂
Skill
SKILL.md 文件: “`markdown # 文本摘要生成器 能力描述 我可以对长文本进行智能摘要,生成核心要点,并支持保存摘要结果到文件。 权限声明 需要读取输入文件和写入输出文件的权限。 工具调用 – generate_summary: 生成文本摘要 – save_summary_to_file: 保存摘要到指定文件 操作步骤 1. 读取源文本内容 2. 提取关键信息和核心观点 3. 生成结构化摘要 4. 可选保存到输出文件 “`
skill.py 文件: “`
python import asyncio import os from typing import Dict, List async def generate_summary
(text: str, max_length: int = 200
) -> Dict[str, str]: “”” 生成文本摘要 Args: text: 输入文本 max_length: 摘要最大长度 Returns: 包含摘要和关键点的字典 “”” # 简单的摘要生成逻辑(实际可集成更复杂的 NLP 模型) sentences = text.split
(‘。’
) key_sentences = sentences[:3] # 取前三个句子作为摘要 summary = ‘。’.join
(key_sentences
) + ‘。’ # 提取关键词(简化示例) keywords = list
(set
([word for word in text.split
(
) if len
(word
) > 1]
)
)[:5] return { “summary”: summary[:max_length], “key_points”: keywords, “original_length”: len
(text
), “summary_length”: len
(summary
) } async def save_summary_to_file
(summary_data: Dict, output_path: str
) -> Dict[str, str]: “”” 保存摘要到文件 Args: summary_data: 摘要数据 output_path: 输出文件路径 Returns: 操作结果信息 “”” try: with open
(output_path, ‘w’, encoding=’utf-8′
) as f: f.write
(f”文本摘要报告 ”
) f.write
(f”============ ”
) f.write
(f”摘要内容: {summary_data[‘summary’]} ”
) f.write
(f”关键点: {‘, ‘.join
(summary_data[‘key_points’]
)} ”
) f.write
(f”原文长度: {summary_data[‘original_length’]} 字符 ”
) f.write
(f”摘要长度: {summary_data[‘summary_length’]} 字符 ”
) f.write
(f”压缩率: {1 – summary_data[‘summary_length’]/summary_data[‘original_length’]:.1%} ”
) return {“status”: “success”, “message”: f”摘要已保存到: {output_path}”} except Exception as e: return {“status”: “error”, “message”: f”保存失败: {str
(e
)}”} __all__ = [‘generate_summary’, ‘save_summary_to_file’] “` 5.
Skill
开发关键要点总结 |
技能类型 | 核心文件 | 技术要点 | 适用场景 | |———|———-|———-|———-| | 纯文本型 |
SKILL.md | 自然语言描述、结构化输出 | 简单查询、流程指导 [ref_1] | |
Python 代码型 |
SKILL.md +
skill.py | 异步函数、工具调用、错误处理 | 文件操作、数据处理 [ref_5] | | API 集成型 |
SKILL.md +
skill.py | HTTP 请求、数据解析、密钥管理 | 天气查询、数据获取 [ref_4] | | 混合复杂型 |
完整
技能包 | 多工具协作、权限管理 | 文本处理、自动化任务 [ref_6] |
开发流程验证: “`bash # 1. 创建
技能目录 mkdir -p ~/.
openclaw/
skills/my_
skill # 2. 编写核心文件 cd ~/.
openclaw/
skills/my_
skill touch
SKILL.md
skill.py # 3. 启用调试模式 export
OPENCLAW_DEBUG=true # 4. 重启 Gateway 加载
技能
openclaw gateway restart # 5. 测试
技能功能
openclaw –test-
skill my_
skill “` 安全注意事项: – 所有文件操作必须进行路径验证和权限检查 [ref_3] – API 密钥等敏感信息应使用环境变量或配置文件管理 – 输入数据需要进行 sanitization 处理,防止注入攻击 通过以上样例可以看出,
OpenClaw
Skill
开发具有高度的灵活性,从简单的文本描述到复杂的代码集成都能很好支持。
开发者可以根据具体需求选择合适的
Skill 类型,遵循 MCP 协议规范,构建安全可靠的
AI
Agent 扩展能力 [ref_2]。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/256675.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月13日 上午10:55
下一篇 2026年3月13日 上午10:55


相关推荐

关注全栈程序员社区公众号