给 OpenClaw 装上一个技能,就像给智能手机装一个 App——装个相机 App 就能拍照,装个音乐 App 就能听歌,手机还是那部手机。
插件和技能,不是一回事
很多人第一次接触 OpenClaw 的扩展体系时会混淆这两个概念。
如果之前用过 Claude Code ,注意这里的命名方式不同。Claude Code 里的 plugin 本质上是一组 skills 的打包——它不扩展运行时,只是把多个 skill 打包分发。OpenClaw 的 plugin 是真正的代码插件,和 Claude Code 的 plugin 概念不一样。
OpenClaw的插件扩展的是运行时能力。它给 OpenClaw 增加新的工具、新的消息渠道、新的模型提供商。
比如 Discord 插件让 OpenClaw 能接入 Discord。WhatsApp 插件让它能发消息到 WhatsApp。Codex 插件让它能调用 OpenAI 的 Codex 进行代码生成。
OpenClaw的技能扩展的是 Agent 的行为。它不增加新工具,而是教 Agent 怎么用已有的工具。
一个技能本质上是一个 Markdown 文件(SKILL.md),加上可选的脚本和配置文件。每次会话启动时,OpenClaw 加载这些文件,指令被注入到 Agent 的系统提示中。
插件是给 Agent 添武器,技能是教 Agent 怎么用武器。
两者通过 ClawHub 这个公共注册中心连接起整个生态。我们在这里先讲插件,再讲技能。
插件:给 Agent 添什么武器
插件是 Node.js 包,在运行时执行。它给 OpenClaw 增加对接外部工具的能力。
安装插件
openclaw plugins search "calendar"openclaw plugins install clawhub:<package>openclaw plugins update --allclawhub: 表示从 ClawHub 插件目录安装。OpenClaw 会验证插件的 pluginApi 和 minGatewayVersion 兼容性,不兼容的插件直接拒绝安装。
从 npm 安装也很简单:
openclaw plugins install npm:openclaw-codex-app-server官方插件
官方插件覆盖了主流通信渠道:
WhatsApp、Telegram、Discord、Microsoft Teams Nostr(加密私信)、Twitch、LINE Google Meet、Synology Chat、Nextcloud Talk
其他渠道(如飞书、企业微信)可通过社区插件或内置方式集成。
社区插件
社区插件更加多元:
- TickFlow Assist
——A 股投资与盯盘 - Apple PIM
——macOS 日历、提醒、联系人、邮件 - Lethe
——持久化记忆层 - Web Search Plus
——多搜索引擎智能路由(Serper、Brave、Tavily 等) - Formative Memory
——记忆强化与遗忘机制
浏览插件目录
clawhub package explore --family code-pluginclawhub package explore "episodic-claw" --family code-pluginclawhub package inspect episodic-clawpackage explore 和 package inspect 是 ClawHub CLI 的插件发现接口。原生 OpenClaw 安装仍然用 openclaw plugins install clawhub:。
技能文件长什么样
技能不增加新工具,它教 Agent 怎么用已有的工具。
一个典型技能长这样:
my-skill/├── SKILL.md # 核心文件,YAML frontmatter + Markdown 指令├── scripts/# 可选:辅助脚本├── references/# 可选:参考资料└── assets/# 可选:静态资源SKILL.md 的最小结构:
---name: my-skilldescription: 用自然语言描述这个技能做什么---# 技能说明当用户需要 XXX 时,执行以下步骤:1. ...2. ...YAML frontmatter 是技能的"清单"——名字、描述、触发条件、依赖项。OpenClaw 运行时读取这部分来决定是否加载这个技能。
注意:
metadata字段必须写成单行 JSON 对象。OpenClaw 嵌入 Agent 的解析器只支持单行 frontmatter 键,多行 YAML 格式的 metadata 无法被识别。
Markdown 指令是技能的"灵魂"——它告诉 Agent 在什么场景下做什么、怎么做、输出什么格式、遇到错误怎么办。
技能从哪加载,谁优先
OpenClaw 从多个位置加载技能,高优先级覆盖低优先级:
/skills | |||
/.agents/skills | |||
~/.agents/skills | |||
~/.openclaw/skills | |||
skills.load.extraDirs |
同名技能,优先级高的胜出。
这意味着你可以把社区技能安装到工作区,然后用自己的版本覆盖它——不需要 fork,不需要改上游。
技能不是装了就用
OpenClaw 支持加载时过滤。通过 SKILL.md 的 metadata 声明依赖:
---name: image-labdescription: 通过 AI 图片服务生成或编辑图片metadata: {"openclaw": {"requires": {"bins": ["uv"], "env": ["GEMINI_API_KEY"]}}}---这段声明的意思是:只有当系统中存在 uv 命令,且配置了 GEMINI_API_KEY 环境变量时,这个技能才会被加载。
门控条件支持:
requires.bins:必须存在的命令行工具 requires.anyBins:至少存在其中一个命令行工具 requires.env:必须配置的环境变量 requires.config:必须为真的配置项 os:限定操作系统(darwin / linux / win32)
条件不满足,技能自动跳过,不会报错。
ClawHub:技能市场
ClawHub(clawhub.ai) 是 OpenClaw 的官方公共技能注册中心。
它的作用类似于 npm 之于 Node.js、PyPI 之于 Python。
技能的发布、搜索、安装、版本管理全在这里。
搜索和安装
openclaw skills search "calendar"openclaw skills search "github"openclaw skills search --limit 20 --jsonClawHub 的搜索不只是关键词匹配。底层使用 OpenAI 的 text-embedding-3-small 向量索引,支持语义搜索。搜"日历"也能找到叫"schedule"的技能。
openclaw skills install <skill-slug>命令把技能下载到工作区的 skills/ 目录。下次启动新会话时自动加载。
openclaw skills update <skill-slug>openclaw skills update --allopenclaw skills listopenclaw skills info <name>openclaw skills check # 检查技能状态发布技能需要独立的 CLI
除了安装,还需要发布技能、管理版本、同步本地目录时,安装独立的 clawhub CLI:
npm i -g clawhub# 登录(GitHub 账号)clawhub login# 搜索clawhub search "research"# 安装clawhub install <skill-slug># 更新全部clawhub update --all# 查看已安装clawhub list# 发布技能clawhub skill publish ./my-skill --slug my-skill --name "My Skill" --version 1.0.0# 同步(扫描本地 + 发布更新)clawhub sync --allclawhub 会在当前目录写入 .clawhub/lock.json,记录从注册中心安装了哪些技能及版本,方便审计和复现。
热门技能
截至 2026 年 5 月,ClawHub 上有数千个社区技能(数据截至 2026 年 4 月中旬,实际数字可能有变化)。按用途可以分为几类:
安全与自我改进:
self-improving-agent(3.2k 星标,39.6k 下载)——记录错误和教训,让 Agent 在后续任务中避免重复犯错 skill-vetterOpenClaw架构中的安全技能,在零信任架构中,该技能承担防御功能,是安装其他技能前需部署的安全模块。
搜索与研究:
multi-search-engine(566 星标,12.1k 下载)——聚合 16 个搜索引擎 tavily-search(92 星标,3.6k 下载)——Tavily 驱动的 AI 优化搜索 academic-deep-research——强制多轮研究流程
开发者工作流:
github(514 星标,15.9k 下载)——通过 ghCLI 管理 Issues、PR、Actionsagent-browser(323 星标,9.0k 下载)——无头浏览器自动化
记忆与知识:
ontology——本地知识图谱 memory-hygiene——向量记忆清理与优化
自己动手写一个技能
前面讲了插件,也讲了技能系统。接下来写一个技能。
场景:AI 编程的代码审查
以 AI 辅助编程为例。每次让 Agent 生成代码后,需要经过固定流程的审查。把这个流程编码成技能,每次写完代码直接调用。
第一步:创建技能目录
mkdir -p ~/openclaw-workspace/skills/code-review第二步:编写 SKILL.md
---name: code-reviewdescription: AI 生成代码后的结构化审查流程,检查安全性、性能、可维护性metadata: {"openclaw": {"requires": {"config": ["gateway.enabled"]}}}---# 代码审查技能当用户提交一段代码要求审查时,按以下流程执行:## 审查流程1.**安全性检查** - 是否存在 SQL 注入、XSS、命令注入等常见漏洞 - 凭证和密钥是否硬编码 - 输入是否经过验证和清理2.**性能检查** - 是否存在不必要的循环或重复计算 - 数据库查询是否使用了 N+1 问题 - 内存使用是否合理3.**可维护性检查** - 函数是否职责单一 - 变量和函数命名是否清晰 - 是否缺少必要的注释和错误处理4.**输出审查报告** - 列出发现的问题 - 给出具体修改建议 - 标注严重程度(严重/建议/可选)## 规则- 如果代码超过 500 行,分段审查- 如果用户指定了审查重点,优先检查指定部分- 审查报告用列表形式输出,不要写长篇分析第三步:安装和测试
把技能放到工作区的 skills/ 目录后,启动新会话。
如果启用了 skills watcher 热重载,即刻生效。
然后在对话中测试:
用户:帮我审查一下这段代码 [粘贴代码]
Agent 识别到描述匹配,加载 code-review 技能的指令,按审查流程执行。
写技能的四个要点
指令用编号步骤,不用散文
AI 对编号指令的遵循度远高于段落式描述。每个步骤描述一个动作和一个预期结果。
定义输出契约
明确告诉 AI 输出什么字段、什么格式。
✅ "输出格式:问题列表,每项包含 [位置][问题][建议修改]"❌ "帮我看看有什么问题"包含负面约束
告诉 AI 不能做什么,和告诉它要做什么,同样重要。
- 不要修改原文的技术内容,只指出问题- 不要在审核报告中重写全文显式处理错误
技能必须有失败路径。API 超时怎么办?输入为空怎么办?用户指令模糊怎么办?
## 错误处理- 如果代码为空,提示用户提供代码- 如果代码超过 1000 行,询问是否分段审查- 如果审查过程中遇到不确定的技术问题,标注"需人工确认"而非自行判断发布到 ClawHub
技能开发完成,测试通过。可以发布到 ClawHub 分享给社区:
# 1. 登录clawhub login# 2. 发布clawhub skill publish ./skills/code-review \ --slug code-review \ --name "Code Review" \ --version 1.0.0 \ --changelog "Initial release" \ --tags "coding,review,security"发布后,其他人可以通过 openclaw skills install code-review 安装。
发布要求:
需要 GitHub 账号,且账号注册满一周(防滥用) ClawHub 会自动运行安全扫描(VirusTotal、ClawScan、静态分析) 扫描未通过的版本会被 hold,发布者可在 /dashboard查看并申请重新扫描
安全:第三方技能的风险
2026 年初,安全研究者在 ClawHub 上发现了 1184 个恶意技能。高峰期约五分之一的技能包含恶意载荷——包括 macOS 信息窃取器(Atomic)、反向 shell、凭证窃取脚本。
Snyk 的 ToxicSkills 审计分析了 3984 个 ClawHub 技能,发现 7.1% 以明文形式暴露了敏感凭证。
RedLine 和 Lumma 信息窃取器已经将 OpenClaw 的文件路径加入数据采集目标。
第三方技能应该被视为不可信代码。安装前必须阅读。
为什么技能扫描不够
技能是用自然语言写的,不是编译后的二进制。传统杀毒软件无法检测恶意内容。它们隐藏在 Markdown 指令中。
恶意技能可以在"使用说明"中嵌入 prompt injection 指令。Agent 在不知情的情况下执行危险操作。
OpenClaw 团队已经做出回应:
与 VirusTotal 合作扫描所有 ClawHub 提交 版本 2026.2.26 推送了 40+ 安全补丁 聘请了专职安全顾问
但官方也承认:扫描不是万能的,prompt injection 载荷仍然可能绕过检测。
怎么安全地使用第三方技能
安装前:
查看技能的 VirusTotal 和 ClawScan 扫描结果 阅读 SKILL.md 全文,理解它让 Agent 做什么 检查 metadata 中声明的环境变量和二进制依赖是否合理 查看发布者的历史和其他技能 星标和下载量≠可信度,只是"很多人装过"
安装后:
先在沙箱环境中测试 检查技能是否要求不必要的权限 监控 Agent 行为是否异常 用 agents.defaults.skills白名单控制哪些 Agent 能用这个技能
开发自己的技能时:
凭证只通过环境变量或 SecretRef 系统访问,绝不硬编码 对外部内容(邮件、网页、文档)的处理:明确标注为"数据"而非"指令" 高风险操作(发送、删除、修改)必须经过用户确认 声明最小权限范围,不要要求不必要的工具访问
技能和插件的安全边界不同
技能是 Markdown 文件,Agent 在推理时读取。风险主要在 prompt injection。
插件是真正的代码(Node.js 包),在运行时执行。风险更高——一个恶意插件可以直接访问文件系统、网络、环境变量。
安装插件时的安全要求应该比技能更严格:
优先安装官方验证(Verified)标记的插件 检查插件的 pluginApi和minGatewayVersion兼容性社区插件安装时 OpenClaw 会发出警告,不要忽略这个警告 生产环境建议用 Docker 沙箱运行,限制网络和外挂权限
最后
OpenClaw 的扩展体系设计得很干净:插件负责扩展能力边界,技能负责扩展行为模式。两者通过 ClawHub 这个公共注册中心连接起整个生态。
技能的本质是 Markdown。它极易编写和分享,也带来了独特的安全挑战。阅读技能文件就是审计代码——因为本质上就是如此。
用别人的技能,先读再装,沙箱测试,最小权限。
写自己的技能,窄范围、可审计、显式约束、凭证安全。
一个好的 OpenClaw 技能应该是“无聊”的——范围窄、逻辑直白、没有隐藏行为。那些包装华丽的"全能技能",往往问题最多。
(完)
下期预告:
OpenClaw实战系列已经写到第七篇了,我想最终再来一篇做个收尾。第八篇作为系列收官,将回顾整个 OpenClaw 的设计哲学,展望 AI Agent 工具链的未来走向。
之后的内容,我会聊聊最近在做的关于AI编程的一些实践。
P.S. 小米MiMo模型有个活动,将在30天内发放 100万亿token,申请地址为:http://100t.xiaomimimo.com , 只要简单填些资料和一些做过的AI项目即可申请,感兴趣的同学可以尝试申领一下。
夜雨聆风