OpenClaw 技能开发指南:构建自定义智能助手能力

Posted on Thu 09 April 2026 in 技术教程

9.构建自定义智能助手能力

引言

OpenClaw 的核心优势在于其可扩展的技能系统。通过技能开发,用户可以将特定的功能模块化,使 AI 助手能够执行从简单的文件操作到复杂的 API 集成等各种任务。本文作为 OpenClaw 系列教程的第九篇,将系统性地讲解技能开发的全过程,涵盖从基础概念到实战开发的完整知识体系。

1. 技能系统概述

1.1 什么是技能?

技能是 OpenClaw 的功能模块,每个技能对应一个特定的能力领域。OpenClaw 技能采用文档驱动设计,通过 SKILL.md 文件提供使用指导和最佳实践,而不是直接控制工具调用。

技能的核心作用: - 提供使用指南:告诉智能体何时使用特定功能 - 定义最佳实践:提供工具使用的正确方式和参数 - 设置使用边界:明确技能适用的场景和限制 - 提供示例代码:展示具体的命令行或工具调用示例

1.2 技能系统工作原理

OpenClaw 技能不是传统的插件系统,而是智能体的参考指南。其工作流程如下:

用户请求 → 智能体分析 → 匹配相关技能 → 参考 SKILL.md → 执行工具调用 → 返回结果
                              ↓
                        提供指导而非控制

1.3 技能与工具的关系

技能为工具使用提供上下文指导,而不是直接调用工具。智能体根据技能文档的指导,决定是否以及如何使用工具:

天气技能 SKILL.md:
  - 告诉智能体:当用户问天气时,可以使用 curl 查询 wttr.in
  - 提供具体的 curl 命令格式
  - 智能体参考这些信息,决定执行相应命令

2. 技能开发基础

2.1 技能文件结构

OpenClaw 技能通常是一个单独的 SKILL.md 文件,位于技能目录中。标准技能包含以下部分:

~/.npm-global/lib/node_modules/openclaw/skills/
├── skill-name/
│   └── SKILL.md      # 核心技能文档
└── other-skill/
    └── SKILL.md

2.2 SKILL.md 文件规范

SKILL.md 文件采用 Markdown 格式,通常包含以下结构:

---
name: skill-name
description: "技能简要描述"
metadata:
  {
    "openclaw":
      {
        "emoji": "🎯",
        "requires": { "bins": ["required-command"] },
      },
  }
---

# 技能标题

## When to Use**使用场景:**
- 场景1描述
- 场景2描述

## When NOT to Use**避免使用场景:**
- 不适用场景1
- 不适用场景2

## 具体实现
提供具体的命令示例、工具调用方式等。

## 示例
展示典型的使用案例。

## 注意事项
安全限制、性能考虑等。

3. 实战分析:天气查询技能

3.1 现有技能分析

OpenClaw 自带的天气技能(weather)提供了完整的实现参考。让我们分析其设计:

3.2 技能实现解析

查看实际的天气技能文件:

---
name: weather
description: "Get current weather and forecasts via wttr.in or Open-Meteo. Use when: user asks about weather, temperature, or forecasts for any location."
metadata:
  {
    "openclaw":
      {
        "emoji": "☔",
        "requires": { "bins": ["curl"] },
      },
  }
---

# Weather Skill

## When to Use**USE this skill when:**
- "What's the weather?"
- "Will it rain today/tomorrow?"
- "Temperature in [city]"
- "Weather forecast for the week"

## When NOT to Use**DON'T use this skill when:**
- Historical weather data
- Climate analysis or trends
- Severe weather alerts

## Commands

