mcp-probe-kit 1.3.0 → 1.6.0
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/README.md +719 -74
- package/build/index.js +362 -1
- package/build/tools/add_feature.d.ts +33 -0
- package/build/tools/add_feature.js +464 -0
- package/build/tools/css_order.d.ts +13 -0
- package/build/tools/css_order.js +81 -0
- package/build/tools/estimate.d.ts +22 -0
- package/build/tools/estimate.js +225 -0
- package/build/tools/fix_bug.d.ts +24 -0
- package/build/tools/fix_bug.js +298 -0
- package/build/tools/gen_mock.d.ts +22 -0
- package/build/tools/gen_mock.js +250 -0
- package/build/tools/index.d.ts +15 -0
- package/build/tools/index.js +16 -0
- package/build/tools/init_project.js +121 -76
- package/build/tools/init_project_context.d.ts +26 -0
- package/build/tools/init_project_context.js +331 -0
- package/build/tools/security_scan.d.ts +22 -0
- package/build/tools/security_scan.js +282 -0
- package/build/tools/start_api.d.ts +19 -0
- package/build/tools/start_api.js +178 -0
- package/build/tools/start_bugfix.d.ts +19 -0
- package/build/tools/start_bugfix.js +127 -0
- package/build/tools/start_doc.d.ts +19 -0
- package/build/tools/start_doc.js +190 -0
- package/build/tools/start_feature.d.ts +19 -0
- package/build/tools/start_feature.js +122 -0
- package/build/tools/start_onboard.d.ts +19 -0
- package/build/tools/start_onboard.js +146 -0
- package/build/tools/start_refactor.d.ts +19 -0
- package/build/tools/start_refactor.js +175 -0
- package/build/tools/start_release.d.ts +19 -0
- package/build/tools/start_release.js +152 -0
- package/build/tools/start_review.d.ts +19 -0
- package/build/tools/start_review.js +162 -0
- package/docs/BEST_PRACTICES.md +722 -0
- package/docs/HOW_TO_TRIGGER.html +186 -0
- package/docs/HOW_TO_TRIGGER.md +941 -0
- package/docs/specs/add-feature/design.md +608 -0
- package/docs/specs/add-feature/requirements.md +175 -0
- package/docs/specs/add-feature/tasks.md +111 -0
- package/docs/specs/estimate/design.md +209 -0
- package/docs/specs/estimate/requirements.md +140 -0
- package/docs/specs/estimate/tasks.md +66 -0
- package/docs/specs/fix-bug/design.md +259 -0
- package/docs/specs/fix-bug/requirements.md +132 -0
- package/docs/specs/fix-bug/tasks.md +66 -0
- package/docs/specs/gen-mock/design.md +241 -0
- package/docs/specs/gen-mock/requirements.md +137 -0
- package/docs/specs/gen-mock/tasks.md +66 -0
- package/docs/specs/init-project-context/design.md +515 -0
- package/docs/specs/init-project-context/requirements.md +144 -0
- package/docs/specs/init-project-context/tasks.md +93 -0
- package/docs/specs/security-scan/design.md +152 -0
- package/docs/specs/security-scan/requirements.md +150 -0
- package/docs/specs/security-scan/tasks.md +67 -0
- package/docs/specs/start-bugfix/design.md +42 -0
- package/docs/specs/start-bugfix/requirements.md +70 -0
- package/docs/specs/start-bugfix/tasks.md +21 -0
- package/docs/specs/start-feature/design.md +41 -0
- package/docs/specs/start-feature/requirements.md +90 -0
- package/docs/specs/start-feature/tasks.md +21 -0
- package/docs/specs/start-review/requirements.md +0 -0
- package/package.json +66 -65
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* estimate 工具
|
|
3
|
+
*
|
|
4
|
+
* 功能:评估开发任务的工作量
|
|
5
|
+
* 模式:指令生成器模式 - 返回估算指南,由 AI 执行实际分析
|
|
6
|
+
*/
|
|
7
|
+
const PROMPT_TEMPLATE = `# 工作量估算指南
|
|
8
|
+
|
|
9
|
+
## 🎯 估算目标
|
|
10
|
+
|
|
11
|
+
**任务描述**:
|
|
12
|
+
{task_description}
|
|
13
|
+
|
|
14
|
+
**上下文信息**:
|
|
15
|
+
- 团队规模: {team_size} 人
|
|
16
|
+
- 经验水平: {experience_level}
|
|
17
|
+
|
|
18
|
+
{code_context_section}
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## 📋 估算步骤
|
|
23
|
+
|
|
24
|
+
### 步骤 1: 任务分解
|
|
25
|
+
|
|
26
|
+
将任务分解为以下标准活动:
|
|
27
|
+
|
|
28
|
+
| 活动 | 说明 | 占比参考 |
|
|
29
|
+
|------|------|----------|
|
|
30
|
+
| 需求理解 | 理解需求、澄清疑问 | 5-10% |
|
|
31
|
+
| 设计 | 技术方案设计 | 10-15% |
|
|
32
|
+
| 编码 | 核心代码实现 | 40-50% |
|
|
33
|
+
| 单元测试 | 编写测试用例 | 15-20% |
|
|
34
|
+
| 代码审查 | CR 和修改 | 5-10% |
|
|
35
|
+
| 集成测试 | 联调和修复 | 10-15% |
|
|
36
|
+
| 文档 | 更新文档 | 5% |
|
|
37
|
+
|
|
38
|
+
### 步骤 2: 复杂度评估
|
|
39
|
+
|
|
40
|
+
对每个维度打分(1-5):
|
|
41
|
+
|
|
42
|
+
#### 代码量评估
|
|
43
|
+
| 等级 | 行数 | 说明 |
|
|
44
|
+
|------|------|------|
|
|
45
|
+
| 1 | < 50 行 | 微小改动 |
|
|
46
|
+
| 2 | 50-200 行 | 小改动 |
|
|
47
|
+
| 3 | 200-500 行 | 中等改动 |
|
|
48
|
+
| 4 | 500-1000 行 | 较大改动 |
|
|
49
|
+
| 5 | > 1000 行 | 大型改动 |
|
|
50
|
+
|
|
51
|
+
#### 技术难度评估
|
|
52
|
+
| 等级 | 说明 |
|
|
53
|
+
|------|------|
|
|
54
|
+
| 1 | 简单 CRUD、配置修改 |
|
|
55
|
+
| 2 | 常规业务逻辑 |
|
|
56
|
+
| 3 | 复杂算法、第三方集成 |
|
|
57
|
+
| 4 | 新技术栈、架构变更 |
|
|
58
|
+
| 5 | 核心系统重构 |
|
|
59
|
+
|
|
60
|
+
#### 依赖复杂度评估
|
|
61
|
+
| 等级 | 说明 |
|
|
62
|
+
|------|------|
|
|
63
|
+
| 1 | 无外部依赖,独立模块 |
|
|
64
|
+
| 2 | 依赖 1-2 个内部模块 |
|
|
65
|
+
| 3 | 依赖 3-5 个模块 |
|
|
66
|
+
| 4 | 跨团队协作 |
|
|
67
|
+
| 5 | 外部系统集成 |
|
|
68
|
+
|
|
69
|
+
#### 测试复杂度评估
|
|
70
|
+
| 等级 | 说明 |
|
|
71
|
+
|------|------|
|
|
72
|
+
| 1 | 简单单测即可 |
|
|
73
|
+
| 2 | 常规单测 + 少量集成测试 |
|
|
74
|
+
| 3 | 需要 Mock、集成测试 |
|
|
75
|
+
| 4 | 需要 E2E 测试 |
|
|
76
|
+
| 5 | 需要性能/安全测试 |
|
|
77
|
+
|
|
78
|
+
### 步骤 3: 时间估算
|
|
79
|
+
|
|
80
|
+
使用三点估算法(PERT):
|
|
81
|
+
|
|
82
|
+
| 场景 | 时间 | 说明 |
|
|
83
|
+
|------|------|------|
|
|
84
|
+
| 乐观 (O) | ?h | 一切顺利,无阻塞 |
|
|
85
|
+
| 正常 (M) | ?h | 预期情况,少量问题 |
|
|
86
|
+
| 悲观 (P) | ?h | 遇到较多问题 |
|
|
87
|
+
|
|
88
|
+
**期望时间** = (O + 4×M + P) ÷ 6 = ?h
|
|
89
|
+
|
|
90
|
+
### 步骤 4: 故事点映射
|
|
91
|
+
|
|
92
|
+
| 故事点 | 时间范围 | 适用场景 |
|
|
93
|
+
|--------|----------|----------|
|
|
94
|
+
| 1 | 1-2 小时 | 微小改动、配置修改 |
|
|
95
|
+
| 2 | 2-4 小时 | 小功能、Bug 修复 |
|
|
96
|
+
| 3 | 4-8 小时 | 中等功能 |
|
|
97
|
+
| 5 | 1-2 天 | 较大功能 |
|
|
98
|
+
| 8 | 2-3 天 | 大功能 |
|
|
99
|
+
| 13 | 3-5 天 | 需要拆分的大任务 |
|
|
100
|
+
|
|
101
|
+
### 步骤 5: 风险识别
|
|
102
|
+
|
|
103
|
+
识别可能影响估算的风险因素:
|
|
104
|
+
|
|
105
|
+
| 风险类型 | 检查项 |
|
|
106
|
+
|----------|--------|
|
|
107
|
+
| 技术风险 | 新技术?复杂算法?不熟悉的领域? |
|
|
108
|
+
| 依赖风险 | 外部依赖?团队协作?接口不稳定? |
|
|
109
|
+
| 需求风险 | 需求明确?可能变更?边界清晰? |
|
|
110
|
+
| 资源风险 | 人员可用?环境就绪? |
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## 📊 输出模板
|
|
115
|
+
|
|
116
|
+
### 估算结果
|
|
117
|
+
|
|
118
|
+
| 项目 | 结果 |
|
|
119
|
+
|------|------|
|
|
120
|
+
| **故事点** | X 点 |
|
|
121
|
+
| **预估时间** | X-X 小时/天 |
|
|
122
|
+
| **置信度** | 高 / 中 / 低 |
|
|
123
|
+
|
|
124
|
+
### 复杂度分析
|
|
125
|
+
|
|
126
|
+
| 维度 | 评分 | 说明 |
|
|
127
|
+
|------|------|------|
|
|
128
|
+
| 代码量 | X/5 | [说明] |
|
|
129
|
+
| 技术难度 | X/5 | [说明] |
|
|
130
|
+
| 依赖复杂度 | X/5 | [说明] |
|
|
131
|
+
| 测试复杂度 | X/5 | [说明] |
|
|
132
|
+
| **综合** | X/5 | |
|
|
133
|
+
|
|
134
|
+
### 时间分解
|
|
135
|
+
|
|
136
|
+
| 活动 | 时间 | 说明 |
|
|
137
|
+
|------|------|------|
|
|
138
|
+
| 需求理解 | Xh | |
|
|
139
|
+
| 设计 | Xh | |
|
|
140
|
+
| 编码 | Xh | |
|
|
141
|
+
| 单元测试 | Xh | |
|
|
142
|
+
| 代码审查 | Xh | |
|
|
143
|
+
| 集成测试 | Xh | |
|
|
144
|
+
| 文档 | Xh | |
|
|
145
|
+
| **合计** | Xh | |
|
|
146
|
+
|
|
147
|
+
### 风险因素
|
|
148
|
+
|
|
149
|
+
| 风险 | 影响 | 缓解措施 |
|
|
150
|
+
|------|------|----------|
|
|
151
|
+
| [风险描述] | 高/中/低 | [措施] |
|
|
152
|
+
|
|
153
|
+
### 任务拆分建议
|
|
154
|
+
|
|
155
|
+
> 如果估算超过 8 小时(5 故事点),建议拆分:
|
|
156
|
+
|
|
157
|
+
| 子任务 | 估算 | 说明 |
|
|
158
|
+
|--------|------|------|
|
|
159
|
+
| [子任务1] | Xh | |
|
|
160
|
+
| [子任务2] | Xh | |
|
|
161
|
+
|
|
162
|
+
### 置信度说明
|
|
163
|
+
|
|
164
|
+
**置信度**: [高/中/低]
|
|
165
|
+
|
|
166
|
+
**影响因素**:
|
|
167
|
+
- [因素1]
|
|
168
|
+
- [因素2]
|
|
169
|
+
|
|
170
|
+
**建议**: [如果置信度低,建议补充什么信息]
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## ✅ 估算检查清单
|
|
175
|
+
|
|
176
|
+
- [ ] 任务已分解为标准活动
|
|
177
|
+
- [ ] 复杂度已评估
|
|
178
|
+
- [ ] 三点估算已完成
|
|
179
|
+
- [ ] 故事点已确定
|
|
180
|
+
- [ ] 风险已识别
|
|
181
|
+
- [ ] 置信度已评估
|
|
182
|
+
- [ ] 大任务已建议拆分
|
|
183
|
+
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
*指南版本: 1.0.0*
|
|
187
|
+
*工具: MCP Probe Kit - estimate*
|
|
188
|
+
`;
|
|
189
|
+
/**
|
|
190
|
+
* estimate 工具实现
|
|
191
|
+
*/
|
|
192
|
+
export async function estimate(args) {
|
|
193
|
+
try {
|
|
194
|
+
const taskDescription = args?.task_description;
|
|
195
|
+
if (!taskDescription) {
|
|
196
|
+
throw new Error("缺少必填参数: task_description(任务描述)");
|
|
197
|
+
}
|
|
198
|
+
const codeContext = args?.code_context || "";
|
|
199
|
+
const teamSize = args?.team_size || 1;
|
|
200
|
+
const experienceLevel = args?.experience_level || "mid";
|
|
201
|
+
const expLevelMap = {
|
|
202
|
+
junior: "初级(1-2年经验)",
|
|
203
|
+
mid: "中级(3-5年经验)",
|
|
204
|
+
senior: "高级(5年以上经验)",
|
|
205
|
+
};
|
|
206
|
+
const codeContextSection = codeContext
|
|
207
|
+
? `**相关代码/文件**:\n\`\`\`\n${codeContext}\n\`\`\``
|
|
208
|
+
: "";
|
|
209
|
+
const guide = PROMPT_TEMPLATE
|
|
210
|
+
.replace(/{task_description}/g, taskDescription)
|
|
211
|
+
.replace(/{team_size}/g, String(teamSize))
|
|
212
|
+
.replace(/{experience_level}/g, expLevelMap[experienceLevel] || experienceLevel)
|
|
213
|
+
.replace(/{code_context_section}/g, codeContextSection);
|
|
214
|
+
return {
|
|
215
|
+
content: [{ type: "text", text: guide }],
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
catch (error) {
|
|
219
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
220
|
+
return {
|
|
221
|
+
content: [{ type: "text", text: `❌ 工作量估算失败: ${errorMsg}` }],
|
|
222
|
+
isError: true,
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* fix_bug 工具
|
|
3
|
+
*
|
|
4
|
+
* 功能:指导完整的 Bug 修复流程
|
|
5
|
+
* 模式:指令生成器模式 - 返回详细的修复指南,由 AI 执行实际操作
|
|
6
|
+
*
|
|
7
|
+
* 流程:问题定位 → 原因分析 → 修复方案 → 验证测试
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* fix_bug 工具实现
|
|
11
|
+
*/
|
|
12
|
+
export declare function fixBug(args: any): Promise<{
|
|
13
|
+
content: {
|
|
14
|
+
type: string;
|
|
15
|
+
text: string;
|
|
16
|
+
}[];
|
|
17
|
+
isError?: undefined;
|
|
18
|
+
} | {
|
|
19
|
+
content: {
|
|
20
|
+
type: string;
|
|
21
|
+
text: string;
|
|
22
|
+
}[];
|
|
23
|
+
isError: boolean;
|
|
24
|
+
}>;
|
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* fix_bug 工具
|
|
3
|
+
*
|
|
4
|
+
* 功能:指导完整的 Bug 修复流程
|
|
5
|
+
* 模式:指令生成器模式 - 返回详细的修复指南,由 AI 执行实际操作
|
|
6
|
+
*
|
|
7
|
+
* 流程:问题定位 → 原因分析 → 修复方案 → 验证测试
|
|
8
|
+
*/
|
|
9
|
+
const PROMPT_TEMPLATE = `# Bug 修复指南
|
|
10
|
+
|
|
11
|
+
## 🐛 Bug 信息
|
|
12
|
+
|
|
13
|
+
**错误信息**:
|
|
14
|
+
\`\`\`
|
|
15
|
+
{error_message}
|
|
16
|
+
\`\`\`
|
|
17
|
+
|
|
18
|
+
{stack_trace_section}
|
|
19
|
+
|
|
20
|
+
{reproduce_section}
|
|
21
|
+
|
|
22
|
+
{behavior_section}
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## 📍 阶段 1: 问题定位
|
|
27
|
+
|
|
28
|
+
### 步骤 1.1: 分析错误信息
|
|
29
|
+
|
|
30
|
+
1. **识别错误类型**:
|
|
31
|
+
- 语法错误(SyntaxError)
|
|
32
|
+
- 运行时错误(TypeError, ReferenceError, RangeError)
|
|
33
|
+
- 逻辑错误(结果不符合预期)
|
|
34
|
+
- 异步错误(Promise rejection, 回调异常)
|
|
35
|
+
|
|
36
|
+
2. **提取关键信息**:
|
|
37
|
+
- 错误名称: [从错误信息中提取]
|
|
38
|
+
- 错误消息: [具体描述]
|
|
39
|
+
- 发生位置: [文件:行号]
|
|
40
|
+
|
|
41
|
+
### 步骤 1.2: 分析堆栈跟踪
|
|
42
|
+
|
|
43
|
+
**操作**:
|
|
44
|
+
1. 找到堆栈中第一个项目文件(排除 node_modules)
|
|
45
|
+
2. 追踪调用链,理解执行流程
|
|
46
|
+
3. 记录所有相关的项目文件
|
|
47
|
+
|
|
48
|
+
**相关文件列表**:
|
|
49
|
+
| 文件 | 行号 | 函数/方法 |
|
|
50
|
+
|------|------|-----------|
|
|
51
|
+
| [文件路径] | [行号] | [函数名] |
|
|
52
|
+
|
|
53
|
+
### 步骤 1.3: 读取相关代码
|
|
54
|
+
|
|
55
|
+
**操作**: 读取以下文件并分析:
|
|
56
|
+
- 错误发生的文件
|
|
57
|
+
- 调用链上的文件
|
|
58
|
+
- 相关的配置文件
|
|
59
|
+
- 相关的测试文件(如有)
|
|
60
|
+
|
|
61
|
+
### 📋 定位结论
|
|
62
|
+
|
|
63
|
+
| 项目 | 内容 |
|
|
64
|
+
|------|------|
|
|
65
|
+
| 问题文件 | [文件路径] |
|
|
66
|
+
| 问题位置 | 第 X 行 |
|
|
67
|
+
| 问题代码 | \`[代码片段]\` |
|
|
68
|
+
| 触发条件 | [什么情况下触发] |
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## 🔍 阶段 2: 原因分析
|
|
73
|
+
|
|
74
|
+
### 步骤 2.1: 5 Whys 分析
|
|
75
|
+
|
|
76
|
+
使用 5 Whys 方法深入分析根本原因:
|
|
77
|
+
|
|
78
|
+
1. **Why 1**: 为什么会出现这个错误?
|
|
79
|
+
- [答案]
|
|
80
|
+
|
|
81
|
+
2. **Why 2**: 为什么会 [Why 1 的答案]?
|
|
82
|
+
- [答案]
|
|
83
|
+
|
|
84
|
+
3. **Why 3**: 为什么会 [Why 2 的答案]?
|
|
85
|
+
- [答案]
|
|
86
|
+
|
|
87
|
+
4. **Why 4**: 为什么会 [Why 3 的答案]?
|
|
88
|
+
- [答案]
|
|
89
|
+
|
|
90
|
+
5. **Why 5**: 为什么会 [Why 4 的答案]?
|
|
91
|
+
- [答案]
|
|
92
|
+
|
|
93
|
+
### 步骤 2.2: 代码逻辑分析
|
|
94
|
+
|
|
95
|
+
1. **数据流分析**: 追踪数据从输入到出错位置的流动
|
|
96
|
+
2. **状态分析**: 检查相关变量/状态在出错时的值
|
|
97
|
+
3. **边界条件**: 检查是否处理了所有边界情况
|
|
98
|
+
4. **异常处理**: 检查是否有适当的错误处理
|
|
99
|
+
|
|
100
|
+
### 📋 分析结论
|
|
101
|
+
|
|
102
|
+
| 项目 | 内容 |
|
|
103
|
+
|------|------|
|
|
104
|
+
| 直接原因 | [直接导致错误的原因] |
|
|
105
|
+
| 根本原因 | [深层次的原因] |
|
|
106
|
+
| 触发条件 | [什么情况下会触发] |
|
|
107
|
+
| 影响范围 | [受影响的功能/模块] |
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## 🔧 阶段 3: 修复方案
|
|
112
|
+
|
|
113
|
+
### 步骤 3.1: 设计修复方案
|
|
114
|
+
|
|
115
|
+
**方案 A**: [方案描述]
|
|
116
|
+
- 修改内容: [具体修改]
|
|
117
|
+
- 优点: [优点]
|
|
118
|
+
- 缺点: [缺点]
|
|
119
|
+
- 风险: [潜在风险]
|
|
120
|
+
|
|
121
|
+
**方案 B**: [备选方案描述]
|
|
122
|
+
- 修改内容: [具体修改]
|
|
123
|
+
- 优点: [优点]
|
|
124
|
+
- 缺点: [缺点]
|
|
125
|
+
- 风险: [潜在风险]
|
|
126
|
+
|
|
127
|
+
**选择方案**: [选择的方案]
|
|
128
|
+
**选择理由**: [为什么选择这个方案]
|
|
129
|
+
|
|
130
|
+
### 步骤 3.2: 影响范围评估
|
|
131
|
+
|
|
132
|
+
| 影响项 | 说明 |
|
|
133
|
+
|--------|------|
|
|
134
|
+
| 修改文件 | [文件列表] |
|
|
135
|
+
| 影响功能 | [功能列表] |
|
|
136
|
+
| 需要测试 | [测试范围] |
|
|
137
|
+
| 是否需要回归 | [是/否] |
|
|
138
|
+
|
|
139
|
+
### 步骤 3.3: 实施修复
|
|
140
|
+
|
|
141
|
+
**修改文件**: \`[文件路径]\`
|
|
142
|
+
|
|
143
|
+
**修改前**:
|
|
144
|
+
\`\`\`
|
|
145
|
+
[原代码]
|
|
146
|
+
\`\`\`
|
|
147
|
+
|
|
148
|
+
**修改后**:
|
|
149
|
+
\`\`\`
|
|
150
|
+
[新代码]
|
|
151
|
+
\`\`\`
|
|
152
|
+
|
|
153
|
+
**修改说明**: [解释修改的原因和逻辑]
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## ✅ 阶段 4: 验证测试
|
|
158
|
+
|
|
159
|
+
### 步骤 4.1: 单元测试
|
|
160
|
+
|
|
161
|
+
为修复编写针对性的单元测试:
|
|
162
|
+
|
|
163
|
+
\`\`\`typescript
|
|
164
|
+
describe('[功能描述]', () => {
|
|
165
|
+
// 测试正常情况
|
|
166
|
+
it('should [正常行为描述]', () => {
|
|
167
|
+
// 测试代码
|
|
168
|
+
});
|
|
169
|
+
|
|
170
|
+
// 测试修复的 Bug 场景
|
|
171
|
+
it('should handle [Bug 场景]', () => {
|
|
172
|
+
// 测试代码 - 确保 Bug 已修复
|
|
173
|
+
});
|
|
174
|
+
|
|
175
|
+
// 测试边界情况
|
|
176
|
+
it('should handle [边界情况]', () => {
|
|
177
|
+
// 边界测试
|
|
178
|
+
});
|
|
179
|
+
});
|
|
180
|
+
\`\`\`
|
|
181
|
+
|
|
182
|
+
### 步骤 4.2: 手动验证
|
|
183
|
+
|
|
184
|
+
1. [ ] 按原复现步骤验证问题已修复
|
|
185
|
+
2. [ ] 验证正常流程不受影响
|
|
186
|
+
3. [ ] 验证边界情况处理正确
|
|
187
|
+
4. [ ] 验证错误处理正确
|
|
188
|
+
|
|
189
|
+
### 步骤 4.3: 回归测试
|
|
190
|
+
|
|
191
|
+
1. [ ] 运行相关模块的测试
|
|
192
|
+
2. [ ] 运行全量测试(如有 CI)
|
|
193
|
+
3. [ ] 检查是否引入新问题
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## 📋 修复检查清单
|
|
198
|
+
|
|
199
|
+
### 定位阶段
|
|
200
|
+
- [ ] 错误类型已识别
|
|
201
|
+
- [ ] 问题代码已定位
|
|
202
|
+
- [ ] 相关文件已读取
|
|
203
|
+
|
|
204
|
+
### 分析阶段
|
|
205
|
+
- [ ] 5 Whys 分析已完成
|
|
206
|
+
- [ ] 根本原因已确定
|
|
207
|
+
- [ ] 影响范围已评估
|
|
208
|
+
|
|
209
|
+
### 修复阶段
|
|
210
|
+
- [ ] 修复方案已设计
|
|
211
|
+
- [ ] 代码修改已完成
|
|
212
|
+
- [ ] 修改已解释清楚
|
|
213
|
+
|
|
214
|
+
### 验证阶段
|
|
215
|
+
- [ ] 单元测试已添加
|
|
216
|
+
- [ ] 手动验证已通过
|
|
217
|
+
- [ ] 回归测试已通过
|
|
218
|
+
|
|
219
|
+
### 提交阶段
|
|
220
|
+
- [ ] 代码已提交
|
|
221
|
+
- [ ] Commit message 清晰描述了修复内容
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
## 📝 修复总结
|
|
226
|
+
|
|
227
|
+
完成修复后,填写以下总结:
|
|
228
|
+
|
|
229
|
+
| 项目 | 内容 |
|
|
230
|
+
|------|------|
|
|
231
|
+
| Bug 描述 | [简述] |
|
|
232
|
+
| 根本原因 | [原因] |
|
|
233
|
+
| 修复方案 | [方案] |
|
|
234
|
+
| 修改文件 | [文件列表] |
|
|
235
|
+
| 测试覆盖 | [测试情况] |
|
|
236
|
+
| 修复时间 | [耗时] |
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
## 💡 经验教训
|
|
241
|
+
|
|
242
|
+
记录本次 Bug 的经验教训,避免类似问题:
|
|
243
|
+
|
|
244
|
+
1. **代码层面**: [如何避免写出类似 Bug]
|
|
245
|
+
2. **测试层面**: [应该增加什么测试]
|
|
246
|
+
3. **流程层面**: [流程上如何改进]
|
|
247
|
+
|
|
248
|
+
---
|
|
249
|
+
|
|
250
|
+
*指南版本: 1.0.0*
|
|
251
|
+
*工具: MCP Probe Kit - fix_bug*
|
|
252
|
+
`;
|
|
253
|
+
/**
|
|
254
|
+
* fix_bug 工具实现
|
|
255
|
+
*/
|
|
256
|
+
export async function fixBug(args) {
|
|
257
|
+
try {
|
|
258
|
+
const errorMessage = args?.error_message;
|
|
259
|
+
if (!errorMessage) {
|
|
260
|
+
throw new Error("缺少必填参数: error_message(错误信息)");
|
|
261
|
+
}
|
|
262
|
+
const stackTrace = args?.stack_trace || "";
|
|
263
|
+
const stepsToReproduce = args?.steps_to_reproduce || "";
|
|
264
|
+
const expectedBehavior = args?.expected_behavior || "";
|
|
265
|
+
const actualBehavior = args?.actual_behavior || "";
|
|
266
|
+
// 构建可选部分
|
|
267
|
+
const stackTraceSection = stackTrace
|
|
268
|
+
? `**堆栈跟踪**:\n\`\`\`\n${stackTrace}\n\`\`\``
|
|
269
|
+
: "**堆栈跟踪**: 未提供(建议提供以便更准确定位)";
|
|
270
|
+
const reproduceSection = stepsToReproduce
|
|
271
|
+
? `**复现步骤**:\n${stepsToReproduce}`
|
|
272
|
+
: "";
|
|
273
|
+
let behaviorSection = "";
|
|
274
|
+
if (expectedBehavior || actualBehavior) {
|
|
275
|
+
behaviorSection = [
|
|
276
|
+
expectedBehavior ? `**期望行为**: ${expectedBehavior}` : "",
|
|
277
|
+
actualBehavior ? `**实际行为**: ${actualBehavior}` : "",
|
|
278
|
+
]
|
|
279
|
+
.filter(Boolean)
|
|
280
|
+
.join("\n\n");
|
|
281
|
+
}
|
|
282
|
+
const guide = PROMPT_TEMPLATE
|
|
283
|
+
.replace(/{error_message}/g, errorMessage)
|
|
284
|
+
.replace(/{stack_trace_section}/g, stackTraceSection)
|
|
285
|
+
.replace(/{reproduce_section}/g, reproduceSection)
|
|
286
|
+
.replace(/{behavior_section}/g, behaviorSection);
|
|
287
|
+
return {
|
|
288
|
+
content: [{ type: "text", text: guide }],
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
catch (error) {
|
|
292
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
293
|
+
return {
|
|
294
|
+
content: [{ type: "text", text: `❌ 生成修复指南失败: ${errorMsg}` }],
|
|
295
|
+
isError: true,
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* gen_mock 工具
|
|
3
|
+
*
|
|
4
|
+
* 功能:根据数据结构生成 Mock 数据
|
|
5
|
+
* 模式:指令生成器模式 - 返回生成指南,由 AI 执行实际生成
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* gen_mock 工具实现
|
|
9
|
+
*/
|
|
10
|
+
export declare function genMock(args: any): Promise<{
|
|
11
|
+
content: {
|
|
12
|
+
type: string;
|
|
13
|
+
text: string;
|
|
14
|
+
}[];
|
|
15
|
+
isError?: undefined;
|
|
16
|
+
} | {
|
|
17
|
+
content: {
|
|
18
|
+
type: string;
|
|
19
|
+
text: string;
|
|
20
|
+
}[];
|
|
21
|
+
isError: boolean;
|
|
22
|
+
}>;
|