OpenClaw(clawdbot)高级技巧

108260013-1770021196430-gettyimages-2258948071-TFSPI_31012026-4160.jpeg

扩展 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 可以通过两种机制主动发起联系。

心跳 会定期检查并将检查结果批量合并为一次操作。要设置它,请:

  1. 使用清单编辑 ~/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

  1. 在 ~/.clawdbot/clawdbot.json 中配置间隔时间: >
{
  "agents": {
    "defaults": {
    "heartbeat": {
        "every": "30m",
        "activeHours": { "start": "08:00", "end": "22:00" }
    }
    }
  }
}

  1. 重启网关: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。

大多数用户不会这样做。如果你在主机器上运行,沙箱可以限制影响范围。

设置沙盒环境:

  1. 确保已安装并运行 Docker。

  2. 构建沙箱镜像。从 OpenClaw 源代码目录(即你克隆仓库的目录,或 npm 安装的目录):

./scripts/sandbox-setup.sh

  1. 将沙箱配置添加到 ~/.clawdbot/clawdbot.json:
{
  "agents": {
    "defaults": {
    "sandbox": {
        "mode": "non-main",
        "scope": "session",
        "workspaceAccess": "ro"
    }
    }
  }
}

  1. 重启网关:openclaw gateway restart

这些设置的含义是:

mode 设置控制哪些会话会被隔离:

  • "off":不启用沙盒。这是默认设置,存在风险。
  • "非主进程":沙箱将群聊和外部频道分组,同时您的主终端会话在主机上运行。适用于大多数用户。
  • "all": 每个会话都以容器化方式运行。最安全,但会增加延迟。

设置 workspaceAccess 可控制沙盒会话可以访问的内容:

  • "none":隔离的工作区。代理完全无法查看您的文件。
  • "ro":对 ~/clawd/ 的只读访问权限。代理可以读取但无法修改。
  • "rw":完全读写访问权限。请谨慎使用。

需要了解的权衡之处:沙盒机制会因容器启动而增加延迟。由于容器默认没有网络访问权限,因此需要网络访问的技能无法正常工作。使用 tools.elevated 设置可完全绕过沙盒,因此请务必审核您允许的内容。无论怎样,仍存在一些平台限制:同一 WhatsApp 会话只能由一个网关拥有,而 iMessage 仅在 macOS 上可用。

一个 macOS 特有的问题: 在远程依赖 OpenClaw 之前,请在系统设置 → 隐私与安全性 → 完全磁盘访问中为您的终端应用程序授予完全磁盘访问权限。当你不在场时,权限提示不会出现,而被阻止的访问则会静默失败。

分享这篇文章

评论 (0)

还没有评论,来说两句吧!