### Current Weather
```bash
# One-line summary
curl "wttr.in/London?format=3"

# Detailed current conditions
curl "wttr.in/London?0"

Forecasts

# 3-day forecast
curl "wttr.in/London"

# Week forecast
curl "wttr.in/London?format=v2"

Quick Responses

"What's the weather?"

curl -s "wttr.in/London?format=%l:+%c+%t+(feels+like+%f),+%w+wind,+%h+humidity"

Notes

  • No API key needed (uses wttr.in)
  • Rate limited; don't spam requests
  • Works for most global cities
### 3.3 设计要点

1. **清晰的边界定义**明确说明何时使用和何时不使用
2. **具体的命令示例**提供可直接运行的 curl 命令
3. **格式选项丰富**展示不同的输出格式
4. **实用注意事项**包含速率限制等实际考虑

## 4. 高级技能设计GitHub 信息查询

### 4.1 技能设计思路

虽然 OpenClaw 技能本身不包含自动化监控逻辑但可以设计一个 GitHub 信息查询技能提供获取仓库状态的指导这样的技能应该
- 提供查询 GitHub 仓库信息的命令示例
- 说明如何检查最新提交问题或发布
- 给出处理 API 限制的建议
- 提供常见查询场景的解决方案

### 4.2 技能设计示例

```markdown
---
name: github-info
description: "Get information about GitHub repositories, including commits, issues, and releases."
metadata:
  {
    "openclaw":
      {
        "emoji": "🐙",
        "requires": { "bins": ["curl", "jq"] },
      },
  }
---

# GitHub Repository Information

## When to Use
 **USE this skill when:**
- "Check latest commits for [repo]"
- "What's new in [project]"
- "GitHub repository status"
- "Recent releases of [library]"

## When NOT to Use
 **DON'T use this skill when:**
- Real-time monitoring needed → use GitHub Actions or webhooks
- Automated notifications → use GitHub Watch feature
- Bulk data analysis → use GitHub API directly with scripts

## Basic Queries

### Latest Commits
```bash
# Get latest 5 commits
curl -s -H "Accept: application/vnd.github.v3+json" \
  https://api.github.com/repos/openclaw/openclaw/commits?per_page=5 | \
  jq '.[] | {sha: .sha[:7], author: .commit.author.name, message: .commit.message[:50]}'

Recent Releases

# Get latest release
curl -s -H "Accept: application/vnd.github.v3+json" \
  https://api.github.com/repos/openclaw/openclaw/releases/latest | \
  jq '{name: .name, tag: .tag_name, published: .published_at, url: .html_url}'

Open Issues

# Get open issues
curl -s -H "Accept: application/vnd.github.v3+json" \
  "https://api.github.com/repos/openclaw/openclaw/issues?state=open&per_page=5" | \
  jq '.[] | {number: .number, title: .title, user: .user.login}'

Rate Limiting

GitHub API has rate limits (60 requests per hour for unauthenticated requests):

# Check rate limit status
curl -s -H "Accept: application/vnd.github.v3+json" \
  https://api.github.com/rate_limit | \
  jq '.resources.core'

Authentication (Optional)

For higher rate limits, use a personal access token:

# With authentication
curl -s -H "Authorization: token YOUR_TOKEN" \
  -H "Accept: application/vnd.github.v3+json" \
  https://api.github.com/repos/openclaw/openclaw/commits

Notes

  • Respect GitHub's rate limits
  • Use jq for JSON parsing (install via package manager)
  • For frequent queries, consider caching results
  • Authenticated requests have higher limits (5000/hour)
## 5. 技能开发最佳实践

### 5.1 设计原则

1. **单一职责原则**:每个技能只负责一个明确的功能领域
2. **明确边界**:清晰定义技能的输入、输出和副作用
3. **可配置性**:提供必要的配置选项,适应不同使用场景
4. **向后兼容**:技能更新时保持接口兼容性

### 5.2 文档规范

完整的技能文档应包括:

```markdown
## 版本历史
- v1.0.0 (2026-04-09): 初始版本,基础天气查询
- v1.1.0 (2026-04-16): 添加多日预报和缓存支持

## 依赖说明
- 需要网络连接
- 依赖 wttr.in 或 OpenWeatherMap API

## 性能考虑
- API 调用频率限制
- 响应时间优化
- 内存使用监控

## 安全注意事项
- 输入验证和清理
- API 密钥管理(如使用付费 API)
- 数据隐私保护

5.3 测试策略

  1. 单元测试:验证单个功能的正确性
  2. 集成测试:测试技能与工具的协同工作
  3. 性能测试:评估响应时间和资源消耗
  4. 兼容性测试:确保在不同环境下的稳定性

6. 调试与优化

6.1 常见问题排查

技能不被识别

# 检查技能文件位置
ls -la ~/.npm-global/lib/node_modules/openclaw/skills/

