摘要:OpenClaw 通过Skills与ClawHub扩展智能体能力,技能以「目录 + SKILL.md / manifest.json」形式存放在工作区skills/下,并在openclaw.json中注册;安装/更新/移除技能时会同步更新SKILLS.md,使智能体在下一轮推理中可见新能力。本文说明 OpenClaw 的 skills 机制、如何更新 skills,并结合 LangGraph 7. 技能 Skills 的 Agent Skills 规范,在demo_codes中复现「注册表 + SKILLS.md 同步」的流程。
关键词:OpenClaw;Skills;ClawHub;SKILLS.md;openclaw.json;技能更新;Agent Skills
参考:
- Learn OpenClaw - Skills & ClawHub
- 案例源代码:openclaw skills demo codes
- Langgraph 7. Skills 案例源代码
1 OpenClaw 中的 Skills 是什么?
OpenClaw 默认只能对话;Skills是给智能体增加能力的扩展单元,类似「手机上的 App」:
- 每个技能是自包含的扩展,可提供新能力(如网页搜索、图像生成、日历、语音等)。
- 可独立安装、更新、移除,运行在沙箱中,有明确接口(能做什么、需要什么输入)。
- 技能存放在工作区的
skills/目录,并在openclaw.json中注册。
与 LangGraph 7. 技能 Skills 中的 Agent Skills 一致:技能以文件夹 + SKILL.md(或 OpenClaw 的 manifest.json)形式存在,包含元数据和使用说明;智能体通过发现 → 选择 → 加载 → 使用来调用。
2 三种能力类型:Built-in Tools / Skills / Plugins
| 类型 | 含义 | 来源 |
|---|---|---|
| Built-in Tools | 核心能力(文件、Shell、web_fetch 等) | 随 OpenClaw 默认提供(约 20 个) |
| Skills | OpenClaw 原生扩展格式 | ClawHub 或自建,符合 AgentSkills 规范 |
| Plugins | 基于 MCP 的集成 | 任意 MCP 兼容服务器 |
对多数用户而言,Skills是扩展能力的主要方式。
3 ClawHub 与技能的安装/更新/移除
3.1 ClawHub
ClawHub 是 OpenClaw 的社区技能市场(类似 npm 对 JavaScript),截至 2026 年初已托管 5,700+ 社区技能。支持按分类、热度、时间浏览,以及安装、更新、移除。
3.2 安装
在 OpenClaw 的对话界面里输入:
/skills install @author/skill-name安装后:
- 技能被添加到工作区(通常放入
skills/目录)。 - 在
openclaw.json中注册,例如:
{"skills":{"@niceperson/brave-web-search":{"enabled":true,"config":{"apiKey":"${BRAVE_API_KEY}"}}}}3.3 如何更新 Skills(重要)
更新通过命令完成:
/skills update @author/skill-name /skills update --all- 单技能更新:从 ClawHub(或源)拉取该技能的最新版本,覆盖工作区中对应目录内容,并保持
openclaw.json中该技能的配置(如enabled、config等)。 - 全部更新:对所有已安装技能执行上述拉取与覆盖。
- 更新后,安装器会同步更新 SKILLS.md(见下节),使智能体在下一轮推理中看到最新能力描述。
注意:更新前应查看 changelog;技能更新可能改变行为、增加权限或破坏现有工作流。
3.4 移除
/skills remove @author/skill-name会从工作区删除该技能目录,并从openclaw.json的skills中移除对应项;同样会重新生成 SKILLS.md,不再包含该技能。
4 SKILLS.md 与技能更新
4.1 SKILLS.md 的作用
SKILLS.md属于 OpenClaw 的「记忆/能力可见性」设计:
- 文件中列出当前已安装的所有技能及其能力描述。
- 安装或更新技能时,安装器会更新 SKILLS.md,把新技能或更新后的描述写进去。
- 智能体在下一轮推理中会读取 SKILLS.md,从而看到最新可用能力,无需改代码。
这样能力列表是透明、可审计、可版本管理的。
4.2 更新流程小结
| 操作 | 对工作区的影响 | 对 openclaw.json | 对 SKILLS.md |
|---|---|---|---|
| install | 在skills/下新增技能目录 | 在skills中增加一项(enabled、config 等) | 写入/追加该技能的能力描述 |
| update | 用最新版本覆盖该技能目录内容 | 一般保留原有配置 | 根据当前已安装技能重新生成或更新描述 |
| remove | 删除该技能目录 | 从skills中删除该项 | 重新生成,不再包含该技能 |
因此,OpenClaw 更新 skills 的机制可以概括为:
- 命令层:
/skills update @author/skill-name或/skills update --all。 - 内容层:从 ClawHub(或源)拉取最新技能包,覆盖本地
skills/<skill-id>/。 - 配置层:
openclaw.json中该技能的enabled、config等通常保留。 - 可见性层:安装器重新生成或更新 SKILLS.md,使 Agent 下一轮推理能看到最新技能列表与描述。
5 与LangGraph 7. 技能 Skills(LangGraph Agent Skills)的对应关系
| 概念 | LangGraph 7. 技能 Skills(本仓库) | OpenClaw |
|---|---|---|
| 技能形态 | 文件夹 + SKILL.md(YAML frontmatter + 正文) | 文件夹 + SKILL.md 或 manifest.json + index.js/index.py |
| 技能库位置 | skills_library/ | 工作区skills/ |
| 注册/配置 | 无统一注册表,仅扫描目录 | openclaw.json的skills段(enabled、config、sandbox 等) |
| 能力可见性 | 发现时读 SKILL.md frontmatter | SKILLS.md由安装器维护,列出已安装技能及能力 |
| 发现→选择→加载→使用 | 有(skill_loader) | 同思路,Agent 读 SKILLS.md 与 SKILL.md 执行 |
| 安装/更新/移除 | 需手动放文件 | `/skills install |
这里,我们写了一个例子, 在 LangGraph 7. 技能 Skills 的「发现→选择→加载→使用」基础上,复现 OpenClaw 的:
- openclaw.json 风格配置(已安装技能列表 + enabled/config);
- SKILLS.md在 install/update/remove 时自动同步;
- 从「技能库/仓库」安装、更新、移除的模拟流程。
6 openclaw skills 复现内容概览
- 技能目录:
skills/(对应 OpenClaw 工作区技能目录)。 - 模拟cloawhub,
clawhub_store文件夹中里面包含了一系列的skills。 - 配置:
openclaw.json(或等价的skills_config.json),记录已安装技能及 enabled/config。 - 能力清单:
SKILLS.md,由程序在 install/update/remove 后自动生成/更新,内容为当前已安装技能的名称与描述。 - 命令/接口:
install_skill、update_skill、remove_skill、sync_skills_md(),以及基于 LangGraph 7. 技能 Skills 的discover_skills、load_skill、use_skill_with_llm(发现与使用仍基于 SKILL.md)。 - 运行方式:见案例的
README文件。
通过该 demo 可直接体验:安装或更新技能后,SKILLS.md 如何被更新,以及 Agent 如何通过 SKILLS.md + SKILL.md 使用这些能力。
6.1 列出仓库中可安装技能
我们通过
python main.py list可以罗列clawhub_store文件夹中包含的所有skills(注意,clawhub_store文件夹这里用来模拟cloawhub)。比如:
可安装技能(clawhub_store): - algorithmic-art(algorithmic-art): Creating algorithmic art using p5.js with seeded randomness... - brand-guidelines(brand-guidelines): Applies Anthropic's official brand colors and typography to... - canvas-design(canvas-design): Create beautiful visual artin.png and .pdf documents using... - claude-api(claude-api): Build apps with the Claude API or Anthropic SDK. TRIGGER whe... - doc-coauthoring(doc-coauthoring): Guideusersthrough a structured workflowforco-authoring d... - docx(docx): Use this skill whenever the user wants to create, read, edit... - frontend-design(frontend-design): Create distinctive, production-grade frontend interfaces wit... - internal-comms(internal-comms): Asetof resources tohelpmewriteall kinds of internal co... - mcp-builder(mcp-builder): Guideforcreating high-quality MCP(Model Context Protocol)... - pdf(pdf): Use this skill whenever the user wants todoanything with P... - pptx(pptx): Use this skill anytimea .pptxfileis involvedinany way... - skill-creator(skill-creator): Create new skills, modify and improve existing skills, and m... - slack-gif-creator(slack-gif-creator): Knowledge and utilitiesforcreating animated GIFs optimized... - summarize(summarize): Use this skill when the user wants to summarize, condense, o... - theme-factory(theme-factory): Toolkitforstyling artifacts with a theme. These artifacts... - web-artifacts-builder(web-artifacts-builder): Suite of toolsforcreating elaborate, multi-component claud... - webapp-testing(webapp-testing): Toolkitforinteracting with and testinglocalweb applicati... - xlsx(xlsx): Use this skill anytimea spreadsheetfileis the primary in...6.2 安装技能
我们可以通过
python main.pyinstall[skill-name]来安装skill。在这里,我们模拟安装skills为:从clawhub_store文件夹中找到对应的skill文件夹,然后复制黏贴到skills文件夹中。在实际应用,其实逻辑也是一样的。比如,我们在terminal中运行:
python main.pyinstallskill-creator返回:
已安装技能: skill-creator,并已更新 openclaw.json 与 SKILLS.md。6.3 移除技能
我们可以通过
python main.py remove[skill-name]来删除已经安装的 skill。
6.4 openclaw.json 与 SKILLS.md
我们来看一下 openclaw.json 与 SKILLS.md 的内容:
openclaw.json
{"skills":{"summarize":{"enabled":true,"config":{}},"docx":{"enabled":true,"config":{}},"skill-creator":{"enabled":true,"config":{}}}}SKILLS.md
# Installed Skills 本文档由 openclaw 风格安装器自动生成,列出当前已启用技能及其能力。 安装/更新/移除技能后会更新此文件。 ## 技能列表 - **docx** (`docx`) - Use this skill whenever the user wants to create, read, edit, or manipulate Word documents (.docx files). Triggers include: any mention of 'Word doc', 'word document', '.docx', or requests to produce ... - **skill-creator** (`skill-creator`) - Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill... - **summarize** (`summarize`) - Use this skill when the user wants to summarize, condense, or extract key points from text. Preserve important information and source references when relevant.在此案例的源码中,openclaw.json与SKILLS.md的调用与作用如下。
openclaw.json
- 读写位置:
_load_openclaw_config()读取、_save_openclaw_config()写入,默认路径为DEFAULT_OPENCLAW_JSON(即openclaw.json)。 - 作用:作为已安装技能注册表,保存
skills: { "<skill_id>": { "enabled": true, "config": {} } }。- 发现阶段:
discover_skills()会调用_load_openclaw_config()得到skills_config,对skills/下每个子目录,用其skill_id查表;当only_enabled=True时,仅当entry.get("enabled", True)为真才把该技能加入列表(见约 94、108–110 行)。 - 安装/更新/移除:
install_skill()在复制技能到skills/后,向 config 的skills中写入或更新该项并_save_openclaw_config();update_skill()保留该技能原有配置再写回;remove_skill()从 config 的skills中删除该项并写回。
- 发现阶段:
SKILLS.md
- 写入位置:仅由
sync_skills_md()写入,默认路径为DEFAULT_SKILLS_MD(即SKILLS.md)。 - 作用:作为当前已启用技能的能力清单(面向人或 Agent 的可读列表)。
sync_skills_md()内部会调用discover_skills(..., only_enabled=True)(即结合skills/与 openclaw.json 中enabled为真的项),把每个技能的name、skill_id、description拼成 Markdown 并写入 SKILLS.md。- 调用时机:在
install_skill()、update_skill()、remove_skill()末尾都会调用sync_skills_md();CLI 的python main.py sync则只调用sync_skills_md(),不执行安装/更新/移除。
- 调用时机:在
因此,openclaw.json决定「哪些技能已安装、是否启用、配置是什么」并驱动发现时的过滤;SKILLS.md则是对「当前已启用技能及其能力」的同步快照,供下一轮推理或人工查看。
6.5 代码的实际运行
比如:
python main.py run "请总结下面这段话:问题(50 字内) ReAct、Plan-and-Execute、Graph 等主流 Agent 架构,上手难度、调试成本、工程落地门槛差异在哪?新手该如何循序渐进? 问题描述(≥200 字,偏技术讨论向) 本问题旨在从实际开发与工程落地视角,对比当前主流的 Agent 架构(包括但不限于 ReAct、Plan-and-Execute、Graph 等)在上手难度、学习曲线、调试复杂度、状态管理、可扩展性等方面的真实差异。重点关注不同架构对新手的友好程度、是否需要复杂的中间件支持、在长流程与多工具调用场景下的稳定性与可观测性,以及从 Demo 到生产环境的改造成本。通过对比各架构的适用场景、坑点与最佳实践,帮助开发者明确学习顺序、技术选型依据,以及在实际项目中优先采用哪种架构更易落地、更易维护、更易迭代。"返回:
用户任务:请总结下面这段话:问题(50 字内) ReAct、Plan-and-Execute、Graph 等主流 Agent 架构,上手难度、调试成本、工程落地门槛差异在...选中技能:summarize 已加载技能正文(约 598 字符) 正在使用技能执行任务...---执行结果---问题总结(50字内): 对比ReAct、Plan-and-Execute、Graph等Agent架构的上手难度、调试成本与工程落地门槛,为新手提供循序渐进的学习与选型路径。7 小结
- OpenClaw 的Skills是自包含扩展,存放在
skills/,在openclaw.json中注册。 - 更新 skills通过
/skills update @author/skill-name或/skills update --all完成:拉取最新包覆盖本地目录,并由安装器更新 SKILLS.md,使智能体下一轮推理可见最新能力。 - SKILLS.md是「已安装技能及能力」的清单,随 install/update/remove 同步,与 LangGraph 7. 技能 Skills 的「仅从目录发现」形成对比;demo_codes 复现的正是这套注册表 + SKILLS.md 同步机制。