:技能)
通过OpenClaw实现副业收入《OpenClaw赚钱实录从“养龙虾“到可持续变现的实践指南》位置与优先级技能从三个地方加载捆绑技能随安装包一起提供npm 包或 OpenClaw.app托管/本地技能~/.openclaw/skills工作区技能workspace/skills如果技能名称发生冲突优先级顺序为workspace/skills最高 →~/.openclaw/skills→ 捆绑技能最低此外您可以通过~/.openclaw/openclaw.json中的skills.load.extraDirs配置额外的技能文件夹优先级最低。每代理 vs 共享技能在多代理设置中每个代理都有自己的工作区。这意味着每代理技能仅存在于该代理的workspace/skills中。共享技能位于~/.openclaw/skills托管/本地中对同一台机器上的所有代理可见。如果您希望多个代理使用通用的技能包也可以通过skills.load.extraDirs添加共享文件夹优先级最低。如果同一个技能名称存在于多个位置则应用常规优先级工作区优先然后是托管/本地最后是捆绑技能。插件 技能插件可以通过在openclaw.plugin.json中列出skills目录路径相对于插件根目录来附带自己的技能。当插件启用时插件技能会加载并参与正常的技能优先级规则。您可以通过插件配置项上的metadata.openclaw.requires.config对其进行门控。有关发现/配置请参阅插件有关这些技能所教授的工具界面请参阅工具。ClawHub安装 同步ClawHub 是 OpenClaw 的公共技能注册表。请在 https://clawhub.com 浏览。使用它来发现、安装、更新和备份技能。完整指南ClawHub。常见流程将技能安装到您的工作区clawhub install skill-slug更新所有已安装的技能clawhub update --all同步扫描 发布更新clawhub sync --all默认情况下clawhub会安装到当前工作目录下的./skills中或回退到配置的 OpenClaw 工作区。OpenClaw 在下一次会话中会将其识别为workspace/skills。安全说明将第三方技能视为不受信任的代码。启用前请先阅读。对于不受信任的输入和高风险工具建议使用沙箱运行。请参阅沙箱。工作区和额外目录的技能发现仅接受解析后的 realpath 位于配置根目录内的技能根目录和SKILL.md文件。skills.entries.*.env和skills.entries.*.apiKey会将密钥注入到该代理回合的主机进程中而非沙箱中。请勿将密钥放入提示和日志中。有关更广泛的威胁模型和检查清单请参阅安全。格式AgentSkills Pi 兼容SKILL.md必须至少包含--- name: nano-banana-pro description: 通过 Gemini 3 Pro Image 生成或编辑图像 ---注意事项我们遵循 AgentSkills 规范进行布局/意图。嵌入式代理使用的解析器仅支持单行frontmatter 键。metadata应为单行 JSON 对象。在说明中使用{baseDir}来引用技能文件夹路径。可选的 frontmatter 键homepage— 在 macOS 技能 UI 中显示为“网站”的 URL也通过metadata.openclaw.homepage支持。user-invocable—true|false默认值true。当为true时该技能作为用户斜杠命令公开。disable-model-invocation—true|false默认值false。当为true时该技能从模型提示中排除仍可通过用户调用使用。command-dispatch—tool可选。当设置为tool时斜杠命令绕过模型并直接分派给工具。command-tool— 当command-dispatch: tool设置时要调用的工具名称。command-arg-mode—raw默认值。对于工具分派将原始参数字符串转发给工具无核心解析。工具调用时的参数为{ command: raw args, commandName: slash command, skillName: skill name }。门控加载时过滤器OpenClaw 在加载时使用metadata单行 JSON过滤技能--- name: nano-banana-pro description: 通过 Gemini 3 Pro Image 生成或编辑图像 metadata: { openclaw: { requires: { bins: [uv], env: [GEMINI_API_KEY], config: [browser.enabled] }, primaryEnv: GEMINI_API_KEY, }, } ---metadata.openclaw下的字段always: true— 始终包含该技能跳过其他门控。emoji— macOS 技能 UI 使用的可选表情符号。homepage— macOS 技能 UI 中显示为“网站”的可选 URL。os— 可选平台列表darwin、linux、win32。如果设置该技能仅在这些操作系统上可用。requires.bins— 列表每个必须存在于PATH中。requires.anyBins— 列表至少一个必须存在于PATH中。requires.env— 列表环境变量必须存在或在配置中提供。requires.config— 必须为真值的openclaw.json路径列表。primaryEnv— 与skills.entries.name.apiKey关联的环境变量名称。install— macOS 技能 UI 使用的可选安装程序规范数组brew/node/go/uv/download。关于沙箱的说明requires.bins在技能加载时在主机上检查。如果代理被沙箱化二进制文件也必须存在于容器内部。通过agents.defaults.sandbox.docker.setupCommand或自定义镜像安装它。setupCommand在容器创建后运行一次。软件包安装还需要网络出口、可写的根文件系统以及沙箱中的 root 用户。示例summarize技能skills/summarize/SKILL.md需要在沙箱容器中安装summarizeCLI 才能在那里运行。安装程序示例--- name: gemini description: 使用 Gemini CLI 进行编码辅助和 Google 搜索查询。 metadata: { openclaw: { emoji: ♊️, requires: { bins: [gemini] }, install: [ { id: brew, kind: brew, formula: gemini-cli, bins: [gemini], label: 安装 Gemini CLI (brew), }, ], }, } ---注意事项如果列出了多个安装程序网关会选择一个单一的首选选项有 brew 时优先选择 brew否则选择 node。如果所有安装程序都是downloadOpenClaw 会列出每个条目以便您查看可用的工件。安装程序规范可以包含os: [darwin|linux|win32]以按平台过滤选项。Node 安装遵循openclaw.json中的skills.install.nodeManager默认值npm选项npm/pnpm/yarn/bun。这仅影响技能安装网关运行时仍应为 Node不建议将 Bun 用于 WhatsApp/Telegram。Go 安装如果缺少go且有brew可用网关会先通过 Homebrew 安装 Go并在可能的情况下将GOBIN设置为 Homebrew 的bin。下载安装url必需、archivetar.gz|tar.bz2|zip、extract默认值检测到压缩包时自动解压、stripComponents、targetDir默认值~/.openclaw/tools/skillKey。如果没有metadata.openclaw则该技能始终可用除非在配置中被禁用或被skills.allowBundled阻止用于捆绑技能。配置覆盖~/.openclaw/openclaw.json捆绑/托管技能可以切换并提供环境变量值{ skills: { entries: { nano-banana-pro: { enabled: true, apiKey: { source: env, provider: default, id: GEMINI_API_KEY }, // 或纯文本字符串 env: { GEMINI_API_KEY: GEMINI_KEY_HERE, }, config: { endpoint: https://example.invalid, model: nano-pro, }, }, peekaboo: { enabled: true }, sag: { enabled: false }, }, }, }注意如果技能名称包含连字符请引用该键JSON5 允许引用键。配置键默认匹配技能名称。如果技能定义了metadata.openclaw.skillKey请在skills.entries下使用该键。规则enabled: false即使技能已捆绑/安装也会禁用它。env仅在进程尚未设置该变量时才注入。apiKey为声明了metadata.openclaw.primaryEnv的技能提供便利。支持纯文本字符串或 SecretRef 对象{ source, provider, id }。config用于自定义每技能字段的可选容器自定义键必须放在这里。allowBundled仅针对捆绑技能的可选允许列表。如果设置只有列表中的捆绑技能可用托管/工作区技能不受影响。环境注入每次代理运行当代理运行开始时OpenClaw读取技能元数据。将任何skills.entries.key.env或skills.entries.key.apiKey应用于process.env。使用可用技能构建系统提示。在运行结束后恢复原始环境。这是限定于代理运行的而非全局 shell 环境。会话快照性能OpenClaw 在会话开始时对可用技能进行快照并在同一会话的后续回合中重用该列表。对技能或配置的更改将在下一个新会话中生效。当启用技能监视器或出现新的可用远程节点时技能也可以在会话中途刷新见下文。这可以视为热重载刷新后的列表将在下一个代理回合中被采用。远程 macOS 节点Linux 网关如果网关在 Linux 上运行但连接了macOS 节点且允许system.run执行批准安全未设置为deny当所需二进制文件存在于该节点上时OpenClaw 可以将仅限 macOS 的技能视为可用。代理应通过nodes工具通常是nodes.run执行这些技能。这依赖于节点报告其命令支持以及通过system.run进行二进制探测。如果 macOS 节点稍后离线技能仍保持可见调用可能会失败直到节点重新连接。技能监视器自动刷新默认情况下OpenClaw 会监视技能文件夹并在SKILL.md文件更改时更新技能快照。在skills.load下配置此功能{ skills: { load: { watch: true, watchDebounceMs: 250, }, }, }令牌影响技能列表当技能可用时OpenClaw 会将可用技能的紧凑 XML 列表注入系统提示通过pi-coding-agent中的formatSkillsForPrompt。成本是确定的基础开销仅当 ≥1 个技能时195 个字符。每个技能97 个字符 XML 转义后的name、description和location值的长度。公式字符数total 195 Σ (97 len(name_escaped) len(description_escaped) len(location_escaped))注意事项XML 转义会将 扩展为实体amp;、lt;等增加长度。令牌计数因模型分词器而异。粗略的 OpenAI 风格估计约为 4 个字符/令牌因此97 个字符 ≈ 每个技能 24 个令牌加上您实际字段长度。托管技能生命周期OpenClaw 作为安装的一部分npm 包或 OpenClaw.app提供一组基线捆绑技能。~/.openclaw/skills用于本地覆盖例如在不更改捆绑副本的情况下固定/修补技能。工作区技能由用户拥有并在名称冲突时覆盖两者。配置参考有关完整配置架构请参阅技能配置。寻找更多技能请浏览 https://clawhub.com。