
扩展 OpenClaw 的自定义技能
你可能经常运行一些工作流程:开会前查看日历、搜索笔记应用、发布到社交媒体、控制智能家居设备。这些任务都有一定的规律性。
技能可让你一次性教会 OpenClaw 这些模式,使其今后能够自动处理。
技能是一个包含 SKILL.md 文件的文件夹,还可选择性地包含脚本、配置文件或其他资源。该 Markdown 文件包含 YAML 前置元数据(名称、描述、要求)以及逐步操作说明,这些说明将被加载到代理的上下文中。
当您的请求匹配某个技能时,代理会遵循这些指令,而不是从头开始自行推理。技能还可以捆绑用于复杂工作流的辅助脚本,因此代理所需的一切都集中在一个地方。
格式遵循 AgentSkills 规范,这是一项由 Anthropic 最初开发的开放标准,现已在生态系统中广泛采用:Claude Code、Cursor、VS Code、OpenAI Codex、Gemini CLI、GitHub Copilot 等。
如果你熟悉 Claude Agent SDK,你就会认出这个模式。为 OpenClaw 构建一个技能,它就能在任何兼容 AgentSkills 的工具中使用。
这是 GitHub 技能的前言部分的样式:
---
name: github
description: Interact with GitHub using the gh CLI.
metadata: {"openclaw":{"requires":{"bins":["gh"]}}}
---
requires.bins 字段表示此技能仅在安装了 gh 时才会加载。技能还可以要求环境变量(如 API 密钥)或特定的配置标志。如果某个依赖条件未满足,该技能将保持休眠状态,直到你安装了相应的依赖项。
内置的 OpenClaw 技能
OpenClaw 随附 49 个内置技能,涵盖常见工作流程。运行 openclaw skills list 可查看您的系统上已准备就绪的技能。
- 苹果生态系统 :备忘录、提醒事项、Things 3、Bear 备忘录。向 OpenClaw 提出添加提醒或搜索备忘录的请求,它会自动识别正确的命令行指令。
- Google Workspace:通过
gog命令行工具使用 Gmail、日历、云端硬盘、文档和表格。需要进行 OAuth 设置,之后你可以询问“我明天的日程安排是什么”或“给 Sarah 的那封邮件草拟一封回复。” - 通讯 :Slack、iMessage、Twitter/X。发布推文,回复 Slack 消息,或搜索你的 iMessage 历史记录。
- 智能家居 : Philips Hue、Sonos、Eight Sleep。控制灯光、播放音乐、调节床铺温度。
- 开发工具 : GitHub CLI 用于处理问题和拉取请求,一个可启动 Claude Code 作为子进程的编码代理技能,以及用于语音转录的 Whisper。
大多数技能都封装了现有的命令行工具。如果底层二进制文件缺失,该技能将显示为不可用,直到你安装它。
创建您自己的 OpenClaw 技能
内置技能可以处理常见任务,但真正的价值在于为自己的工作流程创建自定义技能。以图像编辑为例:你用手机拍照,但调整尺寸和添加水印通常需要坐在电脑前完成。通过自定义技能,你可以在外出时直接通过 WhatsApp 执行这一工作流程。
我让 OpenClaw 创建一个技能,用于将图像调整到任意分辨率并添加一个通用的徽标,徽标位于 ~/Documents/logo.png。它使用内置的 skill-creator 工具编写了一个使用 PIL 的 Python 脚本,生成了文件夹结构,并创建了一个包含使用示例的 SKILL.md。
该技能已放置在工作区的 skills/ 文件夹中,并在下次会话中自动加载。为了测试,我发送了 OpenClaw 首页的截图,并要求 OpenClaw 将其调整为适合 LinkedIn 的尺寸并添加水印。
几秒钟后,我的图片就回来了,已加上水印,随时可以发布。这项技能现在永久保存在我的电脑上,我随时都可以通过手机调用。
如果你想获得灵感或更倾向于复用他人已构建的内容,请查看 awesome-openclaw-skills。该仓库收录了 565 个以上的社区技能,其中一些优秀示例:
- 特斯拉 :锁车、启动空调、检查充电状态。当你步行前往停车场时,想让空调提前运行,这个功能非常实用。
- Home Assistant:全面的智能家居控制。“无论身在何处,都能随时关闭客厅的灯。”
- 野餐 :订购杂货。在聊天中搜索商品,加入购物车,并安排送货时间。
OpenClaw 的高级功能
到目前为止的例子展示了 OpenClaw 作为一个响应式助手:你提出问题,它就会采取行动。但有三个功能让它超越了基础聊天的范畴。
- 持久内存可让代理记住您在不同会话和平台间的偏好。
- 主动监控意味着它可以在无需您主动触发的情况下主动联系您。
- 而沙箱机制解决了显而易见的担忧:拥有终端访问权限的 AI 需要有约束机制。
持久内存与自定义
OpenClaw 将其上下文存储在 ~/clawd/ 目录下的 Markdown 文件中。每个文件都有其特定用途:
SOUL.md 定义了代理如何进行交流。个性、语气、界限。以下是其默认的初始设置:
# SOUL.md - Who You Are
*You're not a chatbot. You're becoming someone.*
## Core Truths
**Be genuinely helpful, not performatively helpful.** Skip the "Great question!"
and "I'd be happy to help!" — just help. Actions speak louder than filler words.
**Have opinions.** You're allowed to disagree, prefer things, find stuff amusing
or boring. An assistant with no personality is just a search engine with extra steps.
**Be resourceful before asking.** Try to figure it out. Read the file. Check the
context. Search for it. *Then* ask if you're stuck.
AGENTS.md 定义了代理在每次会话中应执行的任务以及行为方式。它包含安全规则、群聊礼仪,以及使用工具的说明。开头部分:
# AGENTS.md - Your Workspace
This folder is home. Treat it that way.
## Every Session
Before doing anything else:
1. Read SOUL.md — this is who you are
2. Read USER.md — this is who you're helping
3. Read memory/YYYY-MM-DD.md (today + yesterday) for recent context
4. **If in MAIN SESSION** (direct chat with your human): Also read MEMORY.md
USER.md 保存了关于你的信息 。当你让 OpenClaw 记住某件事时,信息就会存放在这里。在我告诉代理我喜欢《绝命毒师》之后:
# USER.md - About Your Human
## Context
### Entertainment Preferences
- **TV Shows:** Loves Breaking Bad
IDENTITY.md 是代理定义 自身 的地方:其名称、风格、表情符号和头像。您可以在设置过程中填写这些信息,或让代理自行选择。
文档中提到了两个额外的文件,但它们是按需创建的:
MEMORY.md:长期整理的记忆。当代理有值得在日常笔记之外保留的内容时,便会创建此文件。出于隐私考虑,仅在主会话(非群聊)中加载。memory/YYYY-MM-DD.md:每日笔记。记录发生事件的原始日志。当代理首次需要写入笔记时,会创建memory/目录。
要修改这些文件中的任意一个,只需提出要求即可。“将 SOUL.md 更新得更简洁。”“在 USER.md 中添加我从事金融科技行业。”该代理会直接编辑文件,且更改将在不同会话和平台间持续保留。
主动警报与监控
大多数 AI 代理需要你提出问题才会响应,而 OpenClaw 可以通过两种机制主动发起联系。
心跳 会定期检查并将检查结果批量合并为一次操作。要设置它,请:
- 使用清单编辑
~/clawd/HEARTBEAT.md以监控各项内容:
# Heartbeat checklist
- Check email for urgent messages
- Review calendar for events in next 2 hours
- If idle for 8+ hours, send a brief check-in
- 在
~/.clawdbot/clawdbot.json 中配置间隔时间: >
{
"agents": {
"defaults": {
"heartbeat": {
"every": "30m",
"activeHours": { "start": "08:00", "end": "22:00" }
}
}
}
}
- 重启网关:
openclaw gateway restart
在活跃时段每 30 分钟,OpenClaw 会执行一次检查清单。如果没有需要关注的问题,它将保持静默。
定时任务 用于处理精确、一次性或重复性任务。请在终端中运行以下命令:
# Daily morning briefing at 7am
openclaw cron add --name "Morning brief" --cron "0 7 * * *" --message "Weather, calendar, top emails"
# One-shot reminder in 2 hours
openclaw cron add --name "Call back" --at "2h" --session main --system-event "Call the client"
# List active cron jobs
openclaw cron list
# Remove a job by ID (get the ID from the list output)
openclaw cron rm <job-id>
区别在于:心跳机制将多个检查合并为一次执行,并共享主会话的上下文。而定时任务在精确的时间运行,可以使用具有全新上下文的独立会话。
使用心跳机制来“定期检查这些事项”。使用 cron 来“在特定时间执行特定任务”。如果你曾使用过 Claude Code 钩子 ,那么这种自动化模式会感觉很熟悉。
安全与沙箱机制
拥有 shell 访问权限的 AI 可能删除文件、泄露凭证,或通过提示注入执行恶意命令。安全研究人员已发现实际存在的漏洞:当网关位于未正确配置的反向代理之后时,存在身份验证绕过风险;当 Web 界面绑定到公共地址时,可能导致凭证泄露。
彼得·斯坦贝格推荐在专用硬件(如 Mac Mini 或 VPS)上运行 OpenClaw。
大多数用户不会这样做。如果你在主机器上运行,沙箱可以限制影响范围。
设置沙盒环境:
确保已安装并运行 Docker。
构建沙箱镜像。从 OpenClaw 源代码目录(即你克隆仓库的目录,或 npm 安装的目录):
./scripts/sandbox-setup.sh
- 将沙箱配置添加到
~/.clawdbot/clawdbot.json:
{
"agents": {
"defaults": {
"sandbox": {
"mode": "non-main",
"scope": "session",
"workspaceAccess": "ro"
}
}
}
}
- 重启网关:
openclaw gateway restart
这些设置的含义是:
mode 设置控制哪些会话会被隔离:
"off":不启用沙盒。这是默认设置,存在风险。"非主进程":沙箱将群聊和外部频道分组,同时您的主终端会话在主机上运行。适用于大多数用户。"all": 每个会话都以容器化方式运行。最安全,但会增加延迟。
设置 workspaceAccess 可控制沙盒会话可以访问的内容:
"none":隔离的工作区。代理完全无法查看您的文件。"ro":对~/clawd/的只读访问权限。代理可以读取但无法修改。"rw":完全读写访问权限。请谨慎使用。
需要了解的权衡之处:沙盒机制会因容器启动而增加延迟。由于容器默认没有网络访问权限,因此需要网络访问的技能无法正常工作。使用 tools.elevated 设置可完全绕过沙盒,因此请务必审核您允许的内容。无论怎样,仍存在一些平台限制:同一 WhatsApp 会话只能由一个网关拥有,而 iMessage 仅在 macOS 上可用。
一个 macOS 特有的问题: 在远程依赖 OpenClaw 之前,请在系统设置 → 隐私与安全性 → 完全磁盘访问中为您的终端应用程序授予完全磁盘访问权限。当你不在场时,权限提示不会出现,而被阻止的访问则会静默失败。
评论 (0)
还没有评论,来说两句吧!