@wwkit/harness 1.0.9 → 1.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/agents/extract.md +2 -14
- package/agents/lint.md +368 -0
- package/agents/pyit.md +361 -0
- package/agents/pyut.md +347 -0
- package/agents/query.md +2 -14
- package/agents/revise.md +2 -14
- package/agents/work.md +631 -0
- package/commands/fix.md +77 -0
- package/commands/git-sync.md +218 -0
- package/commands/net-port.md +364 -0
- package/commands/pyit.md +6 -0
- package/commands/pyut.md +6 -0
- package/commands/resume.md +104 -0
- package/package.json +4 -2
- package/plugins/work-bootstrap.js +77 -0
- package/scripts/work-review-package +50 -0
- package/scripts/work-task-brief +27 -0
- package/scripts/work-workspace +31 -0
- package/skills/better-skill/SKILL.md +124 -0
- package/skills/blame-skill/SKILL.md +201 -0
- package/skills/lint-ai-fix/SKILL.md +141 -0
- package/skills/lint-config-setup/SKILL.md +106 -0
- package/skills/lint-config-setup/references/languages/js.md +110 -0
- package/skills/lint-config-setup/references/languages/py.md +89 -0
- package/skills/lint-env-ensure/SKILL.md +92 -0
- package/skills/lint-env-ensure/references/config.md +65 -0
- package/skills/lint-language-detect/SKILL.md +79 -0
- package/skills/lint-language-detect/references/detect-language.js +65 -0
- package/skills/lint-rules-analyze/SKILL.md +129 -0
- package/skills/lint-suitability-check/SKILL.md +84 -0
- package/skills/lint-tool-fix/SKILL.md +94 -0
- package/skills/new-skill/SKILL.md +227 -0
- package/skills/new-skill/references/template.md +53 -0
- package/skills/new-skill/references/workflow-patterns.md +104 -0
- package/skills/pytest-case-create/SKILL.md +327 -0
- package/skills/pytest-case-create/references/test-standards.md +244 -0
- package/skills/pytest-case-fix/SKILL.md +274 -0
- package/skills/pytest-coverage-analyze/SKILL.md +226 -0
- package/skills/pytest-coverage-analyze/references/scoring-rules.md +57 -0
- package/skills/pytest-env-ensure/SKILL.md +198 -0
- package/skills/pytest-env-ensure/references/config.md +145 -0
- package/skills/pytest-execute/SKILL.md +155 -0
- package/skills/pytest-sample/SKILL.md +164 -0
- package/skills/pytest-sample/references/src/pytest-sample/Calculator.py +67 -0
- package/skills/pytest-sample/references/src/pytest-sample/ConfigManager.py +68 -0
- package/skills/pytest-sample/references/src/pytest-sample/FileProcessor.py +53 -0
- package/skills/pytest-sample/references/src/pytest-sample/OrderService.py +82 -0
- package/skills/pytest-sample/references/src/pytest-sample/TokenGenerator.py +50 -0
- package/skills/pytest-sample/references/src/pytest-sample/UserService.py +45 -0
- package/skills/pytest-sample/references/src/pytest-sample/__init__.py +0 -0
- package/skills/pytest-suitability-check/SKILL.md +224 -0
- package/skills/read-docs/SKILL.md +134 -0
- package/skills/read-docs/references/opencode/agents/cases.md +206 -0
- package/skills/read-docs/references/opencode/agents/design-pattern.md +47 -0
- package/skills/read-docs/references/opencode/agents/detail.md +191 -0
- package/skills/read-docs/references/opencode/agents/examples.md +100 -0
- package/skills/read-docs/references/opencode/agents/index.md +309 -0
- package/skills/read-docs/references/opencode/agents/parallel-dispatch.md +149 -0
- package/skills/read-docs/references/opencode/agents/subagent-internals.md +217 -0
- package/skills/read-docs/references/opencode/agents/workflow.md +161 -0
- package/skills/read-docs/references/opencode/cli/commands/acp.md +32 -0
- package/skills/read-docs/references/opencode/cli/commands/agent.md +16 -0
- package/skills/read-docs/references/opencode/cli/commands/attach.md +20 -0
- package/skills/read-docs/references/opencode/cli/commands/mcp.md +37 -0
- package/skills/read-docs/references/opencode/cli/commands/others.md +49 -0
- package/skills/read-docs/references/opencode/cli/commands/plugin.md +13 -0
- package/skills/read-docs/references/opencode/cli/commands/provider.md +44 -0
- package/skills/read-docs/references/opencode/cli/commands/run.md +81 -0
- package/skills/read-docs/references/opencode/cli/commands/serve.md +84 -0
- package/skills/read-docs/references/opencode/cli/commands/session.md +38 -0
- package/skills/read-docs/references/opencode/cli/commands/web.md +15 -0
- package/skills/read-docs/references/opencode/cli/env.md +39 -0
- package/skills/read-docs/references/opencode/cli/index.md +19 -0
- package/skills/read-docs/references/opencode/cli/tui.md +35 -0
- package/skills/read-docs/references/opencode/commands/examples.md +42 -0
- package/skills/read-docs/references/opencode/commands/index.md +185 -0
- package/skills/read-docs/references/opencode/config/provider.md +152 -0
- package/skills/read-docs/references/opencode/formatter/index.md +71 -0
- package/skills/read-docs/references/opencode/guide/config.md +419 -0
- package/skills/read-docs/references/opencode/guide/formatters.md +70 -0
- package/skills/read-docs/references/opencode/guide/index.md +37 -0
- package/skills/read-docs/references/opencode/guide/providers.md +31 -0
- package/skills/read-docs/references/opencode/guide/rules.md +63 -0
- package/skills/read-docs/references/opencode/plugins/examples.md +75 -0
- package/skills/read-docs/references/opencode/plugins/index.md +188 -0
- package/skills/read-docs/references/opencode/reference/index.md +119 -0
- package/skills/read-docs/references/opencode/rule/index.md +78 -0
- package/skills/read-docs/references/opencode/skills/detail.md +113 -0
- package/skills/read-docs/references/opencode/skills/examples.md +141 -0
- package/skills/read-docs/references/opencode/skills/index.md +126 -0
- package/skills/read-docs/references/opencode/skills/workflow.md +146 -0
- package/skills/read-docs/references/opencode/tests/agent.md +10 -0
- package/skills/read-docs/references/opencode/tests/config.md +60 -0
- package/skills/read-docs/references/opencode/tests/file.md +12 -0
- package/skills/read-docs/references/opencode/tests/serve.md +18 -0
- package/skills/read-docs/references/opencode/tests/session.md +31 -0
- package/skills/read-docs/references/opencode/tests/web.md +17 -0
- package/skills/read-docs/references/opencode/tools/arguments.md +305 -0
- package/skills/read-docs/references/opencode/tools/context.md +18 -0
- package/skills/read-docs/references/opencode/tools/custom.md +111 -0
- package/skills/read-docs/references/opencode/tools/detail.md +104 -0
- package/skills/read-docs/references/opencode/tools/examples.md +71 -0
- package/skills/read-docs/references/opencode/tools/index.md +56 -0
- package/skills/read-docs/references/opencode/tools/lsp.md +26 -0
- package/skills/read-docs/references/opencode/tools/mcp.md +132 -0
- package/skills/read-docs/references/opencode/train/README.md +135 -0
- package/skills/read-docs/references/opencode/train/agent-basic.md +772 -0
- package/skills/read-docs/references/opencode/train/command-basic.md +668 -0
- package/skills/read-docs/references/opencode/train/config-basic.md +509 -0
- package/skills/read-docs/references/opencode/train/index.md +164 -0
- package/skills/read-docs/references/opencode/train/practice.md +873 -0
- package/skills/read-docs/references/opencode/train/skill-basic.md +608 -0
- package/skills/read-docs/references/opencode/tui/commands/config.md +32 -0
- package/skills/read-docs/references/opencode/tui/commands/editor.md +47 -0
- package/skills/read-docs/references/opencode/tui/commands/index.md +125 -0
- package/skills/read-docs/references/opencode/tui/commands/init.md +5 -0
- package/skills/read-docs/references/opencode/tui/index.md +26 -0
- package/skills/read-docs/references/superpowers/bootstrap.md +107 -0
- package/skills/read-docs/references/superpowers/comparison.md +77 -0
- package/skills/read-docs/references/superpowers/context.md +71 -0
- package/skills/read-docs/references/superpowers/index.md +58 -0
- package/skills/read-docs/references/superpowers/parallel.md +49 -0
- package/skills/read-docs/references/superpowers/sdd.md +183 -0
- package/skills/read-docs/references/superpowers/skills.md +68 -0
- package/skills/read-docs/references/superpowers/workflow.md +83 -0
|
@@ -0,0 +1,772 @@
|
|
|
1
|
+
# Agent 配置培训
|
|
2
|
+
|
|
3
|
+
学习配置 OpenCode Agent,创建专门的 AI 助手执行特定任务。
|
|
4
|
+
|
|
5
|
+
## 理论介绍
|
|
6
|
+
|
|
7
|
+
### 什么是 Agent?
|
|
8
|
+
|
|
9
|
+
Agent 是可配置的专门 AI 助手,用于特定任务和工作流。
|
|
10
|
+
|
|
11
|
+
**核心特点**:
|
|
12
|
+
- **专门化**:针对特定任务优化
|
|
13
|
+
- **可切换**:在会话中切换 Agent
|
|
14
|
+
- **可调用**:通过 `@` 提及调用 Subagent
|
|
15
|
+
- **可配置**:独立权限、模型、温度等
|
|
16
|
+
|
|
17
|
+
### Agent 类型
|
|
18
|
+
|
|
19
|
+
| 类型 | 说明 | 使用方式 |
|
|
20
|
+
|------|------|----------|
|
|
21
|
+
| Primary Agent | 直接交互的主助手 | Tab 键切换 |
|
|
22
|
+
| Subagent | Primary Agent 可调用的专门助手 | 自动调用或 `@` 提及 |
|
|
23
|
+
|
|
24
|
+
### 内置 Agent
|
|
25
|
+
|
|
26
|
+
#### Primary Agent
|
|
27
|
+
|
|
28
|
+
| Agent | 说明 |
|
|
29
|
+
|-------|------|
|
|
30
|
+
| build | 默认主 Agent,所有工具启用 |
|
|
31
|
+
| plan | 规划和分析专用,文件编辑和 bash 默认需审批 |
|
|
32
|
+
|
|
33
|
+
#### Subagent
|
|
34
|
+
|
|
35
|
+
| Agent | 说明 |
|
|
36
|
+
|-------|------|
|
|
37
|
+
| general | 通用多步骤任务,完整工具访问(除 todo),可并行执行 |
|
|
38
|
+
| explore | 快速只读代码探索,查找文件和搜索代码 |
|
|
39
|
+
| scout | 外部文档和依赖研究 |
|
|
40
|
+
|
|
41
|
+
### Agent 协作模式
|
|
42
|
+
|
|
43
|
+
#### 父子协作
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
Primary Agent (父)
|
|
47
|
+
├── 调用 Subagent 1 (子)
|
|
48
|
+
├── 调用 Subagent 2 (子)
|
|
49
|
+
└── 整合结果
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
**工作流程**:
|
|
53
|
+
1. Primary Agent 分析任务
|
|
54
|
+
2. 调用合适的 Subagent
|
|
55
|
+
3. Subagent 执行专门任务
|
|
56
|
+
4. Primary Agent 整合结果
|
|
57
|
+
|
|
58
|
+
#### 会话导航
|
|
59
|
+
|
|
60
|
+
| 操作 | 快捷键 |
|
|
61
|
+
|------|--------|
|
|
62
|
+
| 进入第一个子会话 | `Leader+Down` |
|
|
63
|
+
| 切换到下一个子会话 | `Right` |
|
|
64
|
+
| 切换到上一个子会话 | `Left` |
|
|
65
|
+
| 返回父会话 | `Up` |
|
|
66
|
+
|
|
67
|
+
## Agent 配置方式
|
|
68
|
+
|
|
69
|
+
### JSON 配置
|
|
70
|
+
|
|
71
|
+
在 `opencode.json` 中配置:
|
|
72
|
+
|
|
73
|
+
```jsonc
|
|
74
|
+
{
|
|
75
|
+
"$schema": "https://opencode.ai/config.json",
|
|
76
|
+
"agent": {
|
|
77
|
+
"reviewer": {
|
|
78
|
+
"description": "代码审查 Agent",
|
|
79
|
+
"mode": "subagent",
|
|
80
|
+
"model": "anthropic/claude-haiku-4-5",
|
|
81
|
+
"temperature": 0.1,
|
|
82
|
+
"prompt": "你是代码审查专家,专注于代码质量和最佳实践",
|
|
83
|
+
"permission": {
|
|
84
|
+
"edit": "deny"
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Markdown 配置
|
|
92
|
+
|
|
93
|
+
放置在以下位置:
|
|
94
|
+
- **全局**:`~/.config/opencode/agents/`
|
|
95
|
+
- **项目级**:`.opencode/agents/`
|
|
96
|
+
|
|
97
|
+
文件名即为 Agent 名称,如 `review.md` 创建 `review` Agent。
|
|
98
|
+
|
|
99
|
+
```markdown
|
|
100
|
+
---
|
|
101
|
+
description: 代码审查 Agent,检查代码质量和最佳实践
|
|
102
|
+
mode: subagent
|
|
103
|
+
model: anthropic/claude-haiku-4-5
|
|
104
|
+
temperature: 0.1
|
|
105
|
+
permission:
|
|
106
|
+
edit: deny
|
|
107
|
+
bash: deny
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
你是代码审查专家,专注于:
|
|
111
|
+
|
|
112
|
+
- 代码质量和最佳实践
|
|
113
|
+
- 潜在 Bug 和边界情况
|
|
114
|
+
- 性能影响
|
|
115
|
+
- 安全考虑
|
|
116
|
+
|
|
117
|
+
提供建设性反馈,不直接修改代码。
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## 配置选项详解
|
|
121
|
+
|
|
122
|
+
### Description
|
|
123
|
+
|
|
124
|
+
提供 Agent 的简要描述和使用场景:
|
|
125
|
+
|
|
126
|
+
```jsonc
|
|
127
|
+
{
|
|
128
|
+
"agent": {
|
|
129
|
+
"docs-writer": {
|
|
130
|
+
"description": "技术文档写作专家,擅长 API 文档、README、用户手册"
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
**描述建议**:
|
|
137
|
+
- ✅ 说明 Agent 专长
|
|
138
|
+
- ✅ 说明适用场景
|
|
139
|
+
- ✅ 说明不适用场景
|
|
140
|
+
|
|
141
|
+
### Temperature
|
|
142
|
+
|
|
143
|
+
控制 LLM 响应的随机性和创造性:
|
|
144
|
+
|
|
145
|
+
| 值 | 特点 | 适用场景 |
|
|
146
|
+
|----|------|----------|
|
|
147
|
+
| 0.1 | 最确定性 | 代码审查、安全分析 |
|
|
148
|
+
| 0.3 | 平衡 | 文档编写、代码实现 |
|
|
149
|
+
| 0.7 | 较创造性 | 创意设计、探索性任务 |
|
|
150
|
+
| 0.9 | 最创造性 | 艺术创作、创新设计 |
|
|
151
|
+
|
|
152
|
+
```jsonc
|
|
153
|
+
{
|
|
154
|
+
"agent": {
|
|
155
|
+
"reviewer": { "temperature": 0.1 },
|
|
156
|
+
"writer": { "temperature": 0.7 }
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### Steps
|
|
162
|
+
|
|
163
|
+
控制 Agent 最大迭代次数:
|
|
164
|
+
|
|
165
|
+
```jsonc
|
|
166
|
+
{
|
|
167
|
+
"agent": {
|
|
168
|
+
"quick-thinker": {
|
|
169
|
+
"description": "快速推理,有限迭代",
|
|
170
|
+
"steps": 5
|
|
171
|
+
},
|
|
172
|
+
"deep-analyzer": {
|
|
173
|
+
"description": "深度分析,更多迭代",
|
|
174
|
+
"steps": 100
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
### Model
|
|
181
|
+
|
|
182
|
+
为 Agent 覆盖默认模型:
|
|
183
|
+
|
|
184
|
+
```jsonc
|
|
185
|
+
{
|
|
186
|
+
"agent": {
|
|
187
|
+
"planner": {
|
|
188
|
+
"model": "anthropic/claude-opus-4-5" // 深度分析用大模型
|
|
189
|
+
},
|
|
190
|
+
"executor": {
|
|
191
|
+
"model": "anthropic/claude-sonnet-4-5" // 执行用中模型
|
|
192
|
+
},
|
|
193
|
+
"checker": {
|
|
194
|
+
"model": "anthropic/claude-haiku-4-5" // 检查用小模型
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
### Permissions
|
|
201
|
+
|
|
202
|
+
配置 Agent 的操作权限:
|
|
203
|
+
|
|
204
|
+
#### 权限值
|
|
205
|
+
|
|
206
|
+
| 值 | 说明 |
|
|
207
|
+
|----|------|
|
|
208
|
+
| `ask` | 运行前需审批 |
|
|
209
|
+
| `allow` | 允许所有操作 |
|
|
210
|
+
| `deny` | 禁用工具 |
|
|
211
|
+
|
|
212
|
+
#### 权限键
|
|
213
|
+
|
|
214
|
+
| 键 | 控制的工具 |
|
|
215
|
+
|----|-----------|
|
|
216
|
+
| read | read |
|
|
217
|
+
| edit | write, edit, apply_patch |
|
|
218
|
+
| glob | glob |
|
|
219
|
+
| grep | grep |
|
|
220
|
+
| bash | bash |
|
|
221
|
+
| task | task |
|
|
222
|
+
| todowrite | todowrite, todoread |
|
|
223
|
+
| skill | skill |
|
|
224
|
+
| question | question |
|
|
225
|
+
|
|
226
|
+
#### 精细化权限
|
|
227
|
+
|
|
228
|
+
```jsonc
|
|
229
|
+
{
|
|
230
|
+
"agent": {
|
|
231
|
+
"reviewer": {
|
|
232
|
+
"permission": {
|
|
233
|
+
"edit": "deny",
|
|
234
|
+
"bash": {
|
|
235
|
+
"*": "deny",
|
|
236
|
+
"git diff*": "allow",
|
|
237
|
+
"git log*": "allow"
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
### Mode
|
|
246
|
+
|
|
247
|
+
控制 Agent 模式:
|
|
248
|
+
|
|
249
|
+
| 值 | 说明 |
|
|
250
|
+
|----|------|
|
|
251
|
+
| `primary` | Primary Agent,直接交互 |
|
|
252
|
+
| `subagent` | Subagent,可被调用 |
|
|
253
|
+
| `all` | 两种模式都可用(默认) |
|
|
254
|
+
|
|
255
|
+
```jsonc
|
|
256
|
+
{
|
|
257
|
+
"agent": {
|
|
258
|
+
"planner": { "mode": "primary" },
|
|
259
|
+
"helper": { "mode": "subagent" }
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
### Hidden
|
|
265
|
+
|
|
266
|
+
隐藏 Subagent(不在 `@` 自动补全中显示):
|
|
267
|
+
|
|
268
|
+
```jsonc
|
|
269
|
+
{
|
|
270
|
+
"agent": {
|
|
271
|
+
"internal-helper": {
|
|
272
|
+
"mode": "subagent",
|
|
273
|
+
"hidden": true
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
### Prompt
|
|
280
|
+
|
|
281
|
+
指定自定义系统提示词:
|
|
282
|
+
|
|
283
|
+
#### 内嵌提示词
|
|
284
|
+
|
|
285
|
+
```jsonc
|
|
286
|
+
{
|
|
287
|
+
"agent": {
|
|
288
|
+
"reviewer": {
|
|
289
|
+
"prompt": "你是代码审查专家,专注于代码质量和最佳实践"
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
#### 文件引用
|
|
296
|
+
|
|
297
|
+
```jsonc
|
|
298
|
+
{
|
|
299
|
+
"agent": {
|
|
300
|
+
"reviewer": {
|
|
301
|
+
"prompt": "{file:./prompts/code-review.txt}"
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
### Disable
|
|
308
|
+
|
|
309
|
+
禁用 Agent:
|
|
310
|
+
|
|
311
|
+
```jsonc
|
|
312
|
+
{
|
|
313
|
+
"agent": {
|
|
314
|
+
"old-agent": { "disable": true }
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
## 实例展示
|
|
320
|
+
|
|
321
|
+
### 案例 1:文档写作 Agent
|
|
322
|
+
|
|
323
|
+
创建 `.opencode/agents/docs-writer.md`:
|
|
324
|
+
|
|
325
|
+
```markdown
|
|
326
|
+
---
|
|
327
|
+
description: |
|
|
328
|
+
技术文档写作专家,擅长 API 文档、README、用户手册。
|
|
329
|
+
适用场景:写新项目文档、更新现有文档、解释代码功能。
|
|
330
|
+
不适用:代码审查、Bug 修复、功能实现。
|
|
331
|
+
mode: subagent
|
|
332
|
+
temperature: 0.3
|
|
333
|
+
---
|
|
334
|
+
|
|
335
|
+
# 角色
|
|
336
|
+
|
|
337
|
+
你是技术文档专家,擅长将复杂概念解释得通俗易懂。
|
|
338
|
+
|
|
339
|
+
# 文档规范
|
|
340
|
+
|
|
341
|
+
- 使用 Markdown 格式
|
|
342
|
+
- 代码示例必须可运行
|
|
343
|
+
- 包含输入/输出说明
|
|
344
|
+
- 中文优先,专业术语保留英文
|
|
345
|
+
|
|
346
|
+
# 文档结构
|
|
347
|
+
|
|
348
|
+
1. **概述**:一句话说明是什么
|
|
349
|
+
2. **快速开始**:30 秒能跑起来
|
|
350
|
+
3. **详细 API**:完整参数说明
|
|
351
|
+
4. **示例代码**:覆盖常见场景
|
|
352
|
+
5. **常见问题**:预判用户疑惑
|
|
353
|
+
|
|
354
|
+
# 约束条件
|
|
355
|
+
|
|
356
|
+
- ✅ 快速开始的代码必须可直接复制运行
|
|
357
|
+
- ✅ 参数说明要包含类型和默认值
|
|
358
|
+
- ❌ 避免假设用户已有背景知识
|
|
359
|
+
|
|
360
|
+
# 输出格式
|
|
361
|
+
|
|
362
|
+
文档使用标准 Markdown 格式,代码块指定语言:
|
|
363
|
+
|
|
364
|
+
```javascript
|
|
365
|
+
// 示例代码
|
|
366
|
+
```
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
**使用方式**:
|
|
370
|
+
```
|
|
371
|
+
用户:@docs-writer 为 API 创建文档
|
|
372
|
+
Agent:调用 docs-writer → 按规范生成文档
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
### 案例 2:代码审查 Agent
|
|
376
|
+
|
|
377
|
+
创建 `.opencode/agents/reviewer.md`:
|
|
378
|
+
|
|
379
|
+
```markdown
|
|
380
|
+
---
|
|
381
|
+
description: |
|
|
382
|
+
代码审查 Agent,检查代码质量、安全性、性能问题。
|
|
383
|
+
适用场景:PR 审查、代码质量检查、最佳实践验证。
|
|
384
|
+
不适用:功能实现、Bug 修复。
|
|
385
|
+
mode: subagent
|
|
386
|
+
model: anthropic/claude-haiku-4-5
|
|
387
|
+
temperature: 0.1
|
|
388
|
+
permission:
|
|
389
|
+
edit: deny
|
|
390
|
+
bash:
|
|
391
|
+
"*": deny
|
|
392
|
+
"git diff*": allow
|
|
393
|
+
"git log*": allow
|
|
394
|
+
---
|
|
395
|
+
|
|
396
|
+
# 角色
|
|
397
|
+
|
|
398
|
+
你是代码审查专家,专注于:
|
|
399
|
+
|
|
400
|
+
- 代码质量和最佳实践
|
|
401
|
+
- 潜在 Bug 和边界情况
|
|
402
|
+
- 性能影响
|
|
403
|
+
- 安全考虑
|
|
404
|
+
|
|
405
|
+
# 审查流程
|
|
406
|
+
|
|
407
|
+
1. **明确范围**:询问审查哪些文件
|
|
408
|
+
2. **逐项检查**:按清单审查
|
|
409
|
+
3. **输出报告**:结构化审查结果
|
|
410
|
+
|
|
411
|
+
# 审查清单
|
|
412
|
+
|
|
413
|
+
## 代码规范
|
|
414
|
+
- 命名规范
|
|
415
|
+
- 格式规范
|
|
416
|
+
- 注释规范
|
|
417
|
+
|
|
418
|
+
## 安全性
|
|
419
|
+
- 输入验证
|
|
420
|
+
- 权限检查
|
|
421
|
+
- 数据泄露
|
|
422
|
+
|
|
423
|
+
## 性能
|
|
424
|
+
- 算法效率
|
|
425
|
+
- 资源管理
|
|
426
|
+
- 数据库查询
|
|
427
|
+
|
|
428
|
+
# 输出格式
|
|
429
|
+
|
|
430
|
+
```markdown
|
|
431
|
+
## 审查摘要
|
|
432
|
+
- 审查文件:[文件列表]
|
|
433
|
+
- 发现问题:[问题数量]
|
|
434
|
+
- 严重程度:[高/中/低]
|
|
435
|
+
|
|
436
|
+
## 详细问题
|
|
437
|
+
|
|
438
|
+
### 问题 1:[问题标题]
|
|
439
|
+
- **文件**:src/file.js:123
|
|
440
|
+
- **严重程度**:高
|
|
441
|
+
- **问题描述**:...
|
|
442
|
+
- **修复建议**:...
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
# 约束条件
|
|
446
|
+
|
|
447
|
+
- ❌ 不直接修改代码
|
|
448
|
+
- ✅ 提供建设性反馈
|
|
449
|
+
- ✅ 指出具体问题和位置
|
|
450
|
+
```
|
|
451
|
+
|
|
452
|
+
**使用方式**:
|
|
453
|
+
```
|
|
454
|
+
用户:审查 src/components/ 目录
|
|
455
|
+
Agent:调用 reviewer → 按清单审查 → 输出报告
|
|
456
|
+
```
|
|
457
|
+
|
|
458
|
+
### 案例 3:多模型协作系统
|
|
459
|
+
|
|
460
|
+
创建 `.opencode/opencode.json`:
|
|
461
|
+
|
|
462
|
+
```jsonc
|
|
463
|
+
{
|
|
464
|
+
"$schema": "https://opencode.ai/config.json",
|
|
465
|
+
|
|
466
|
+
"agent": {
|
|
467
|
+
// 规划者:使用大模型深度分析
|
|
468
|
+
"planner": {
|
|
469
|
+
"description": "规划者:分析需求,制定详细计划",
|
|
470
|
+
"mode": "primary",
|
|
471
|
+
"model": "anthropic/claude-opus-4-5",
|
|
472
|
+
"temperature": 0.2,
|
|
473
|
+
"steps": 20,
|
|
474
|
+
"permission": {
|
|
475
|
+
"edit": "ask",
|
|
476
|
+
"bash": "ask"
|
|
477
|
+
}
|
|
478
|
+
},
|
|
479
|
+
|
|
480
|
+
// 执行者:使用中模型快速实现
|
|
481
|
+
"executor": {
|
|
482
|
+
"description": "执行者:实现具体代码",
|
|
483
|
+
"mode": "primary",
|
|
484
|
+
"model": "anthropic/claude-sonnet-4-5",
|
|
485
|
+
"temperature": 0.3,
|
|
486
|
+
"steps": 100,
|
|
487
|
+
"permission": {
|
|
488
|
+
"edit": "allow",
|
|
489
|
+
"bash": "allow"
|
|
490
|
+
}
|
|
491
|
+
},
|
|
492
|
+
|
|
493
|
+
// 检查者:使用小模型快速检查
|
|
494
|
+
"checker": {
|
|
495
|
+
"description": "检查者:验证实现正确性",
|
|
496
|
+
"mode": "subagent",
|
|
497
|
+
"model": "anthropic/claude-haiku-4-5",
|
|
498
|
+
"temperature": 0.1,
|
|
499
|
+
"permission": {
|
|
500
|
+
"edit": "deny",
|
|
501
|
+
"bash": {
|
|
502
|
+
"*": "deny",
|
|
503
|
+
"npm test": "allow"
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
```
|
|
510
|
+
|
|
511
|
+
**工作流程**:
|
|
512
|
+
```
|
|
513
|
+
1. 切换到 planner → 分析需求,制定计划
|
|
514
|
+
2. 切换到 executor → 实现代码
|
|
515
|
+
3. 调用 checker → 验证正确性
|
|
516
|
+
```
|
|
517
|
+
|
|
518
|
+
### 案例 4:自动化 PR 审查机器人
|
|
519
|
+
|
|
520
|
+
创建 `.opencode/agents/pr-reviewer.md`:
|
|
521
|
+
|
|
522
|
+
```markdown
|
|
523
|
+
---
|
|
524
|
+
description: |
|
|
525
|
+
PR 审查机器人,自动审查代码变更。
|
|
526
|
+
适用场景:自动化 PR 审查、持续集成。
|
|
527
|
+
不适用:手动代码审查、功能开发。
|
|
528
|
+
mode: primary
|
|
529
|
+
model: anthropic/claude-opus-4-5
|
|
530
|
+
steps: 100
|
|
531
|
+
temperature: 0.1
|
|
532
|
+
permission:
|
|
533
|
+
edit: deny
|
|
534
|
+
bash:
|
|
535
|
+
"*": deny
|
|
536
|
+
"git log*": allow
|
|
537
|
+
"git diff*": allow
|
|
538
|
+
"npm test": "allow"
|
|
539
|
+
task:
|
|
540
|
+
"*": deny
|
|
541
|
+
"security-auditor": "allow"
|
|
542
|
+
"performance-checker": "allow"
|
|
543
|
+
---
|
|
544
|
+
|
|
545
|
+
# 角色
|
|
546
|
+
|
|
547
|
+
你是自动化 PR 审查机器人,负责审查代码变更。
|
|
548
|
+
|
|
549
|
+
# 审查流程
|
|
550
|
+
|
|
551
|
+
## 1. 获取变更
|
|
552
|
+
|
|
553
|
+
```bash
|
|
554
|
+
git diff origin/main...HEAD
|
|
555
|
+
git log origin/main..HEAD --oneline
|
|
556
|
+
```
|
|
557
|
+
|
|
558
|
+
## 2. 分析变更
|
|
559
|
+
|
|
560
|
+
- 检查代码质量
|
|
561
|
+
- 检查安全性
|
|
562
|
+
- 检查性能
|
|
563
|
+
- 运行测试
|
|
564
|
+
|
|
565
|
+
## 3. 输出审查结果
|
|
566
|
+
|
|
567
|
+
```markdown
|
|
568
|
+
## PR 审查报告
|
|
569
|
+
|
|
570
|
+
### 变更摘要
|
|
571
|
+
- 文件数:X
|
|
572
|
+
- 新增行:X
|
|
573
|
+
- 删除行:X
|
|
574
|
+
|
|
575
|
+
### 代码质量
|
|
576
|
+
- ✅/❌ [检查项]
|
|
577
|
+
|
|
578
|
+
### 安全性
|
|
579
|
+
- ✅/❌ [检查项]
|
|
580
|
+
|
|
581
|
+
### 测试结果
|
|
582
|
+
- ✅/❌ [测试状态]
|
|
583
|
+
|
|
584
|
+
### 建议
|
|
585
|
+
1. [建议内容]
|
|
586
|
+
```
|
|
587
|
+
|
|
588
|
+
# 审查标准
|
|
589
|
+
|
|
590
|
+
详细标准见团队编码规范文档。
|
|
591
|
+
|
|
592
|
+
# 约束条件
|
|
593
|
+
|
|
594
|
+
- ❌ 不修改代码
|
|
595
|
+
- ✅ 自动化审查
|
|
596
|
+
- ✅ 结构化输出
|
|
597
|
+
```
|
|
598
|
+
|
|
599
|
+
### 案例 5:探索 Agent(只读)
|
|
600
|
+
|
|
601
|
+
创建 `.opencode/agents/explorer.md`:
|
|
602
|
+
|
|
603
|
+
```markdown
|
|
604
|
+
---
|
|
605
|
+
description: |
|
|
606
|
+
快速代码探索 Agent,只读访问。
|
|
607
|
+
适用场景:查找文件、搜索代码、理解代码结构。
|
|
608
|
+
不适用:修改代码、执行命令。
|
|
609
|
+
mode: subagent
|
|
610
|
+
model: anthropic/claude-haiku-4-5
|
|
611
|
+
permission:
|
|
612
|
+
edit: deny
|
|
613
|
+
bash: deny
|
|
614
|
+
---
|
|
615
|
+
|
|
616
|
+
# 角色
|
|
617
|
+
|
|
618
|
+
你是代码探索助手,帮助快速理解代码库。
|
|
619
|
+
|
|
620
|
+
# 探索能力
|
|
621
|
+
|
|
622
|
+
- 查找文件:使用 glob 工具
|
|
623
|
+
- 搜索代码:使用 grep 工具
|
|
624
|
+
- 读取文件:使用 read 工具
|
|
625
|
+
|
|
626
|
+
# 工作流程
|
|
627
|
+
|
|
628
|
+
1. **理解需求**:明确用户想找什么
|
|
629
|
+
2. **搜索定位**:使用工具查找
|
|
630
|
+
3. **总结结果**:简洁说明找到的内容
|
|
631
|
+
|
|
632
|
+
# 输出格式
|
|
633
|
+
|
|
634
|
+
```markdown
|
|
635
|
+
## 探索结果
|
|
636
|
+
|
|
637
|
+
### 找到的文件
|
|
638
|
+
- `path/to/file1.js` - [简要说明]
|
|
639
|
+
- `path/to/file2.js` - [简要说明]
|
|
640
|
+
|
|
641
|
+
### 关键代码
|
|
642
|
+
[代码片段]
|
|
643
|
+
|
|
644
|
+
### 建议
|
|
645
|
+
[下一步建议]
|
|
646
|
+
```
|
|
647
|
+
|
|
648
|
+
# 约束条件
|
|
649
|
+
|
|
650
|
+
- ❌ 不修改代码
|
|
651
|
+
- ❌ 不执行命令
|
|
652
|
+
- ✅ 快速响应
|
|
653
|
+
- ✅ 简洁输出
|
|
654
|
+
```
|
|
655
|
+
|
|
656
|
+
**使用方式**:
|
|
657
|
+
```
|
|
658
|
+
用户:@explorer 找到所有 API 路由定义
|
|
659
|
+
Agent:调用 explorer → 搜索文件 → 输出结果
|
|
660
|
+
```
|
|
661
|
+
|
|
662
|
+
## 动手练习
|
|
663
|
+
|
|
664
|
+
### 练习 1:创建简单 Agent
|
|
665
|
+
|
|
666
|
+
**任务**:创建一个测试 Agent,专门运行测试
|
|
667
|
+
|
|
668
|
+
**提示**:
|
|
669
|
+
```markdown
|
|
670
|
+
---
|
|
671
|
+
description: 测试执行 Agent,运行测试套件并分析结果
|
|
672
|
+
mode: subagent
|
|
673
|
+
---
|
|
674
|
+
|
|
675
|
+
# 角色
|
|
676
|
+
你是测试执行专家...
|
|
677
|
+
|
|
678
|
+
# 工作流程
|
|
679
|
+
1. 运行测试
|
|
680
|
+
2. 分析失败
|
|
681
|
+
3. 输出结果
|
|
682
|
+
|
|
683
|
+
# 输出格式
|
|
684
|
+
...
|
|
685
|
+
```
|
|
686
|
+
|
|
687
|
+
### 练习 2:配置多模型 Agent
|
|
688
|
+
|
|
689
|
+
**任务**:创建三个 Agent,使用不同模型
|
|
690
|
+
|
|
691
|
+
**配置**:
|
|
692
|
+
```jsonc
|
|
693
|
+
{
|
|
694
|
+
"agent": {
|
|
695
|
+
"analyst": {
|
|
696
|
+
"model": "anthropic/claude-opus-4-5",
|
|
697
|
+
"temperature": 0.1
|
|
698
|
+
},
|
|
699
|
+
"developer": {
|
|
700
|
+
"model": "anthropic/claude-sonnet-4-5",
|
|
701
|
+
"temperature": 0.3
|
|
702
|
+
},
|
|
703
|
+
"checker": {
|
|
704
|
+
"model": "anthropic/claude-haiku-4-5",
|
|
705
|
+
"temperature": 0.1
|
|
706
|
+
}
|
|
707
|
+
}
|
|
708
|
+
}
|
|
709
|
+
```
|
|
710
|
+
|
|
711
|
+
### 练习 3:精细化权限配置
|
|
712
|
+
|
|
713
|
+
**任务**:创建一个 Agent,满足以下权限要求:
|
|
714
|
+
- 禁止文件编辑
|
|
715
|
+
- 允许 git 命令
|
|
716
|
+
- 允许 npm 命令
|
|
717
|
+
- 禁止其他 bash 命令
|
|
718
|
+
|
|
719
|
+
**配置**:
|
|
720
|
+
```markdown
|
|
721
|
+
---
|
|
722
|
+
permission:
|
|
723
|
+
edit: deny
|
|
724
|
+
bash:
|
|
725
|
+
"*": deny
|
|
726
|
+
"git *": allow
|
|
727
|
+
"npm *": allow
|
|
728
|
+
---
|
|
729
|
+
```
|
|
730
|
+
|
|
731
|
+
## 常见问题
|
|
732
|
+
|
|
733
|
+
### Q1: Primary Agent 和 Subagent 如何选择?
|
|
734
|
+
|
|
735
|
+
**Primary Agent**:
|
|
736
|
+
- 直接交互,用户手动切换
|
|
737
|
+
- 适合主要工作流程
|
|
738
|
+
|
|
739
|
+
**Subagent**:
|
|
740
|
+
- 自动调用或 `@` 提及
|
|
741
|
+
- 适合专门任务
|
|
742
|
+
|
|
743
|
+
### Q2: 如何调试 Agent 配置?
|
|
744
|
+
|
|
745
|
+
1. 启动 OpenCode
|
|
746
|
+
2. 切换到 Agent(Tab 键)
|
|
747
|
+
3. 检查是否显示正确 Agent
|
|
748
|
+
4. 测试权限和工具是否生效
|
|
749
|
+
|
|
750
|
+
### Q3: Agent 可以继承配置吗?
|
|
751
|
+
|
|
752
|
+
可以,Agent 配置覆盖全局配置:
|
|
753
|
+
```
|
|
754
|
+
全局配置 → Agent 配置 → 技能配置
|
|
755
|
+
```
|
|
756
|
+
|
|
757
|
+
### Q4: 如何创建交互式 Agent?
|
|
758
|
+
|
|
759
|
+
使用 `question` 工具:
|
|
760
|
+
```markdown
|
|
761
|
+
# 工作流程
|
|
762
|
+
|
|
763
|
+
1. 使用 question 工具询问用户
|
|
764
|
+
2. 根据用户选择执行任务
|
|
765
|
+
3. 输出结果
|
|
766
|
+
```
|
|
767
|
+
|
|
768
|
+
## 下一步
|
|
769
|
+
|
|
770
|
+
- ⚡ [命令使用培训](/train/command-basic) - 学习自定义命令
|
|
771
|
+
- 🎯 [实战案例](/train/practice) - 综合应用所学知识
|
|
772
|
+
- 📖 [Agent 详解](/agents/detail) - 深入理解 Agent 系统
|