wip(docs): i18n (#12681)

This commit is contained in:
Adam
2026-02-09 11:34:35 -06:00
committed by GitHub
parent f74c0339cc
commit dc53086c1e
642 changed files with 192745 additions and 509 deletions

View File

@@ -0,0 +1,222 @@
---
title: 《代理技巧》
description: “贯穿 SKILL.md 定义可重用行为”
---
代理让 OpenCode 技能从您的存储库或主目录中找到可重用的指令。
技能贯穿本机 `skill` 工具输入导入 - 代理可以检视可用技能并可以在需要时加载完整内容。
---
## 放置檔案
为每个技能名称建立一个资料夹,并在其中放入`SKILL.md`。
OpenCode 搜索这些位置:
- Project config: `.opencode/skills/<name>/SKILL.md`
- Global config: `~/.config/opencode/skills/<name>/SKILL.md`
- 專案Claude相容`.claude/skills/<name>/SKILL.md`
- 全域性 Claude 相容: `~/.claude/skills/<name>/SKILL.md`
- 專案代理相容:`.agents/skills/<name>/SKILL.md`
- 全球代理相容:`~/.agents/skills/<name>/SKILL.md`
---
## 瞭解發現
对于专案本地路径, OpenCode 从当前工作目录向上走,直到到达 git 工作树。
It loads any matching `skills/*/SKILL.md` in `.opencode/` and any matching `.claude/skills/*/SKILL.md` or `.agents/skills/*/SKILL.md` along the way.
Global definitions are also loaded from `~/.config/opencode/skills/*/SKILL.md`, `~/.claude/skills/*/SKILL.md`, and `~/.agents/skills/*/SKILL.md`.
---
## 寫前言
每个 `SKILL.md` 必须以 YAML frontmatter 。
僅識別這些欄位:
- `name`(必填)
- `description`(必填)
- `license`(任选)
- `compatibility`(任选)
- `metadata`(任选,字串到字串对映)
未知的 frontmatter 栏位将被忽略。
---
## 驗證姓名
`name` 必须:
- 長度為 164 個字元
- 為小寫字母數字並帶有單個連字元分隔符
- 不以 `-` 開始或結束
- 不包含連續的 `--`
- 匹配包含 `SKILL.md` 的目录名
等效的正規表示式:
```text
^[a-z0-9]+(-[a-z0-9]+)*$
```
---
## 遵循長度規則
`description` 必须是 1-1024 个字元。
保持足夠具體,以便代理能夠正確選擇。
---
## 使用一個例子
Create `.opencode/skills/git-release/SKILL.md` like this:
```markdown
---
name: git-release
description: Create consistent releases and changelogs
license: MIT
compatibility: opencode
metadata:
audience: maintainers
workflow: github
---
## What I do
- Draft release notes from merged PRs
- Propose a version bump
- Provide a copy-pasteable `gh release create` command
## When to use me
Use this when you are preparing a tagged release.
Ask clarifying questions if the target versioning scheme is unclear.
```
---
## 識別工具說明
OpenCode 列出了 `skill` 工具描述中的可用技能。
每個條目都包含技能名稱和描述:
```xml
<available_skills>
<skill>
<name>git-release</name>
<description>Create consistent releases and changelogs</description>
</skill>
</available_skills>
```
代理透過呼叫工具來載入技能:
```
skill({ name: "git-release" })
```
---
## 配置許可權
Control which skills agents can access using pattern-based permissions in `opencode.json`:
```json
{
"permission": {
"skill": {
"*": "allow",
"pr-review": "allow",
"internal-*": "deny",
"experimental-*": "ask"
}
}
}
```
|許可|行為 |
| ---------- | ----------------------------------------- |
| `allow` | 技能立即加载 |
| `deny` | 对特工隐藏技能,访问被拒绝 |
| `ask` | 加载前提示用户批准 |
模式支持万用字元:`internal-*` 匹配 `internal-docs`、`internal-tools` 等。
---
## 覆蓋每個代理
為特定代理授予與全域性預設許可權不同的許可權。
**對於自定義代理**(在代理前言中):
```yaml
---
permission:
skill:
"documents-*": "allow"
---
```
**For built-in agents** (in `opencode.json`):
```json
{
"agent": {
"plan": {
"permission": {
"skill": {
"internal-*": "allow"
}
}
}
}
}
```
---
## 禁用技能工具
完全禁用不應該使用技能的特工:
**對於定製代理**
```yaml
---
tools:
skill: false
---
```
**對於內建代理**
```json
{
"agent": {
"plan": {
"tools": {
"skill": false
}
}
}
}
```
禁用後,`<available_skills>` 部分將被完全省略。
---
## 解決載入問題
如果某項技能沒有顯示:
1. 验证 `SKILL.md` 拼写为全部大写
2. 检查 frontmatter 是否包括 `name` 和 `description`
3. 確保技能名稱在所有位置都是唯一的
4. 查询权限——具有`deny`的代理隐藏技能