# 查看可用技能列表
openclaw skills list

# 检查技能文件格式
grep -n "^---" ~/.npm-global/lib/node_modules/openclaw/skills/weather/SKILL.md

技能使用问题

由于技能是指导性文档而非执行代码,调试主要关注: 1. 技能匹配:智能体是否正确识别了使用场景 2. 命令正确性:提供的示例命令是否有效 3. 边界清晰度:使用/不使用条件是否明确

6.2 技能优化建议

  1. 完善使用场景:明确列出所有适用情况
  2. 提供具体示例:包含可直接运行的命令
  3. 设置清晰边界:避免技能被误用
  4. 包含实用提示:如速率限制、依赖要求等

6.2 性能优化技巧

  1. 缓存策略:对频繁查询的数据实施缓存
  2. 批量处理:合并多个小请求为单个大请求
  3. 异步执行:对耗时操作采用异步处理
  4. 资源限制:设置合理的并发数和频率限制

7. 技能部署与分发

7.1 技能安装位置

OpenClaw 技能通常安装在以下位置:

# 系统技能目录(npm 全局安装)
~/.npm-global/lib/node_modules/openclaw/skills/

# 自定义技能目录
~/.openclaw/skills/  # 用户自定义技能位置

7.2 创建自定义技能

要创建自定义技能,可以在用户目录下创建:

# 创建自定义技能目录
mkdir -p ~/.openclaw/skills/my-custom-skill

# 创建 SKILL.md 文件
cat > ~/.openclaw/skills/my-custom-skill/SKILL.md << 'EOF'
---
name: my-custom-skill
description: "My custom skill description"
---

# My Custom Skill

## When to Use
- When user needs specific functionality

## Implementation
Provide guidance and examples here.
EOF

7.2 社区分享

将技能分享给 OpenClaw 社区的步骤:

  1. 代码整理:确保代码质量和文档完整性
  2. 许可证选择:选择合适的开源许可证(如 MIT、Apache 2.0)
  3. 仓库创建:在 GitHub 或 GitLab 创建技能仓库
  4. 文档编写:提供详细的安装和使用说明
  5. 社区提交:在 OpenClaw Discord 社区分享链接

7.3 版本管理

为技能添加版本控制:

## 版本历史

### v1.2.0 (2026-04-23)
- 新增:支持多语言城市名称
- 优化:缓存策略改进
- 修复:时区处理问题

### v1.1.0 (2026-04-16)
- 新增:多日天气预报支持
- 优化:错误处理机制
- 文档:添加详细使用示例

### v1.0.0 (2026-04-09)
- 初始版本发布
- 基础天气查询功能
- 支持中文城市名称

8. 实用技能设计思路

8.1 文件整理指导技能

技能目的:提供文件整理的最佳实践和命令示例

技能内容示例

---
name: file-organizer
description: "Guidance for organizing files by type, date, or project."
---

# File Organization Guidance

## When to Use
- "Organize my downloads folder"
- "Sort files by type"
- "Clean up old files"

## Command Examples

### Organize by File Type
```bash
# Create directories for different file types
mkdir -p ~/Downloads/{images,docs,archives,code}

# Move files to appropriate directories
mv ~/Downloads/*.jpg ~/Downloads/*.png ~/Downloads/*.gif ~/Downloads/images/ 2>/dev/null || true
mv ~/Downloads/*.pdf ~/Downloads/*.doc ~/Downloads/*.docx ~/Downloads/docs/ 2>/dev/null || true
mv ~/Downloads/*.zip ~/Downloads/*.tar ~/Downloads/*.gz ~/Downloads/archives/ 2>/dev/null || true

Find and Remove Old Files

# Find files older than 30 days
find ~/Downloads -type f -mtime +30 -exec ls -la {} \;

# Remove files older than 90 days (with confirmation)
find ~/Downloads -type f -mtime +90 -exec rm -i {} \;

Notes

  • Always backup important files before bulk operations
  • Use -i flag for interactive deletion
  • Consider using trash command instead of rm for recoverable deletion
### 8.2 笔记整理指导技能

**技能目的**:提供从各种来源整理笔记的方法

**技能内容示例**
```markdown
---
name: note-organizer
description: "Guidance for collecting and organizing notes from various sources."
---

