@wwkit/harness 1.0.9 → 1.0.10

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.
Files changed (110) hide show
  1. package/agents/extract.md +2 -14
  2. package/agents/lint.md +367 -0
  3. package/agents/pyit.md +361 -0
  4. package/agents/pyut.md +347 -0
  5. package/agents/query.md +2 -14
  6. package/agents/revise.md +2 -14
  7. package/agents/work.md +151 -0
  8. package/commands/git-sync.md +218 -0
  9. package/commands/net-port.md +364 -0
  10. package/commands/pyit.md +6 -0
  11. package/commands/pyut.md +6 -0
  12. package/commands/resume.md +104 -0
  13. package/package.json +2 -2
  14. package/skills/better-skill/SKILL.md +124 -0
  15. package/skills/blame-skill/SKILL.md +201 -0
  16. package/skills/lint-ai-fix/SKILL.md +141 -0
  17. package/skills/lint-config-setup/SKILL.md +106 -0
  18. package/skills/lint-config-setup/references/languages/js.md +110 -0
  19. package/skills/lint-config-setup/references/languages/py.md +89 -0
  20. package/skills/lint-env-ensure/SKILL.md +92 -0
  21. package/skills/lint-env-ensure/references/config.md +65 -0
  22. package/skills/lint-language-detect/SKILL.md +79 -0
  23. package/skills/lint-language-detect/references/detect-language.js +65 -0
  24. package/skills/lint-rules-analyze/SKILL.md +129 -0
  25. package/skills/lint-suitability-check/SKILL.md +84 -0
  26. package/skills/lint-tool-fix/SKILL.md +94 -0
  27. package/skills/new-skill/SKILL.md +227 -0
  28. package/skills/new-skill/references/template.md +53 -0
  29. package/skills/new-skill/references/workflow-patterns.md +104 -0
  30. package/skills/pytest-case-create/SKILL.md +327 -0
  31. package/skills/pytest-case-create/references/test-standards.md +244 -0
  32. package/skills/pytest-case-fix/SKILL.md +274 -0
  33. package/skills/pytest-coverage-analyze/SKILL.md +226 -0
  34. package/skills/pytest-coverage-analyze/references/scoring-rules.md +57 -0
  35. package/skills/pytest-env-ensure/SKILL.md +198 -0
  36. package/skills/pytest-env-ensure/references/config.md +145 -0
  37. package/skills/pytest-execute/SKILL.md +155 -0
  38. package/skills/pytest-sample/SKILL.md +164 -0
  39. package/skills/pytest-sample/references/src/pytest-sample/Calculator.py +67 -0
  40. package/skills/pytest-sample/references/src/pytest-sample/ConfigManager.py +68 -0
  41. package/skills/pytest-sample/references/src/pytest-sample/FileProcessor.py +53 -0
  42. package/skills/pytest-sample/references/src/pytest-sample/OrderService.py +82 -0
  43. package/skills/pytest-sample/references/src/pytest-sample/TokenGenerator.py +50 -0
  44. package/skills/pytest-sample/references/src/pytest-sample/UserService.py +45 -0
  45. package/skills/pytest-sample/references/src/pytest-sample/__init__.py +0 -0
  46. package/skills/pytest-suitability-check/SKILL.md +224 -0
  47. package/skills/read-docs/SKILL.md +134 -0
  48. package/skills/read-docs/references/opencode/agents/cases.md +206 -0
  49. package/skills/read-docs/references/opencode/agents/design-pattern.md +47 -0
  50. package/skills/read-docs/references/opencode/agents/detail.md +191 -0
  51. package/skills/read-docs/references/opencode/agents/examples.md +100 -0
  52. package/skills/read-docs/references/opencode/agents/index.md +307 -0
  53. package/skills/read-docs/references/opencode/agents/workflow.md +161 -0
  54. package/skills/read-docs/references/opencode/cli/commands/acp.md +32 -0
  55. package/skills/read-docs/references/opencode/cli/commands/agent.md +16 -0
  56. package/skills/read-docs/references/opencode/cli/commands/attach.md +20 -0
  57. package/skills/read-docs/references/opencode/cli/commands/mcp.md +37 -0
  58. package/skills/read-docs/references/opencode/cli/commands/others.md +49 -0
  59. package/skills/read-docs/references/opencode/cli/commands/plugin.md +13 -0
  60. package/skills/read-docs/references/opencode/cli/commands/provider.md +44 -0
  61. package/skills/read-docs/references/opencode/cli/commands/run.md +81 -0
  62. package/skills/read-docs/references/opencode/cli/commands/serve.md +84 -0
  63. package/skills/read-docs/references/opencode/cli/commands/session.md +38 -0
  64. package/skills/read-docs/references/opencode/cli/commands/web.md +15 -0
  65. package/skills/read-docs/references/opencode/cli/env.md +39 -0
  66. package/skills/read-docs/references/opencode/cli/index.md +19 -0
  67. package/skills/read-docs/references/opencode/cli/tui.md +35 -0
  68. package/skills/read-docs/references/opencode/commands/examples.md +42 -0
  69. package/skills/read-docs/references/opencode/commands/index.md +185 -0
  70. package/skills/read-docs/references/opencode/config/provider.md +152 -0
  71. package/skills/read-docs/references/opencode/formatter/index.md +71 -0
  72. package/skills/read-docs/references/opencode/guide/config.md +419 -0
  73. package/skills/read-docs/references/opencode/guide/formatters.md +70 -0
  74. package/skills/read-docs/references/opencode/guide/index.md +37 -0
  75. package/skills/read-docs/references/opencode/guide/providers.md +31 -0
  76. package/skills/read-docs/references/opencode/guide/rules.md +63 -0
  77. package/skills/read-docs/references/opencode/plugins/examples.md +75 -0
  78. package/skills/read-docs/references/opencode/plugins/index.md +188 -0
  79. package/skills/read-docs/references/opencode/reference/index.md +119 -0
  80. package/skills/read-docs/references/opencode/rule/index.md +78 -0
  81. package/skills/read-docs/references/opencode/skills/detail.md +113 -0
  82. package/skills/read-docs/references/opencode/skills/examples.md +141 -0
  83. package/skills/read-docs/references/opencode/skills/index.md +126 -0
  84. package/skills/read-docs/references/opencode/skills/workflow.md +146 -0
  85. package/skills/read-docs/references/opencode/tests/agent.md +10 -0
  86. package/skills/read-docs/references/opencode/tests/config.md +60 -0
  87. package/skills/read-docs/references/opencode/tests/file.md +12 -0
  88. package/skills/read-docs/references/opencode/tests/serve.md +18 -0
  89. package/skills/read-docs/references/opencode/tests/session.md +31 -0
  90. package/skills/read-docs/references/opencode/tests/web.md +17 -0
  91. package/skills/read-docs/references/opencode/tools/arguments.md +305 -0
  92. package/skills/read-docs/references/opencode/tools/context.md +18 -0
  93. package/skills/read-docs/references/opencode/tools/custom.md +111 -0
  94. package/skills/read-docs/references/opencode/tools/detail.md +104 -0
  95. package/skills/read-docs/references/opencode/tools/examples.md +71 -0
  96. package/skills/read-docs/references/opencode/tools/index.md +56 -0
  97. package/skills/read-docs/references/opencode/tools/lsp.md +26 -0
  98. package/skills/read-docs/references/opencode/tools/mcp.md +132 -0
  99. package/skills/read-docs/references/opencode/train/README.md +135 -0
  100. package/skills/read-docs/references/opencode/train/agent-basic.md +772 -0
  101. package/skills/read-docs/references/opencode/train/command-basic.md +668 -0
  102. package/skills/read-docs/references/opencode/train/config-basic.md +509 -0
  103. package/skills/read-docs/references/opencode/train/index.md +164 -0
  104. package/skills/read-docs/references/opencode/train/practice.md +873 -0
  105. package/skills/read-docs/references/opencode/train/skill-basic.md +608 -0
  106. package/skills/read-docs/references/opencode/tui/commands/config.md +32 -0
  107. package/skills/read-docs/references/opencode/tui/commands/editor.md +47 -0
  108. package/skills/read-docs/references/opencode/tui/commands/index.md +125 -0
  109. package/skills/read-docs/references/opencode/tui/commands/init.md +5 -0
  110. package/skills/read-docs/references/opencode/tui/index.md +26 -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 系统