@wwkit/harness 1.0.8 → 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.
- package/agents/extract.md +2 -14
- package/agents/lint.md +367 -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 +151 -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 +2 -2
- 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 +307 -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
|
@@ -0,0 +1,873 @@
|
|
|
1
|
+
# 实战案例培训
|
|
2
|
+
|
|
3
|
+
通过综合案例演练,巩固所学知识,解决实际问题。
|
|
4
|
+
|
|
5
|
+
## 案例 1:团队协作项目配置
|
|
6
|
+
|
|
7
|
+
### 场景描述
|
|
8
|
+
|
|
9
|
+
团队需要统一 OpenCode 配置,确保:
|
|
10
|
+
- 使用统一的模型和权限
|
|
11
|
+
- 定义团队常用 Agent 和技能
|
|
12
|
+
- 创建标准化的命令
|
|
13
|
+
|
|
14
|
+
### 解决方案
|
|
15
|
+
|
|
16
|
+
#### 1. 创建项目配置
|
|
17
|
+
|
|
18
|
+
`.opencode/opencode.json`:
|
|
19
|
+
|
|
20
|
+
```jsonc
|
|
21
|
+
{
|
|
22
|
+
"$schema": "https://opencode.ai/config.json",
|
|
23
|
+
|
|
24
|
+
// 统一模型
|
|
25
|
+
"model": "anthropic/claude-sonnet-4-5",
|
|
26
|
+
"small_model": "anthropic/claude-haiku-4-5",
|
|
27
|
+
|
|
28
|
+
// 安全优先的权限配置
|
|
29
|
+
"permission": {
|
|
30
|
+
"edit": "ask",
|
|
31
|
+
"bash": {
|
|
32
|
+
"*": "ask",
|
|
33
|
+
"git status": "allow",
|
|
34
|
+
"git diff*": "allow",
|
|
35
|
+
"git log*": "allow",
|
|
36
|
+
"npm run lint": "allow",
|
|
37
|
+
"npm test": "allow",
|
|
38
|
+
"npm run build": "allow"
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
|
|
42
|
+
// 团队 Agent
|
|
43
|
+
"agent": {
|
|
44
|
+
"reviewer": {
|
|
45
|
+
"description": "代码审查:检查代码质量和安全性",
|
|
46
|
+
"mode": "subagent",
|
|
47
|
+
"model": "anthropic/claude-haiku-4-5",
|
|
48
|
+
"temperature": 0.1,
|
|
49
|
+
"permission": {
|
|
50
|
+
"edit": "deny",
|
|
51
|
+
"bash": {
|
|
52
|
+
"*": "deny",
|
|
53
|
+
"git diff*": "allow",
|
|
54
|
+
"git log*": "allow"
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
|
|
59
|
+
"docs-writer": {
|
|
60
|
+
"description": "文档编写:API 文档、README",
|
|
61
|
+
"mode": "subagent",
|
|
62
|
+
"model": "anthropic/claude-sonnet-4-5",
|
|
63
|
+
"temperature": 0.3
|
|
64
|
+
},
|
|
65
|
+
|
|
66
|
+
"tester": {
|
|
67
|
+
"description": "测试执行:运行测试并分析失败",
|
|
68
|
+
"mode": "subagent",
|
|
69
|
+
"model": "anthropic/claude-haiku-4-5",
|
|
70
|
+
"permission": {
|
|
71
|
+
"bash": {
|
|
72
|
+
"*": "deny",
|
|
73
|
+
"npm test": "allow",
|
|
74
|
+
"npm run test:*": "allow"
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
|
|
80
|
+
// 团队命令
|
|
81
|
+
"command": {
|
|
82
|
+
"lint": {
|
|
83
|
+
"template": "运行 ESLint 检查并修复问题",
|
|
84
|
+
"description": "代码规范检查",
|
|
85
|
+
"agent": "build"
|
|
86
|
+
},
|
|
87
|
+
|
|
88
|
+
"test": {
|
|
89
|
+
"template": "运行测试套件并分析失败",
|
|
90
|
+
"description": "运行测试",
|
|
91
|
+
"agent": "tester"
|
|
92
|
+
},
|
|
93
|
+
|
|
94
|
+
"review": {
|
|
95
|
+
"template": "审查代码变更",
|
|
96
|
+
"description": "代码审查",
|
|
97
|
+
"agent": "reviewer"
|
|
98
|
+
},
|
|
99
|
+
|
|
100
|
+
"docs": {
|
|
101
|
+
"template": "为 $ARGUMENTS 生成文档",
|
|
102
|
+
"description": "生成文档",
|
|
103
|
+
"agent": "docs-writer"
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
|
|
107
|
+
// 启用 LSP
|
|
108
|
+
"lsp": true
|
|
109
|
+
}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
#### 2. 创建团队技能
|
|
113
|
+
|
|
114
|
+
`.opencode/skills/team-workflow/SKILL.md`:
|
|
115
|
+
|
|
116
|
+
```markdown
|
|
117
|
+
---
|
|
118
|
+
name: team-workflow
|
|
119
|
+
description: |
|
|
120
|
+
团队协作工作流技能,标准化开发流程。
|
|
121
|
+
提供:PR 流程、代码规范、测试标准。
|
|
122
|
+
适用:团队项目开发、协作开发。
|
|
123
|
+
不适用:个人项目、实验性开发。
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
# 团队协作工作流
|
|
127
|
+
|
|
128
|
+
## 开发流程
|
|
129
|
+
|
|
130
|
+
### 1. 功能开发
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
# 创建分支
|
|
134
|
+
git checkout -b feat/功能名/yyyy-mm-dd
|
|
135
|
+
|
|
136
|
+
# 开发代码
|
|
137
|
+
# ...
|
|
138
|
+
|
|
139
|
+
# 运行检查
|
|
140
|
+
npm run lint
|
|
141
|
+
npm test
|
|
142
|
+
|
|
143
|
+
# 提交代码
|
|
144
|
+
git add .
|
|
145
|
+
git commit -m "feat: 功能描述"
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### 2. 代码审查
|
|
149
|
+
|
|
150
|
+
使用 `/review` 命令:
|
|
151
|
+
- 检查代码质量
|
|
152
|
+
- 检查安全性
|
|
153
|
+
- 检查性能
|
|
154
|
+
|
|
155
|
+
### 3. 创建 PR
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
git push origin feat/功能名/yyyy-mm-dd
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
## 代码规范
|
|
162
|
+
|
|
163
|
+
详细规范见 `references/code-standards.md`
|
|
164
|
+
|
|
165
|
+
## 测试标准
|
|
166
|
+
|
|
167
|
+
详细标准见 `references/test-standards.md`
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
#### 3. 创建团队规则
|
|
171
|
+
|
|
172
|
+
`AGENTS.md`:
|
|
173
|
+
|
|
174
|
+
```markdown
|
|
175
|
+
# 团队开发规范
|
|
176
|
+
|
|
177
|
+
## 提交规范
|
|
178
|
+
|
|
179
|
+
使用 Conventional Commits:
|
|
180
|
+
- feat: 新功能
|
|
181
|
+
- fix: Bug 修复
|
|
182
|
+
- docs: 文档更新
|
|
183
|
+
- style: 格式调整
|
|
184
|
+
- refactor: 重构
|
|
185
|
+
- test: 测试相关
|
|
186
|
+
- chore: 工程配置
|
|
187
|
+
|
|
188
|
+
## 分支命名
|
|
189
|
+
|
|
190
|
+
格式:`type/关键字/yyyy-mm-dd`
|
|
191
|
+
|
|
192
|
+
示例:
|
|
193
|
+
- feat/user-auth/2024-01-15
|
|
194
|
+
- fix/login-bug/2024-01-16
|
|
195
|
+
|
|
196
|
+
## 代码规范
|
|
197
|
+
|
|
198
|
+
- 使用 2 空格缩进
|
|
199
|
+
- 使用单引号
|
|
200
|
+
- 语句末尾无分号
|
|
201
|
+
- 变量使用 camelCase
|
|
202
|
+
- 常量使用 UPPER_CASE
|
|
203
|
+
|
|
204
|
+
## 测试要求
|
|
205
|
+
|
|
206
|
+
- 新功能必须有测试
|
|
207
|
+
- Bug 修复必须有测试
|
|
208
|
+
- 测试覆盖率 > 80%
|
|
209
|
+
|
|
210
|
+
## 文档要求
|
|
211
|
+
|
|
212
|
+
- README 必须包含快速开始
|
|
213
|
+
- API 必须有文档
|
|
214
|
+
- 复杂逻辑必须有注释
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
### 使用示例
|
|
218
|
+
|
|
219
|
+
```bash
|
|
220
|
+
# 开发流程
|
|
221
|
+
/test # 运行测试
|
|
222
|
+
/lint # 检查代码规范
|
|
223
|
+
/review # 审查代码
|
|
224
|
+
/commit feat: 添加用户认证 # 提交代码
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
## 案例 2:自动化 CI/CD 集成
|
|
228
|
+
|
|
229
|
+
### 场景描述
|
|
230
|
+
|
|
231
|
+
将 OpenCode Agent 集成到 CI/CD 流程,自动执行:
|
|
232
|
+
- 代码审查
|
|
233
|
+
- 测试运行
|
|
234
|
+
- 文档生成
|
|
235
|
+
|
|
236
|
+
### 解决方案
|
|
237
|
+
|
|
238
|
+
#### 1. 创建 CI Agent
|
|
239
|
+
|
|
240
|
+
`.opencode/agents/ci-bot.md`:
|
|
241
|
+
|
|
242
|
+
```markdown
|
|
243
|
+
---
|
|
244
|
+
description: |
|
|
245
|
+
CI/CD 自动化 Agent,执行持续集成任务。
|
|
246
|
+
适用场景:自动化 PR 审查、测试执行、文档生成。
|
|
247
|
+
不适用:手动开发、功能实现。
|
|
248
|
+
mode: primary
|
|
249
|
+
model: anthropic/claude-opus-4-5
|
|
250
|
+
steps: 100
|
|
251
|
+
temperature: 0.1
|
|
252
|
+
permission:
|
|
253
|
+
edit: deny
|
|
254
|
+
bash:
|
|
255
|
+
"*": deny
|
|
256
|
+
"git log*": allow
|
|
257
|
+
"git diff*": allow
|
|
258
|
+
"npm test": allow
|
|
259
|
+
"npm run lint": allow
|
|
260
|
+
"npm run build": allow
|
|
261
|
+
task:
|
|
262
|
+
"*": deny
|
|
263
|
+
"reviewer": allow
|
|
264
|
+
"tester": allow
|
|
265
|
+
---
|
|
266
|
+
|
|
267
|
+
# CI/CD 自动化 Agent
|
|
268
|
+
|
|
269
|
+
## 工作流程
|
|
270
|
+
|
|
271
|
+
### 1. 获取变更
|
|
272
|
+
|
|
273
|
+
```bash
|
|
274
|
+
git diff origin/main...HEAD
|
|
275
|
+
git log origin/main..HEAD --oneline
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
### 2. 执行检查
|
|
279
|
+
|
|
280
|
+
- 运行 lint 检查
|
|
281
|
+
- 运行测试套件
|
|
282
|
+
- 调用 reviewer Agent 审查代码
|
|
283
|
+
|
|
284
|
+
### 3. 输出报告
|
|
285
|
+
|
|
286
|
+
```markdown
|
|
287
|
+
## CI 检查报告
|
|
288
|
+
|
|
289
|
+
### 变更摘要
|
|
290
|
+
- 文件数:X
|
|
291
|
+
- 新增行:X
|
|
292
|
+
- 删除行:X
|
|
293
|
+
|
|
294
|
+
### Lint 检查
|
|
295
|
+
- ✅/❌ [状态]
|
|
296
|
+
|
|
297
|
+
### 测试结果
|
|
298
|
+
- ✅/❌ [状态]
|
|
299
|
+
- 覆盖率:X%
|
|
300
|
+
|
|
301
|
+
### 代码审查
|
|
302
|
+
- 问题数:X
|
|
303
|
+
- 严重程度:[高/中/低]
|
|
304
|
+
|
|
305
|
+
### 建议
|
|
306
|
+
1. [建议内容]
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
## 约束条件
|
|
310
|
+
|
|
311
|
+
- ❌ 不修改代码
|
|
312
|
+
- ✅ 自动化检查
|
|
313
|
+
- ✅ 结构化输出
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
#### 2. 创建 CI 命令
|
|
317
|
+
|
|
318
|
+
`.opencode/commands/ci-check.md`:
|
|
319
|
+
|
|
320
|
+
```markdown
|
|
321
|
+
---
|
|
322
|
+
description: CI 检查流程
|
|
323
|
+
agent: ci-bot
|
|
324
|
+
---
|
|
325
|
+
|
|
326
|
+
执行完整 CI 检查流程:
|
|
327
|
+
|
|
328
|
+
## 1. 获取变更
|
|
329
|
+
!`git diff origin/main...HEAD`
|
|
330
|
+
|
|
331
|
+
## 2. 运行 lint
|
|
332
|
+
!`npm run lint`
|
|
333
|
+
|
|
334
|
+
## 3. 运行测试
|
|
335
|
+
!`npm test -- --coverage`
|
|
336
|
+
|
|
337
|
+
## 4. 构建项目
|
|
338
|
+
!`npm run build`
|
|
339
|
+
|
|
340
|
+
分析所有检查结果,输出 CI 报告。
|
|
341
|
+
|
|
342
|
+
如果任何检查失败,提供修复建议。
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
#### 3. CI 流水线集成
|
|
346
|
+
|
|
347
|
+
`.github/workflows/ci.yml`:
|
|
348
|
+
|
|
349
|
+
```yaml
|
|
350
|
+
name: CI
|
|
351
|
+
|
|
352
|
+
on: [pull_request]
|
|
353
|
+
|
|
354
|
+
jobs:
|
|
355
|
+
check:
|
|
356
|
+
runs-on: ubuntu-latest
|
|
357
|
+
steps:
|
|
358
|
+
- uses: actions/checkout@v2
|
|
359
|
+
|
|
360
|
+
- name: Setup Node.js
|
|
361
|
+
uses: actions/setup-node@v2
|
|
362
|
+
with:
|
|
363
|
+
node-version: '18'
|
|
364
|
+
|
|
365
|
+
- name: Install dependencies
|
|
366
|
+
run: npm ci
|
|
367
|
+
|
|
368
|
+
- name: Run OpenCode CI check
|
|
369
|
+
run: |
|
|
370
|
+
opencode --command ci-check
|
|
371
|
+
# 输出结果到 PR 评论
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
### 使用示例
|
|
375
|
+
|
|
376
|
+
```bash
|
|
377
|
+
# 手动触发 CI 检查
|
|
378
|
+
/ci-check
|
|
379
|
+
|
|
380
|
+
# 自动触发(PR 创建时)
|
|
381
|
+
# GitHub Actions 自动运行
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
## 案例 3:文档站点自动化
|
|
385
|
+
|
|
386
|
+
### 场景描述
|
|
387
|
+
|
|
388
|
+
自动生成和维护文档站点:
|
|
389
|
+
- API 文档自动生成
|
|
390
|
+
- README 自动更新
|
|
391
|
+
- 示例代码自动提取
|
|
392
|
+
|
|
393
|
+
### 解决方案
|
|
394
|
+
|
|
395
|
+
#### 1. 创建文档生成技能
|
|
396
|
+
|
|
397
|
+
`.opencode/skills/auto-docs/SKILL.md`:
|
|
398
|
+
|
|
399
|
+
```markdown
|
|
400
|
+
---
|
|
401
|
+
name: auto-docs
|
|
402
|
+
description: |
|
|
403
|
+
自动文档生成技能,从代码自动生成文档。
|
|
404
|
+
提供:API 文档模板、README 模板、示例提取规则。
|
|
405
|
+
适用:自动生成 API 文档、更新 README、提取示例。
|
|
406
|
+
不适用:手动编写文档、非代码文档。
|
|
407
|
+
---
|
|
408
|
+
|
|
409
|
+
# 自动文档生成
|
|
410
|
+
|
|
411
|
+
## 工作流程
|
|
412
|
+
|
|
413
|
+
### 1. 分析代码
|
|
414
|
+
|
|
415
|
+
- 扫描源码目录
|
|
416
|
+
- 提取函数和类定义
|
|
417
|
+
- 提取注释和类型信息
|
|
418
|
+
|
|
419
|
+
### 2. 生成文档
|
|
420
|
+
|
|
421
|
+
#### API 文档
|
|
422
|
+
|
|
423
|
+
```markdown
|
|
424
|
+
## 函数名
|
|
425
|
+
|
|
426
|
+
### 描述
|
|
427
|
+
[从注释提取]
|
|
428
|
+
|
|
429
|
+
### 参数
|
|
430
|
+
| 参数 | 类型 | 默认值 | 说明 |
|
|
431
|
+
|-----|------|--------|------|
|
|
432
|
+
| ... | ... | ... | ... |
|
|
433
|
+
|
|
434
|
+
### 返回值
|
|
435
|
+
- 类型:[类型]
|
|
436
|
+
- 说明:[说明]
|
|
437
|
+
|
|
438
|
+
### 示例
|
|
439
|
+
[从代码提取]
|
|
440
|
+
```
|
|
441
|
+
|
|
442
|
+
#### README
|
|
443
|
+
|
|
444
|
+
```markdown
|
|
445
|
+
# 项目名
|
|
446
|
+
|
|
447
|
+
## 快速开始
|
|
448
|
+
[从示例提取]
|
|
449
|
+
|
|
450
|
+
## API 文档
|
|
451
|
+
[链接到 API 文档]
|
|
452
|
+
|
|
453
|
+
## 示例
|
|
454
|
+
[从代码提取]
|
|
455
|
+
```
|
|
456
|
+
|
|
457
|
+
### 3. 验证文档
|
|
458
|
+
|
|
459
|
+
- 检查示例代码可运行
|
|
460
|
+
- 检查参数说明完整
|
|
461
|
+
- 检查链接有效
|
|
462
|
+
|
|
463
|
+
## 文档模板
|
|
464
|
+
|
|
465
|
+
详细模板见 `references/templates.md`
|
|
466
|
+
|
|
467
|
+
## 示例提取规则
|
|
468
|
+
|
|
469
|
+
详细规则见 `references/extract-rules.md`
|
|
470
|
+
```
|
|
471
|
+
|
|
472
|
+
#### 2. 创建文档 Agent
|
|
473
|
+
|
|
474
|
+
`.opencode/agents/doc-generator.md`:
|
|
475
|
+
|
|
476
|
+
```markdown
|
|
477
|
+
---
|
|
478
|
+
description: |
|
|
479
|
+
文档生成 Agent,自动生成和维护文档。
|
|
480
|
+
适用场景:API 文档生成、README 更新、示例提取。
|
|
481
|
+
不适用:手动文档编写、非代码文档。
|
|
482
|
+
mode: subagent
|
|
483
|
+
model: anthropic/claude-sonnet-4-5
|
|
484
|
+
temperature: 0.3
|
|
485
|
+
---
|
|
486
|
+
|
|
487
|
+
# 文档生成 Agent
|
|
488
|
+
|
|
489
|
+
## 能力
|
|
490
|
+
|
|
491
|
+
- 从代码提取 API 信息
|
|
492
|
+
- 生成标准化文档
|
|
493
|
+
- 更新 README
|
|
494
|
+
- 提取示例代码
|
|
495
|
+
|
|
496
|
+
## 工作流程
|
|
497
|
+
|
|
498
|
+
1. 扫描代码目录
|
|
499
|
+
2. 分析代码结构
|
|
500
|
+
3. 生成文档
|
|
501
|
+
4. 验证文档
|
|
502
|
+
|
|
503
|
+
## 输出格式
|
|
504
|
+
|
|
505
|
+
- API 文档:Markdown 格式
|
|
506
|
+
- README:标准模板
|
|
507
|
+
- 示例:可运行代码
|
|
508
|
+
```
|
|
509
|
+
|
|
510
|
+
#### 3. 创建文档命令
|
|
511
|
+
|
|
512
|
+
`.opencode/commands/gen-docs.md`:
|
|
513
|
+
|
|
514
|
+
```markdown
|
|
515
|
+
---
|
|
516
|
+
description: 生成完整文档
|
|
517
|
+
agent: doc-generator
|
|
518
|
+
---
|
|
519
|
+
|
|
520
|
+
为以下目录生成完整文档:
|
|
521
|
+
$ARGUMENTS
|
|
522
|
+
|
|
523
|
+
## 生成内容
|
|
524
|
+
|
|
525
|
+
1. API 文档
|
|
526
|
+
2. README 更新
|
|
527
|
+
3. 示例提取
|
|
528
|
+
|
|
529
|
+
## 输出位置
|
|
530
|
+
|
|
531
|
+
- API 文档:docs/api/
|
|
532
|
+
- README:README.md
|
|
533
|
+
- 示例:docs/examples/
|
|
534
|
+
|
|
535
|
+
生成完成后验证文档完整性。
|
|
536
|
+
```
|
|
537
|
+
|
|
538
|
+
### 使用示例
|
|
539
|
+
|
|
540
|
+
```bash
|
|
541
|
+
# 为整个项目生成文档
|
|
542
|
+
/gen-docs src/
|
|
543
|
+
|
|
544
|
+
# 为特定模块生成文档
|
|
545
|
+
/gen-docs src/utils/
|
|
546
|
+
|
|
547
|
+
# 更新 README
|
|
548
|
+
/gen-docs README.md
|
|
549
|
+
```
|
|
550
|
+
|
|
551
|
+
## 案例 4:多语言项目配置
|
|
552
|
+
|
|
553
|
+
### 场景描述
|
|
554
|
+
|
|
555
|
+
多语言项目需要:
|
|
556
|
+
- 不同语言使用不同 Agent
|
|
557
|
+
- 统一的代码规范
|
|
558
|
+
- 语言特定的技能
|
|
559
|
+
|
|
560
|
+
### 解决方案
|
|
561
|
+
|
|
562
|
+
#### 1. 创建语言特定 Agent
|
|
563
|
+
|
|
564
|
+
`.opencode/agents/ts-dev.md`:
|
|
565
|
+
|
|
566
|
+
```markdown
|
|
567
|
+
---
|
|
568
|
+
description: TypeScript 开发 Agent
|
|
569
|
+
mode: subagent
|
|
570
|
+
model: anthropic/claude-sonnet-4-5
|
|
571
|
+
---
|
|
572
|
+
|
|
573
|
+
# TypeScript 开发 Agent
|
|
574
|
+
|
|
575
|
+
## 能力
|
|
576
|
+
|
|
577
|
+
- TypeScript 类型定义
|
|
578
|
+
- 接口设计
|
|
579
|
+
- 类型安全实现
|
|
580
|
+
|
|
581
|
+
## 规范
|
|
582
|
+
|
|
583
|
+
- 使用 interface 定义类型
|
|
584
|
+
- 使用 type 定义联合类型
|
|
585
|
+
- 避免使用 any
|
|
586
|
+
- 优先使用 const
|
|
587
|
+
```
|
|
588
|
+
|
|
589
|
+
`.opencode/agents/python-dev.md`:
|
|
590
|
+
|
|
591
|
+
```markdown
|
|
592
|
+
---
|
|
593
|
+
description: Python 开发 Agent
|
|
594
|
+
mode: subagent
|
|
595
|
+
model: anthropic/claude-sonnet-4-5
|
|
596
|
+
---
|
|
597
|
+
|
|
598
|
+
# Python 开发 Agent
|
|
599
|
+
|
|
600
|
+
## 能力
|
|
601
|
+
|
|
602
|
+
- Python 代码实现
|
|
603
|
+
- 类型提示
|
|
604
|
+
- Pythonic 代码风格
|
|
605
|
+
|
|
606
|
+
## 规范
|
|
607
|
+
|
|
608
|
+
- 使用 type hints
|
|
609
|
+
- 遵循 PEP 8
|
|
610
|
+
- 使用 f-string
|
|
611
|
+
- 优先使用 list comprehension
|
|
612
|
+
```
|
|
613
|
+
|
|
614
|
+
#### 2. 创建语言检测技能
|
|
615
|
+
|
|
616
|
+
`.opencode/skills/lang-detect/SKILL.md`:
|
|
617
|
+
|
|
618
|
+
```markdown
|
|
619
|
+
---
|
|
620
|
+
name: lang-detect
|
|
621
|
+
description: |
|
|
622
|
+
语言检测技能,自动识别代码语言并调用对应 Agent。
|
|
623
|
+
适用:多语言项目开发、混合语言项目。
|
|
624
|
+
---
|
|
625
|
+
|
|
626
|
+
# 语言检测技能
|
|
627
|
+
|
|
628
|
+
## 工作流程
|
|
629
|
+
|
|
630
|
+
1. 分析文件扩展名
|
|
631
|
+
2. 识别代码语言
|
|
632
|
+
3. 调用对应 Agent
|
|
633
|
+
|
|
634
|
+
## 语言映射
|
|
635
|
+
|
|
636
|
+
| 扩展名 | 语言 | Agent |
|
|
637
|
+
|--------|------|-------|
|
|
638
|
+
| .ts, .tsx | TypeScript | ts-dev |
|
|
639
|
+
| .py | Python | python-dev |
|
|
640
|
+
| .js, .jsx | JavaScript | js-dev |
|
|
641
|
+
| .go | Go | go-dev |
|
|
642
|
+
|
|
643
|
+
## 调用方式
|
|
644
|
+
|
|
645
|
+
根据文件扩展名自动调用对应 Agent。
|
|
646
|
+
```
|
|
647
|
+
|
|
648
|
+
#### 3. 创建通用命令
|
|
649
|
+
|
|
650
|
+
`.opencode/commands/dev.md`:
|
|
651
|
+
|
|
652
|
+
```markdown
|
|
653
|
+
---
|
|
654
|
+
description: 语言自适应开发
|
|
655
|
+
---
|
|
656
|
+
|
|
657
|
+
开发功能:$ARGUMENTS
|
|
658
|
+
|
|
659
|
+
## 自动检测
|
|
660
|
+
|
|
661
|
+
根据文件扩展名自动选择 Agent:
|
|
662
|
+
- TypeScript → @ts-dev
|
|
663
|
+
- Python → @python-dev
|
|
664
|
+
- JavaScript → @js-dev
|
|
665
|
+
|
|
666
|
+
## 开发流程
|
|
667
|
+
|
|
668
|
+
1. 分析需求
|
|
669
|
+
2. 选择语言和 Agent
|
|
670
|
+
3. 实现代码
|
|
671
|
+
4. 验证实现
|
|
672
|
+
```
|
|
673
|
+
|
|
674
|
+
### 使用示例
|
|
675
|
+
|
|
676
|
+
```bash
|
|
677
|
+
# 自动检测语言并开发
|
|
678
|
+
/dev src/utils/helper.ts "创建日期格式化函数"
|
|
679
|
+
/dev src/utils/parser.py "创建 JSON 解析器"
|
|
680
|
+
```
|
|
681
|
+
|
|
682
|
+
## 案例 5:安全审查系统
|
|
683
|
+
|
|
684
|
+
### 场景描述
|
|
685
|
+
|
|
686
|
+
建立完整的安全审查系统:
|
|
687
|
+
- 自动安全检查
|
|
688
|
+
- 漏洞扫描
|
|
689
|
+
- 安全报告生成
|
|
690
|
+
|
|
691
|
+
### 解决方案
|
|
692
|
+
|
|
693
|
+
#### 1. 创建安全审查 Agent
|
|
694
|
+
|
|
695
|
+
`.opencode/agents/security-reviewer.md`:
|
|
696
|
+
|
|
697
|
+
```markdown
|
|
698
|
+
---
|
|
699
|
+
description: |
|
|
700
|
+
安全审查 Agent,检查代码安全性问题。
|
|
701
|
+
适用场景:安全审查、漏洞扫描、安全报告。
|
|
702
|
+
不适用:功能开发、性能优化。
|
|
703
|
+
mode: primary
|
|
704
|
+
model: anthropic/claude-opus-4-5
|
|
705
|
+
temperature: 0.1
|
|
706
|
+
permission:
|
|
707
|
+
edit: deny
|
|
708
|
+
bash:
|
|
709
|
+
"*": deny
|
|
710
|
+
"npm audit": allow
|
|
711
|
+
"git diff*": allow
|
|
712
|
+
---
|
|
713
|
+
|
|
714
|
+
# 安全审查 Agent
|
|
715
|
+
|
|
716
|
+
## 审查清单
|
|
717
|
+
|
|
718
|
+
### 输入验证
|
|
719
|
+
- [ ] 用户输入是否验证
|
|
720
|
+
- [ ] 是否有 XSS 风险
|
|
721
|
+
- [ ] 是否有 SQL 注入风险
|
|
722
|
+
|
|
723
|
+
### 权限检查
|
|
724
|
+
- [ ] 敏感操作是否有权限验证
|
|
725
|
+
- [ ] 是否有越权风险
|
|
726
|
+
|
|
727
|
+
### 数据安全
|
|
728
|
+
- [ ] 是否暴露敏感信息
|
|
729
|
+
- [ ] 密码和密钥是否硬编码
|
|
730
|
+
- [ ] 是否使用 HTTPS
|
|
731
|
+
|
|
732
|
+
### 依赖安全
|
|
733
|
+
- [ ] 依赖是否有已知漏洞
|
|
734
|
+
- [ ] 是否使用过时依赖
|
|
735
|
+
|
|
736
|
+
## 工作流程
|
|
737
|
+
|
|
738
|
+
1. 运行 npm audit
|
|
739
|
+
2. 分析代码变更
|
|
740
|
+
3. 检查安全清单
|
|
741
|
+
4. 输出安全报告
|
|
742
|
+
|
|
743
|
+
## 输出格式
|
|
744
|
+
|
|
745
|
+
```markdown
|
|
746
|
+
## 安全审查报告
|
|
747
|
+
|
|
748
|
+
### 依赖漏洞
|
|
749
|
+
- [漏洞列表]
|
|
750
|
+
|
|
751
|
+
### 代码安全问题
|
|
752
|
+
- [问题列表]
|
|
753
|
+
|
|
754
|
+
### 建议
|
|
755
|
+
- [修复建议]
|
|
756
|
+
```
|
|
757
|
+
```
|
|
758
|
+
|
|
759
|
+
#### 2. 创建安全审查命令
|
|
760
|
+
|
|
761
|
+
`.opencode/commands/security-check.md`:
|
|
762
|
+
|
|
763
|
+
```markdown
|
|
764
|
+
---
|
|
765
|
+
description: 安全审查
|
|
766
|
+
agent: security-reviewer
|
|
767
|
+
---
|
|
768
|
+
|
|
769
|
+
执行完整安全审查:
|
|
770
|
+
|
|
771
|
+
## 1. 依赖漏洞扫描
|
|
772
|
+
!`npm audit`
|
|
773
|
+
|
|
774
|
+
## 2. 代码变更分析
|
|
775
|
+
!`git diff HEAD`
|
|
776
|
+
|
|
777
|
+
## 3. 安全清单检查
|
|
778
|
+
按照安全清单逐项检查。
|
|
779
|
+
|
|
780
|
+
输出完整安全报告,包括:
|
|
781
|
+
- 依赖漏洞
|
|
782
|
+
- 代码安全问题
|
|
783
|
+
- 修复建议
|
|
784
|
+
```
|
|
785
|
+
|
|
786
|
+
### 使用示例
|
|
787
|
+
|
|
788
|
+
```bash
|
|
789
|
+
# 执行安全审查
|
|
790
|
+
/security-check
|
|
791
|
+
|
|
792
|
+
# 审查特定文件
|
|
793
|
+
/security-check src/api/auth.ts
|
|
794
|
+
```
|
|
795
|
+
|
|
796
|
+
## 常见问题解决
|
|
797
|
+
|
|
798
|
+
### 问题 1:Agent 权限过于严格
|
|
799
|
+
|
|
800
|
+
**症状**:Agent 无法执行必要操作
|
|
801
|
+
|
|
802
|
+
**解决**:
|
|
803
|
+
```jsonc
|
|
804
|
+
{
|
|
805
|
+
"permission": {
|
|
806
|
+
"bash": {
|
|
807
|
+
"*": "ask", // 默认需审批
|
|
808
|
+
"git *": "allow", // git 命令允许
|
|
809
|
+
"npm *": "allow" // npm 命令允许
|
|
810
|
+
}
|
|
811
|
+
}
|
|
812
|
+
}
|
|
813
|
+
```
|
|
814
|
+
|
|
815
|
+
### 问题 2:技能加载失败
|
|
816
|
+
|
|
817
|
+
**症状**:技能未按预期加载
|
|
818
|
+
|
|
819
|
+
**检查**:
|
|
820
|
+
1. SKILL.md 文件位置正确
|
|
821
|
+
2. Frontmatter 格式正确
|
|
822
|
+
3. Description 足够具体
|
|
823
|
+
|
|
824
|
+
### 问题 3:命令参数传递错误
|
|
825
|
+
|
|
826
|
+
**症状**:参数未正确传递
|
|
827
|
+
|
|
828
|
+
**解决**:
|
|
829
|
+
- 使用 `$ARGUMENTS` 传递所有参数
|
|
830
|
+
- 使用 `$1, $2, $3` 传递位置参数
|
|
831
|
+
- 检查命令调用格式
|
|
832
|
+
|
|
833
|
+
### 问题 4:多 Agent 协作混乱
|
|
834
|
+
|
|
835
|
+
**症状**:Agent 调用不清晰
|
|
836
|
+
|
|
837
|
+
**解决**:
|
|
838
|
+
- 明确 Agent 类型(primary/subagent)
|
|
839
|
+
- 使用 `@` 明确调用 Subagent
|
|
840
|
+
- 在配置中设置 `mode`
|
|
841
|
+
|
|
842
|
+
## 最佳实践总结
|
|
843
|
+
|
|
844
|
+
### 配置管理
|
|
845
|
+
|
|
846
|
+
1. **项目级配置优先**:团队统一配置
|
|
847
|
+
2. **权限安全优先**:默认 ask,明确 allow
|
|
848
|
+
3. **模型按需选择**:简单任务用小模型
|
|
849
|
+
|
|
850
|
+
### Agent 设计
|
|
851
|
+
|
|
852
|
+
1. **专门化**:每个 Agent 专注一类任务
|
|
853
|
+
2. **权限隔离**:审查 Agent 禁止编辑
|
|
854
|
+
3. **模型适配**:复杂任务用大模型
|
|
855
|
+
|
|
856
|
+
### 技能设计
|
|
857
|
+
|
|
858
|
+
1. **工作流清晰**:明确步骤和规则
|
|
859
|
+
2. **references 分离**:详细文档独立存放
|
|
860
|
+
3. **描述具体**:说明适用和不适用场景
|
|
861
|
+
|
|
862
|
+
### 命令设计
|
|
863
|
+
|
|
864
|
+
1. **参数化**:支持 `$ARGUMENTS`
|
|
865
|
+
2. **Shell 集成**:注入命令输出
|
|
866
|
+
3. **Agent 指定**:明确执行 Agent
|
|
867
|
+
|
|
868
|
+
## 下一步学习
|
|
869
|
+
|
|
870
|
+
- 📖 [技能详解](/skills/detail) - 深入理解技能系统
|
|
871
|
+
- 🤖 [Agent 详解](/agents/detail) - 深入理解 Agent 系统
|
|
872
|
+
- ⚡ [命令示例](/commands/examples) - 更多命令示例
|
|
873
|
+
- 🎯 [Agent 设计模式](/agents/design-pattern) - Agent 设计原则
|