# Note Organization Guidance

## When to Use
- "Organize my reading notes"
- "Combine notes from different sources"
- "Create a summary from meeting notes"

## Source-Specific Guidance

### From Kindle Highlights
```bash
# Kindle highlights are usually in My Clippings.txt
# Extract and format highlights
grep -A1 -B1 "Your Highlight" ~/Documents/My\ Clippings.txt | \
  sed 's/==========/---/g' > ~/Documents/kindle_highlights.md

From Web Articles

# Use readability tools to extract main content
# Install readability-cli if needed
# npm install -g readability-cli
readable https://example.com/article > ~/Documents/article_summary.md

Combining Multiple Notes

# Combine markdown files with headers
for file in ~/Documents/notes/*.md; do
  echo "# $(basename "$file" .md)" >> combined_notes.md
  echo "" >> combined_notes.md
  cat "$file" >> combined_notes.md
  echo -e "\n---\n" >> combined_notes.md
done

Notes

  • Maintain consistent formatting across notes
  • Use tags or categories for easy searching
  • Regular review and cleanup of old notes ```

9. 正确理解 OpenClaw 技能

9.1 技能的本质

需要明确的是,OpenClaw 技能不是传统意义上的插件或扩展。它们不包含可执行代码,也不直接控制工具调用。技能的本质是:

  1. 指导性文档:为智能体提供使用特定功能的指南
  2. 最佳实践集合:汇集了完成特定任务的有效方法
  3. 使用边界定义:明确说明何时使用和何时不使用
  4. 命令示例库:提供可直接运行或参考的命令

9.2 技能的局限性

理解技能的局限性同样重要: - 不包含自动化逻辑:技能本身不会自动执行任何操作 - 不控制工具调用:智能体参考技能内容,但自主决定是否及如何使用工具 - 不保证执行结果:技能质量取决于文档的完整性和准确性 - 需要智能体理解:技能效果依赖于智能体对文档的理解能力

9.3 技能的价值

尽管有上述局限性,技能仍然具有重要价值: - 知识标准化:将最佳实践文档化,避免重复探索 - 使用一致性:确保相同任务采用相似的处理方式 - 学习加速:新用户可以通过技能快速了解如何完成特定任务 - 质量提升:经过验证的方法可以提高任务完成质量

10. 总结

OpenClaw 技能系统为智能体提供了结构化的知识参考,使得 AI 助手能够更有效地完成特定类型的任务。通过本文的讲解,你应该已经掌握了:

  1. 技能的正确理解:技能是指导性文档,而非执行代码
  2. 技能文件结构:SKILL.md 的标准格式和内容要求
  3. 技能设计原则:如何创建清晰、实用的技能文档
  4. 实际案例分析:通过现有技能学习最佳实践
  5. 技能部署方法:如何创建和安装自定义技能

创建优秀的 OpenClaw 技能需要: - 清晰的场景定义:明确说明技能适用的具体场景 - 实用的命令示例:提供可直接运行或修改的命令 - 完整的边界说明:避免技能被误用于不合适的场景 - 详细的注意事项:包含依赖、限制、安全考虑等信息

随着 OpenClaw 生态系统的发展,技能库的丰富将为用户提供更多高质量的任务指导。无论是简单的文件操作,还是复杂的数据查询,都可以通过精心设计的技能文档获得更好的支持。


系列文章导航 - 1. OpenClaw 核心概念详解 - 2. OpenClaw 安装指南 - 3. OpenClaw 配置指南 - 4. OpenClaw 基本应用指南 - 5. OpenClaw TUI 使用指南 - 6. OpenClaw WebUI 使用指南 - 7. OpenClaw QQBot 集成指南 - 8. OpenClaw 微信 ClawBot 指南 - 9. OpenClaw 技能开发指南(本文)

相关资源 - OpenClaw 官方文档 - OpenClaw GitHub 仓库 - 技能开发示例 - OpenClaw 社区 Discord

本文基于 OpenClaw v1.0.0 编写,内容更新于 2026年4月9日。技能开发的具体实现可能随版本更新而变化,建议查阅最新官方文档获取最新信息。