技能系统入门
技能(Skills)是 OpenClaw 的扩展机制,让 AI 能够操作外部工具和服务。从发送邮件、控制智能家居到搜索网页,技能赋予了 AI 与真实世界交互的能力。本文将全面介绍技能系统的架构、安装和配置。
技能是什么
一个技能本质上是 一个目录,包含描述文件和支持文件:
my-skill/
├── SKILL.md # 技能描述文件(必需)
├── config.yaml # 技能配置(可选)
├── handler.js # 工具实现逻辑(可选)
└── README.md # 使用说明(可选)SKILL.md — 技能的核心
SKILL.md 是 AI 理解技能用途和使用方法的关键文件。它用自然语言描述了技能提供的工具和使用规则:
# Email Skill
This skill provides email sending and reading capabilities.
## Tools
### send_email
Send an email to a recipient.
- `to` (required): Email address
- `subject` (required): Email subject
- `body` (required): Email content
### read_inbox
Read recent emails from the inbox.
- `limit` (optional): Number of emails to return (default: 10)
## Rules
- Always confirm with the user before sending emails
- Never send emails to addresses not explicitly provided技能与工具的关系
技能(Skill)= 一组相关工具(Tools)的集合
├── 工具 A(如 send_email)
├── 工具 B(如 read_inbox)
└── 工具 C(如 search_email)一个技能可以提供多个工具,这些工具共享配置(如 API Key)和上下文。
三个加载位置及优先级
OpenClaw 从三个位置加载技能,按 优先级从高到低:
1. Workspace Skills(工作区技能)— 最高优先级
~/.openclaw/workspace/skills/
├── my-custom-skill/
│ └── SKILL.md
└── another-skill/
└── SKILL.md- 存放在你的工作区目录中
- 适合自定义技能或本地开发中的技能
- 优先级最高:同名技能会覆盖其他位置的版本
2. Managed Skills(托管技能)— 中等优先级
~/.openclaw/skills/
├── email/
│ └── SKILL.md
└── calendar/
└── SKILL.md- 通过
clawhub install安装的技能 - 由 ClawdHub 市场管理和更新
- 优先级中等
3. Bundled Skills(内置技能)— 最低优先级
/usr/lib/openclaw/skills/ # 系统安装位置
├── web-search/
│ └── SKILL.md
├── file-ops/
│ └── SKILL.md
└── memory/
└── SKILL.md- OpenClaw 安装时自带的核心技能
- 包括文件操作、Web 搜索、记忆管理等基础功能
- 优先级最低:可被上层同名技能覆盖
优先级覆盖示例
假设三个位置都有 "web-search" 技能:
workspace/skills/web-search/ → ✅ 使用这个(最高优先级)
~/.openclaw/skills/web-search/ → ❌ 被覆盖
bundled/skills/web-search/ → ❌ 被覆盖这让你可以 定制内置技能的行为,而无需修改系统文件。
ClawdHub 技能市场
ClawdHub 是 OpenClaw 的官方技能市场,提供社区维护的各种技能。
搜索技能
# 搜索可用技能
clawhub search email
clawhub search "smart home"
# 查看技能详情
clawhub info email-gmail安装技能
# 安装技能
clawhub install email-gmail
# 安装特定版本
clawhub install email-gmail@1.2.0
# 安装到 workspace 而非 managed 目录
clawhub install email-gmail --workspace更新技能
# 更新单个技能
clawhub update email-gmail
# 更新所有已安装技能
clawhub update --all
# 查看可更新的技能
clawhub outdated卸载技能
# 卸载技能
clawhub uninstall email-gmail
# 列出已安装技能
clawhub list技能配置
安装技能后,通常需要在 openclaw.yaml 中进行配置。
skills.entries 配置
# openclaw.yaml
skills:
entries:
# 启用邮件技能并配置
email-gmail:
enabled: true
apiKey: "${GMAIL_API_KEY}"
env:
GMAIL_USER: "your@gmail.com"
# 启用日历技能
calendar-google:
enabled: true
apiKey: "${GOOGLE_CALENDAR_KEY}"
# 禁用某个内置技能
web-search:
enabled: false
# 技能自定义参数
smart-home:
enabled: true
env:
HOME_ASSISTANT_URL: "http://192.168.1.100:8123"
HOME_ASSISTANT_TOKEN: "${HA_TOKEN}"enabled 控制
skills:
entries:
# 显式启用
my-skill:
enabled: true
# 显式禁用
dangerous-skill:
enabled: false
# 未指定 enabled → 默认启用(如果已安装)
another-skill:
apiKey: "${API_KEY}"环境变量传递
技能可以接收环境变量作为配置:
skills:
entries:
my-skill:
enabled: true
# 方式 1:直接设置 API Key
apiKey: "${MY_SKILL_API_KEY}"
# 方式 2:通过 env 传递多个变量
env:
DATABASE_URL: "postgresql://localhost/mydb"
CACHE_TTL: "3600"
DEBUG: "false"# 也可以在环境变量中设置
export MY_SKILL_API_KEY="sk-xxxxx"技能门控
技能可以通过 元数据门控 声明自己需要的前置条件。
metadata.openclaw.requires
在 SKILL.md 或 config.yaml 中声明需求:
# config.yaml
metadata:
openclaw:
requires:
# 需要特定平台
platform:
- "macos"
- "linux"
# 需要特定通道
channel:
- "discord"
- "telegram"
# 需要其他技能
skills:
- "web-fetch" # 依赖 web-fetch 技能
# 需要特定能力
capabilities:
- "filesystem" # 需要文件系统访问
- "network" # 需要网络访问门控行为
当技能的 requires 条件不满足时:
条件不满足 → 技能自动禁用(不会报错)
↓
AI 看不到该技能提供的工具
↓
如果 AI 尝试调用 → 返回工具不可用错误这确保了技能只在合适的环境中运行,避免在不兼容的平台上出错。
安全注意事项
技能系统是 OpenClaw 中 最需要关注安全的部分,因为技能直接与外部系统交互。
1. 审查技能来源
# 安装前查看技能内容
clawhub info suspicious-skill --full
# 查看技能的 SKILL.md 了解它能做什么
cat ~/.openclaw/skills/suspicious-skill/SKILL.md只安装你信任的技能。第三方技能可能包含恶意代码。
2. 最小权限原则
# 只启用你实际需要的技能
skills:
entries:
email-gmail:
enabled: true # 确实需要发邮件
file-delete:
enabled: false # 不需要就禁用
system-exec:
enabled: false # 危险!除非确实需要3. API Key 安全
# ✅ 使用环境变量
export SKILL_API_KEY="sk-xxxxx"
# ✅ 使用 .env 文件
echo 'SKILL_API_KEY=sk-xxxxx' >> ~/.openclaw/.env
# ❌ 不要硬编码在配置文件中
# apiKey: "sk-xxxxx" # 可能被提交到 Git!4. 工具策略配合
通过 tools.profile 进一步限制技能可以执行的操作:
# 参见安全加固章节
tools:
profile: "restricted"
allow:
- "send_email"
- "read_inbox"
deny:
- "delete_all_emails" # 明确禁止危险操作5. 定期更新
# 定期检查并更新技能
clawhub outdated
clawhub update --all及时更新可以获取安全补丁和 bug 修复。
创建自定义技能
如果市场上没有你需要的技能,可以自己创建:
# 创建技能目录
mkdir -p ~/.openclaw/workspace/skills/my-custom-skill
# 编写 SKILL.md
cat > ~/.openclaw/workspace/skills/my-custom-skill/SKILL.md << 'EOF'
# My Custom Skill
这个技能提供了自定义功能。
## Tools
### my_tool
描述你的工具做什么。
- `param1` (required): 参数说明
- `param2` (optional): 可选参数说明
## Rules
- 在执行危险操作前询问用户确认
EOF将技能放在 workspace/skills/ 目录下即可自动加载,无需安装步骤。
技能系统让 OpenClaw 从一个聊天机器人进化为一个真正的智能代理平台。合理选择和配置技能,你的 AI 助手将能够完成越来越多的实际任务。
💬 有问题或建议? 欢迎在下方评论区留言讨论。
Last updated on