Docs: add zh-CN translations

This commit is contained in:
Josh Palmer
2026-02-01 22:47:44 +01:00
parent e70984745b
commit 149dc7c4e7
298 changed files with 53861 additions and 0 deletions

284
docs/zh-CN/tools/skills.md Normal file
View File

@@ -0,0 +1,284 @@
---
read_when:
- 添加或修改技能
- 更改技能门控或加载规则
summary: 技能:托管型与工作区型、门控规则,以及配置/环境变量连接
title: 技能
x-i18n:
generated_at: "2026-02-01T21:43:46Z"
model: claude-opus-4-5
provider: pi
source_hash: 54685da5885600b367ccdad6342497199fcb168ce33f8cdc00391d993f3bab7e
source_path: tools/skills.md
workflow: 15
---
# 技能OpenClaw
OpenClaw 使用与 **[AgentSkills](https://agentskills.io) 兼容**的技能文件夹来教智能体如何使用工具。每个技能是一个目录,包含带有 YAML frontmatter 和说明的 `SKILL.md` 文件。OpenClaw 加载**内置技能**以及可选的本地覆盖,并在加载时根据环境、配置和二进制文件是否存在进行过滤。
## 位置和优先级
技能从**三个**位置加载:
1. **内置技能**随安装包一起分发npm 包或 OpenClaw.app
2. **托管/本地技能**`~/.openclaw/skills`
3. **工作区技能**`<workspace>/skills`
如果技能名称冲突,优先级为:
`<workspace>/skills`(最高)→ `~/.openclaw/skills` → 内置技能(最低)
此外,你可以通过 `~/.openclaw/openclaw.json` 中的 `skills.load.extraDirs` 配置额外的技能文件夹(最低优先级)。
## 按智能体与共享技能
在**多智能体**设置中,每个智能体拥有自己的工作区。这意味着:
- **按智能体技能**位于该智能体专属的 `<workspace>/skills` 中。
- **共享技能**位于 `~/.openclaw/skills`(托管/本地),对同一机器上的**所有智能体**可见。
- **共享文件夹**也可以通过 `skills.load.extraDirs`(最低优先级)添加,如果你希望多个智能体使用同一套技能包。
如果同一技能名称存在于多个位置,适用通常的优先级规则:工作区优先,然后是托管/本地,最后是内置。
## 插件 + 技能
插件可以通过在 `openclaw.plugin.json` 中列出 `skills` 目录(相对于插件根目录的路径)来附带自己的技能。插件技能在插件启用时加载,并参与正常的技能优先级规则。你可以通过插件配置项上的 `metadata.openclaw.requires.config` 进行门控。参见[插件](/plugin)了解发现/配置,参见[工具](/tools)了解这些技能教授的工具功能。
## ClawHub安装 + 同步)
ClawHub 是 OpenClaw 的公共技能注册中心。浏览地址https://clawhub.com。使用它来发现、安装、更新和备份技能。完整指南[ClawHub](/tools/clawhub)。
常用流程:
- 将技能安装到你的工作区:
- `clawhub install <skill-slug>`
- 更新所有已安装的技能:
- `clawhub update --all`
- 同步(扫描 + 发布更新):
- `clawhub sync --all`
默认情况下,`clawhub` 安装到当前工作目录下的 `./skills`(或回退到已配置的 OpenClaw 工作区。OpenClaw 在下次会话时将其作为 `<workspace>/skills` 加载。
## 安全说明
- 将第三方技能视为**不可信代码**。启用前请先阅读其内容。
- 对于不可信输入和高风险工具,优先使用沙箱运行。参见[沙箱](/gateway/sandboxing)。
- `skills.entries.*.env``skills.entries.*.apiKey` 会将密钥注入该智能体轮次的**宿主**进程中(而非沙箱)。请勿将密钥暴露在提示词和日志中。
- 更广泛的威胁模型和检查清单,请参见[安全](/gateway/security)。
## 格式AgentSkills + Pi 兼容)
`SKILL.md` 必须至少包含:
```markdown
---
name: nano-banana-pro
description: Generate or edit images via 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**在加载时过滤技能**
```markdown
---
name: nano-banana-pro
description: Generate or edit images via 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`)需要 `summarize` CLI 存在于沙箱容器中才能在其中运行。
安装器示例:
```markdown
---
name: gemini
description: Use Gemini CLI for coding assistance and Google search lookups.
metadata:
{
"openclaw":
{
"emoji": "♊️",
"requires": { "bins": ["gemini"] },
"install":
[
{
"id": "brew",
"kind": "brew",
"formula": "gemini-cli",
"bins": ["gemini"],
"label": "Install Gemini CLI (brew)",
},
],
},
}
---
```
说明:
- 如果列出了多个安装器Gateway 会选择**单个**首选选项(有 brew 时选 brew否则选 node
- 如果所有安装器都是 `download`OpenClaw 会列出每个条目,以便你查看可用的产物。
- 安装器规格可包含 `os: ["darwin"|"linux"|"win32"]` 以按平台过滤选项。
- Node 安装遵循 `openclaw.json` 中的 `skills.install.nodeManager`默认npm选项npm/pnpm/yarn/bun
这仅影响**技能安装**Gateway 运行时仍应使用 Node不建议将 Bun 用于 WhatsApp/Telegram
- Go 安装:如果缺少 `go` 但有 `brew`Gateway 会先通过 Homebrew 安装 Go并尽可能将 `GOBIN` 设置为 Homebrew 的 `bin`
- Download 安装:`url`(必需)、`archive``tar.gz` | `tar.bz2` | `zip`)、`extract`(默认:检测到归档时自动)、`stripComponents``targetDir`(默认:`~/.openclaw/tools/<skillKey>`)。
如果没有 `metadata.openclaw`,技能始终可用(除非在配置中禁用,或被 `skills.allowBundled` 对内置技能进行了限制)。
## 配置覆盖(`~/.openclaw/openclaw.json`
内置/托管技能可以切换启用状态并提供环境变量值:
```json5
{
skills: {
entries: {
"nano-banana-pro": {
enabled: true,
apiKey: "GEMINI_KEY_HERE",
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` 的技能提供的便捷方式。
- `config`:用于自定义按技能字段的可选容器;自定义键必须放在此处。
- `allowBundled`:仅针对**内置**技能的可选允许列表。如果设置,只有列表中的内置技能才可用(托管/工作区技能不受影响)。
## 环境注入(按智能体运行)
当智能体运行开始时OpenClaw
1. 读取技能元数据。
2.`skills.entries.<key>.env``skills.entries.<key>.apiKey` 应用到 `process.env`
3. 使用**符合条件**的技能构建系统提示词。
4. 运行结束后恢复原始环境。
这是**限定在智能体运行范围内**的,而非全局 shell 环境。
## 会话快照(性能)
OpenClaw 在**会话开始时**对符合条件的技能进行快照,并在同一会话的后续轮次中复用该列表。对技能或配置的更改在下一个新会话中生效。
技能也可以在会话中途刷新,当技能监视器启用时或当新的符合条件的远程节点出现时(见下文)。可以将其理解为**热重载**:刷新后的列表会在下一个智能体轮次中被使用。
## 远程 macOS 节点Linux Gateway
如果 Gateway 运行在 Linux 上,但有一个**macOS 节点**已连接且**允许 `system.run`**(执行审批安全级别未设为 `deny`OpenClaw 可以在该节点上存在所需二进制文件时,将仅限 macOS 的技能视为可用。智能体应通过 `nodes` 工具(通常是 `nodes.run`)执行这些技能。
这依赖于节点报告其命令支持情况以及通过 `system.run` 进行的二进制探测。如果 macOS 节点之后离线,技能仍然可见;在节点重新连接之前,调用可能会失败。
## 技能监视器(自动刷新)
默认情况下OpenClaw 监视技能文件夹,并在 `SKILL.md` 文件更改时更新技能快照。在 `skills.load` 下配置:
```json5
{
skills: {
load: {
watch: true,
watchDebounceMs: 250,
},
},
}
```
## Token 影响(技能列表)
当有符合条件的技能时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;` 等),增加长度。
- Token 数量因模型分词器而异。粗略的 OpenAI 风格估算约为 ~4 字符/token因此**97 字符 ≈ 24 个 token**(每个技能),加上你实际的字段长度。
## 托管技能生命周期
OpenClaw 将一组基线技能作为**内置技能**随安装包npm 包或 OpenClaw.app一起分发。`~/.openclaw/skills` 用于本地覆盖(例如,在不更改内置副本的情况下固定/修补某个技能)。工作区技能由用户拥有,在名称冲突时覆盖两者。
## 配置参考
参见[技能配置](/tools/skills-config)了解完整的配置模式。
## 想要更多技能?
浏览 https://clawhub.com。
---