mcp-probe-kit 3.0.23 → 3.1.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 +755 -779
- package/build/index.js +38 -40
- package/build/lib/__tests__/memory-injection.unit.test.js +1 -0
- package/build/lib/agents-md-template.js +32 -32
- package/build/lib/memory-client.d.ts +2 -0
- package/build/lib/memory-client.js +1 -0
- package/build/lib/memory-config.d.ts +2 -0
- package/build/lib/memory-config.js +1 -0
- package/build/lib/memory-orchestration.d.ts +4 -0
- package/build/lib/memory-orchestration.js +28 -5
- package/build/lib/skill-bridge.js +12 -12
- package/build/resources/index.d.ts +4 -0
- package/build/resources/index.js +4 -0
- package/build/resources/tool-params-guide.d.ts +571 -0
- package/build/resources/tool-params-guide.js +488 -0
- package/build/resources/ui-ux-data/guidelines/vercel-web-interface.json +1632 -1632
- package/build/resources/ui-ux-data/metadata.json +30 -30
- package/build/resources/ui-ux-data/shadcn/blocks.json +2541 -2541
- package/build/resources/ui-ux-data/shadcn/components.json +997 -997
- package/build/resources/ui-ux-data/themes/presets.json +483 -483
- package/build/schemas/index.d.ts +0 -22
- package/build/schemas/memory-tools.d.ts +0 -22
- package/build/schemas/memory-tools.js +0 -14
- package/build/tools/__tests__/read_memory_asset.unit.test.js +75 -0
- package/build/tools/__tests__/search_memory.unit.test.js +7 -1
- package/build/tools/analyze_project.d.ts +1 -0
- package/build/tools/analyze_project.js +527 -0
- package/build/tools/check_deps.d.ts +13 -0
- package/build/tools/check_deps.js +204 -0
- package/build/tools/code_insight.js +41 -41
- package/build/tools/convert.d.ts +13 -0
- package/build/tools/convert.js +599 -0
- package/build/tools/css_order.d.ts +13 -0
- package/build/tools/css_order.js +81 -0
- package/build/tools/debug.d.ts +13 -0
- package/build/tools/debug.js +131 -0
- package/build/tools/design2code.d.ts +20 -0
- package/build/tools/design2code.js +426 -0
- package/build/tools/detect_shell.d.ts +6 -0
- package/build/tools/detect_shell.js +151 -0
- package/build/tools/explain.d.ts +13 -0
- package/build/tools/explain.js +390 -0
- package/build/tools/fix.d.ts +13 -0
- package/build/tools/fix.js +303 -0
- package/build/tools/fix_bug.js +161 -161
- package/build/tools/gen_mock.d.ts +22 -0
- package/build/tools/gen_mock.js +269 -0
- package/build/tools/gen_skill.d.ts +13 -0
- package/build/tools/gen_skill.js +560 -0
- package/build/tools/genapi.d.ts +13 -0
- package/build/tools/genapi.js +174 -0
- package/build/tools/genchangelog.d.ts +13 -0
- package/build/tools/genchangelog.js +250 -0
- package/build/tools/gencommit.js +60 -60
- package/build/tools/gendoc.d.ts +13 -0
- package/build/tools/gendoc.js +232 -0
- package/build/tools/genpr.d.ts +13 -0
- package/build/tools/genpr.js +194 -0
- package/build/tools/genreadme.d.ts +13 -0
- package/build/tools/genreadme.js +626 -0
- package/build/tools/gensql.d.ts +13 -0
- package/build/tools/gensql.js +320 -0
- package/build/tools/genui.d.ts +13 -0
- package/build/tools/genui.js +803 -0
- package/build/tools/index.d.ts +0 -1
- package/build/tools/index.js +0 -1
- package/build/tools/init_component_catalog.d.ts +22 -0
- package/build/tools/init_component_catalog.js +809 -0
- package/build/tools/init_project_context.js +432 -432
- package/build/tools/init_setting.d.ts +13 -0
- package/build/tools/init_setting.js +47 -0
- package/build/tools/perf.d.ts +13 -0
- package/build/tools/perf.js +409 -0
- package/build/tools/read_memory_asset.js +2 -1
- package/build/tools/render_ui.d.ts +22 -0
- package/build/tools/render_ui.js +384 -0
- package/build/tools/resolve_conflict.d.ts +13 -0
- package/build/tools/resolve_conflict.js +349 -0
- package/build/tools/search_memory.js +1 -0
- package/build/tools/security_scan.d.ts +22 -0
- package/build/tools/security_scan.js +323 -0
- package/build/tools/split.d.ts +13 -0
- package/build/tools/split.js +599 -0
- package/build/tools/start_api.d.ts +13 -0
- package/build/tools/start_api.js +193 -0
- package/build/tools/start_bugfix.js +233 -233
- package/build/tools/start_doc.d.ts +13 -0
- package/build/tools/start_doc.js +207 -0
- package/build/tools/start_feature.js +117 -117
- package/build/tools/start_product.js +1 -1
- package/build/tools/start_refactor.d.ts +13 -0
- package/build/tools/start_refactor.js +188 -0
- package/build/tools/start_release.d.ts +13 -0
- package/build/tools/start_release.js +167 -0
- package/build/tools/start_review.d.ts +13 -0
- package/build/tools/start_review.js +175 -0
- package/build/tools/start_ui.js +399 -399
- package/build/tools/ui-ux-tools.js +290 -290
- package/build/utils/__tests__/vercel-guidelines-sync.unit.test.js +12 -12
- package/build/utils/themes-sync.js +8 -8
- package/package.json +81 -83
- package/build/lib/__tests__/memory-orchestration.unit.test.js +0 -84
- package/build/lib/__tests__/memory-payload.unit.test.js +0 -35
- package/build/lib/cursor-history-client.d.ts +0 -54
- package/build/lib/cursor-history-client.js +0 -240
- package/build/tools/__tests__/cursor-history.unit.test.js +0 -38
- package/build/tools/cursor_read_conversation.d.ts +0 -7
- package/build/tools/cursor_read_conversation.js +0 -36
- package/docs/.mcp-probe/layout.json +0 -11
- package/docs/CNAME +0 -1
- package/docs/assets/font/MaterialSymbolsOutlined.codepoints +0 -4102
- package/docs/assets/font/MaterialSymbolsOutlined.ttf +0 -0
- package/docs/assets/font/noto-sans-sc-400.ttf +0 -0
- package/docs/assets/font/noto-sans-sc-700.ttf +0 -0
- package/docs/assets/font/noto-sans-sc-900.ttf +0 -0
- package/docs/assets/js/i18n.js +0 -375
- package/docs/assets/js/tailwind.js +0 -83
- package/docs/assets/logo-zh.png +0 -0
- package/docs/assets/logo.png +0 -0
- package/docs/data/tools.js +0 -523
- package/docs/i18n/all-tools/en.json +0 -190
- package/docs/i18n/all-tools/ja.json +0 -171
- package/docs/i18n/all-tools/ko.json +0 -171
- package/docs/i18n/all-tools/zh-CN.json +0 -190
- package/docs/i18n/en.json +0 -626
- package/docs/i18n/ja.json +0 -602
- package/docs/i18n/ko.json +0 -602
- package/docs/i18n/zh-CN.json +0 -626
- package/docs/index.html +0 -327
- package/docs/memory-local-setup.md +0 -314
- package/docs/memory-local-setup.zh-CN.md +0 -283
- package/docs/pages/all-tools.html +0 -515
- package/docs/pages/examples.html +0 -717
- package/docs/pages/getting-started.html +0 -964
- package/docs/pages/migration.html +0 -308
- package/docs/specs/user-auth/design.md +0 -82
- package/docs/specs/user-auth/requirements.md +0 -52
- package/docs/specs/user-auth/tasks.md +0 -55
- /package/build/{lib/__tests__/memory-orchestration.unit.test.d.ts → tools/__tests__/read_memory_asset.unit.test.d.ts} +0 -0
- /package/build/{lib/__tests__/memory-payload.unit.test.d.ts → utils/design-docs-generator.d.ts} +0 -0
- /package/build/{tools/__tests__/cursor-history.unit.test.d.ts → utils/design-docs-generator.js} +0 -0
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
import { parseArgs, getString } from "../utils/parseArgs.js";
|
|
2
|
+
// fix 工具实现
|
|
3
|
+
export async function fix(args) {
|
|
4
|
+
try {
|
|
5
|
+
// 智能参数解析,支持自然语言输入
|
|
6
|
+
const parsedArgs = parseArgs(args, {
|
|
7
|
+
defaultValues: {
|
|
8
|
+
code: "",
|
|
9
|
+
type: "all",
|
|
10
|
+
},
|
|
11
|
+
primaryField: "code", // 纯文本输入默认映射到 code 字段
|
|
12
|
+
fieldAliases: {
|
|
13
|
+
code: ["source", "src", "代码", "content"],
|
|
14
|
+
type: ["fix_type", "category", "类型", "修复类型"],
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
const code = getString(parsedArgs.code);
|
|
18
|
+
const type = getString(parsedArgs.type) || "all"; // lint, type, format, import, unused
|
|
19
|
+
const message = `请自动修复以下代码问题:
|
|
20
|
+
|
|
21
|
+
📝 **代码内容**:
|
|
22
|
+
${code || "请提供需要修复的代码"}
|
|
23
|
+
|
|
24
|
+
🎯 **修复类型**:${type}
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## 自动修复步骤
|
|
29
|
+
|
|
30
|
+
### 第一步:识别问题
|
|
31
|
+
|
|
32
|
+
执行以下检查:
|
|
33
|
+
\`\`\`bash
|
|
34
|
+
# Lint 检查
|
|
35
|
+
npm run lint
|
|
36
|
+
|
|
37
|
+
# TypeScript 类型检查
|
|
38
|
+
tsc --noEmit
|
|
39
|
+
|
|
40
|
+
# 格式化检查
|
|
41
|
+
npm run format:check
|
|
42
|
+
\`\`\`
|
|
43
|
+
|
|
44
|
+
### 第二步:问题分类
|
|
45
|
+
|
|
46
|
+
**1️⃣ Lint 错误**
|
|
47
|
+
- ESLint 规则违反
|
|
48
|
+
- 代码质量问题
|
|
49
|
+
- 潜在 Bug
|
|
50
|
+
|
|
51
|
+
**2️⃣ TypeScript 类型错误**
|
|
52
|
+
- 类型不匹配
|
|
53
|
+
- 缺少类型定义
|
|
54
|
+
- 隐式 any
|
|
55
|
+
|
|
56
|
+
**3️⃣ 格式化问题**
|
|
57
|
+
- 缩进不一致
|
|
58
|
+
- 引号风格
|
|
59
|
+
- 分号使用
|
|
60
|
+
- 换行规则
|
|
61
|
+
|
|
62
|
+
**4️⃣ Import 问题**
|
|
63
|
+
- 未使用的 import
|
|
64
|
+
- 重复 import
|
|
65
|
+
- Import 顺序混乱
|
|
66
|
+
- 相对路径 vs 绝对路径
|
|
67
|
+
|
|
68
|
+
**5️⃣ 未使用代码**
|
|
69
|
+
- 未使用的变量
|
|
70
|
+
- 未使用的函数
|
|
71
|
+
- 死代码(Dead Code)
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## 修复策略
|
|
76
|
+
|
|
77
|
+
### 🔧 Lint 错误修复
|
|
78
|
+
|
|
79
|
+
**常见问题和修复:**
|
|
80
|
+
|
|
81
|
+
1. **no-unused-vars**
|
|
82
|
+
\`\`\`typescript
|
|
83
|
+
// ❌ Before
|
|
84
|
+
const unusedVar = 123;
|
|
85
|
+
function test() {
|
|
86
|
+
const result = compute();
|
|
87
|
+
return 42;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// ✅ After
|
|
91
|
+
function test() {
|
|
92
|
+
return 42;
|
|
93
|
+
}
|
|
94
|
+
\`\`\`
|
|
95
|
+
|
|
96
|
+
2. **no-console**
|
|
97
|
+
\`\`\`typescript
|
|
98
|
+
// ❌ Before
|
|
99
|
+
console.log('debug info');
|
|
100
|
+
|
|
101
|
+
// ✅ After (开发环境)
|
|
102
|
+
if (process.env.NODE_ENV === 'development') {
|
|
103
|
+
console.log('debug info');
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// ✅ After (使用 logger)
|
|
107
|
+
logger.debug('debug info');
|
|
108
|
+
\`\`\`
|
|
109
|
+
|
|
110
|
+
3. **prefer-const**
|
|
111
|
+
\`\`\`typescript
|
|
112
|
+
// ❌ Before
|
|
113
|
+
let value = 10;
|
|
114
|
+
const result = value * 2;
|
|
115
|
+
|
|
116
|
+
// ✅ After
|
|
117
|
+
const value = 10;
|
|
118
|
+
const result = value * 2;
|
|
119
|
+
\`\`\`
|
|
120
|
+
|
|
121
|
+
### 🔧 TypeScript 类型错误修复
|
|
122
|
+
|
|
123
|
+
**常见问题和修复:**
|
|
124
|
+
|
|
125
|
+
1. **隐式 any**
|
|
126
|
+
\`\`\`typescript
|
|
127
|
+
// ❌ Before
|
|
128
|
+
function process(data) {
|
|
129
|
+
return data.value;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// ✅ After
|
|
133
|
+
function process(data: { value: string }): string {
|
|
134
|
+
return data.value;
|
|
135
|
+
}
|
|
136
|
+
\`\`\`
|
|
137
|
+
|
|
138
|
+
2. **类型不匹配**
|
|
139
|
+
\`\`\`typescript
|
|
140
|
+
// ❌ Before
|
|
141
|
+
const num: number = "123";
|
|
142
|
+
|
|
143
|
+
// ✅ After
|
|
144
|
+
const num: number = 123;
|
|
145
|
+
// 或
|
|
146
|
+
const num: number = parseInt("123");
|
|
147
|
+
\`\`\`
|
|
148
|
+
|
|
149
|
+
3. **可能为 null/undefined**
|
|
150
|
+
\`\`\`typescript
|
|
151
|
+
// ❌ Before
|
|
152
|
+
function getName(user) {
|
|
153
|
+
return user.name.toUpperCase();
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
// ✅ After
|
|
157
|
+
function getName(user: User | null): string {
|
|
158
|
+
return user?.name?.toUpperCase() ?? 'Unknown';
|
|
159
|
+
}
|
|
160
|
+
\`\`\`
|
|
161
|
+
|
|
162
|
+
### 🔧 Import 优化
|
|
163
|
+
|
|
164
|
+
**修复策略:**
|
|
165
|
+
|
|
166
|
+
\`\`\`typescript
|
|
167
|
+
// ❌ Before
|
|
168
|
+
import { useState, useEffect, useMemo } from 'react';
|
|
169
|
+
import { Button } from './components/Button';
|
|
170
|
+
import React from 'react';
|
|
171
|
+
import { formatDate } from '../utils/date';
|
|
172
|
+
import { api } from '../../services/api';
|
|
173
|
+
|
|
174
|
+
// ✅ After
|
|
175
|
+
// 外部依赖
|
|
176
|
+
import React, { useEffect, useMemo, useState } from 'react';
|
|
177
|
+
|
|
178
|
+
// 内部模块(按层级从远到近)
|
|
179
|
+
import { api } from '../../services/api';
|
|
180
|
+
import { formatDate } from '../utils/date';
|
|
181
|
+
import { Button } from './components/Button';
|
|
182
|
+
\`\`\`
|
|
183
|
+
|
|
184
|
+
### 🔧 格式化修复
|
|
185
|
+
|
|
186
|
+
**自动格式化:**
|
|
187
|
+
\`\`\`bash
|
|
188
|
+
# Prettier
|
|
189
|
+
npm run format
|
|
190
|
+
|
|
191
|
+
# ESLint 自动修复
|
|
192
|
+
npm run lint:fix
|
|
193
|
+
\`\`\`
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## 批量修复命令
|
|
198
|
+
|
|
199
|
+
**一键修复所有可自动修复的问题:**
|
|
200
|
+
\`\`\`bash
|
|
201
|
+
# 1. 格式化代码
|
|
202
|
+
npm run format
|
|
203
|
+
|
|
204
|
+
# 2. ESLint 自动修复
|
|
205
|
+
npm run lint:fix
|
|
206
|
+
|
|
207
|
+
# 3. 整理 import
|
|
208
|
+
npx organize-imports-cli 'src/**/*.ts'
|
|
209
|
+
|
|
210
|
+
# 4. 移除未使用的 import
|
|
211
|
+
npx ts-unused-exports tsconfig.json --deleteUnusedFile
|
|
212
|
+
|
|
213
|
+
# 5. TypeScript 类型检查
|
|
214
|
+
tsc --noEmit
|
|
215
|
+
\`\`\`
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
## 修复报告
|
|
220
|
+
|
|
221
|
+
### 📊 问题统计
|
|
222
|
+
- Lint 错误: X 个
|
|
223
|
+
- 类型错误: Y 个
|
|
224
|
+
- 格式问题: Z 个
|
|
225
|
+
- Import 问题: W 个
|
|
226
|
+
|
|
227
|
+
### ✅ 已自动修复
|
|
228
|
+
1. [文件:行号] 问题描述 → 已修复
|
|
229
|
+
2. [文件:行号] 问题描述 → 已修复
|
|
230
|
+
|
|
231
|
+
### ⚠️ 需要手动处理
|
|
232
|
+
1. [文件:行号] 问题描述 → 修复建议
|
|
233
|
+
2. [文件:行号] 问题描述 → 修复建议
|
|
234
|
+
|
|
235
|
+
### 📝 修复后的代码
|
|
236
|
+
\`\`\`typescript
|
|
237
|
+
// 完整的修复后代码
|
|
238
|
+
\`\`\`
|
|
239
|
+
|
|
240
|
+
---
|
|
241
|
+
|
|
242
|
+
## 预防措施
|
|
243
|
+
|
|
244
|
+
**配置自动修复:**
|
|
245
|
+
|
|
246
|
+
\`\`\`.vscode/settings.json
|
|
247
|
+
{
|
|
248
|
+
"editor.formatOnSave": true,
|
|
249
|
+
"editor.codeActionsOnSave": {
|
|
250
|
+
"source.fixAll.eslint": true,
|
|
251
|
+
"source.organizeImports": true
|
|
252
|
+
},
|
|
253
|
+
"eslint.validate": [
|
|
254
|
+
"javascript",
|
|
255
|
+
"typescript",
|
|
256
|
+
"javascriptreact",
|
|
257
|
+
"typescriptreact"
|
|
258
|
+
]
|
|
259
|
+
}
|
|
260
|
+
\`\`\`
|
|
261
|
+
|
|
262
|
+
**Git Hooks(Husky):**
|
|
263
|
+
\`\`\`json
|
|
264
|
+
{
|
|
265
|
+
"husky": {
|
|
266
|
+
"hooks": {
|
|
267
|
+
"pre-commit": "lint-staged"
|
|
268
|
+
}
|
|
269
|
+
},
|
|
270
|
+
"lint-staged": {
|
|
271
|
+
"*.{js,ts,tsx}": [
|
|
272
|
+
"eslint --fix",
|
|
273
|
+
"prettier --write"
|
|
274
|
+
]
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
\`\`\`
|
|
278
|
+
|
|
279
|
+
---
|
|
280
|
+
|
|
281
|
+
现在请开始分析代码问题并自动修复。`;
|
|
282
|
+
return {
|
|
283
|
+
content: [
|
|
284
|
+
{
|
|
285
|
+
type: "text",
|
|
286
|
+
text: message,
|
|
287
|
+
},
|
|
288
|
+
],
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
catch (error) {
|
|
292
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
293
|
+
return {
|
|
294
|
+
content: [
|
|
295
|
+
{
|
|
296
|
+
type: "text",
|
|
297
|
+
text: `❌ 自动修复失败: ${errorMessage}`,
|
|
298
|
+
},
|
|
299
|
+
],
|
|
300
|
+
isError: true,
|
|
301
|
+
};
|
|
302
|
+
}
|
|
303
|
+
}
|
package/build/tools/fix_bug.js
CHANGED
|
@@ -10,167 +10,167 @@ import { parseArgs, getString } from "../utils/parseArgs.js";
|
|
|
10
10
|
import { okStructured } from "../lib/response.js";
|
|
11
11
|
import { renderGuidanceHeader } from "../lib/guidance.js";
|
|
12
12
|
import { handleToolError } from "../utils/error-handler.js";
|
|
13
|
-
const PROMPT_TEMPLATE = `# TBP 8 步 Bug 真因分析与修复指南
|
|
14
|
-
|
|
15
|
-
## 🐛 Bug 信息
|
|
16
|
-
|
|
17
|
-
**错误信息**:
|
|
18
|
-
\`\`\`
|
|
19
|
-
{error_message}
|
|
20
|
-
\`\`\`
|
|
21
|
-
|
|
22
|
-
{stack_trace_section}
|
|
23
|
-
|
|
24
|
-
{reproduce_section}
|
|
25
|
-
|
|
26
|
-
{behavior_section}
|
|
27
|
-
|
|
28
|
-
{code_context_section}
|
|
29
|
-
|
|
30
|
-
---
|
|
31
|
-
|
|
32
|
-
## TBP-1 现象
|
|
33
|
-
|
|
34
|
-
先把用户可见的问题定义准确,避免“坏了/卡了/有问题”这类泛化描述。
|
|
35
|
-
|
|
36
|
-
要求:
|
|
37
|
-
1. 用 1-2 句定义现象
|
|
38
|
-
2. 明确是“慢”“停滞”“失败”“回归”还是“未生效”
|
|
39
|
-
3. 如果提供了期望/实际行为,必须纳入现象定义
|
|
40
|
-
|
|
41
|
-
## TBP-2 时间线
|
|
42
|
-
|
|
43
|
-
基于现有信息复盘事件顺序,至少回答:
|
|
44
|
-
1. 什么时候开始
|
|
45
|
-
2. 中间发生了什么
|
|
46
|
-
3. 最后停在什么状态
|
|
47
|
-
|
|
48
|
-
优先记录:
|
|
49
|
-
- 用户输入 / 复现步骤
|
|
50
|
-
- first progress / first error
|
|
51
|
-
- tool call / stack / stop / timeout
|
|
52
|
-
- 关键文件或模块
|
|
53
|
-
|
|
54
|
-
## TBP-3 不是这个
|
|
55
|
-
|
|
56
|
-
列出当前应优先排除的错误方向,并说明需要什么证据排除。
|
|
57
|
-
|
|
58
|
-
常见排除项:
|
|
59
|
-
- 不是单纯网络慢
|
|
60
|
-
- 不是前端展示截断
|
|
61
|
-
- 不是消息没转发
|
|
62
|
-
- 不是纯粹的超时表象
|
|
63
|
-
- 不是用户输入丢失
|
|
64
|
-
|
|
65
|
-
## TBP-4 共同模式
|
|
66
|
-
|
|
67
|
-
对比成功/失败样本,找出从哪一步开始分叉。
|
|
68
|
-
|
|
69
|
-
重点检查:
|
|
70
|
-
- 传输层
|
|
71
|
-
- 会话状态机
|
|
72
|
-
- 完成态判定
|
|
73
|
-
- 工具执行
|
|
74
|
-
- 文件写入
|
|
75
|
-
- 重试策略
|
|
76
|
-
|
|
77
|
-
## TBP-5 边界
|
|
78
|
-
|
|
79
|
-
明确指出问题失控落在哪一层:
|
|
80
|
-
- 上游模型 / SDK
|
|
81
|
-
- 网关状态机
|
|
82
|
-
- session 复用
|
|
83
|
-
- tool 执行层
|
|
84
|
-
- 文件系统
|
|
85
|
-
- 环境配置
|
|
86
|
-
- UI 展示层
|
|
87
|
-
|
|
88
|
-
## TBP-6 真因
|
|
89
|
-
|
|
90
|
-
真因必须写成因果句:
|
|
91
|
-
\`A + B 在条件 D 下导致了 C\`
|
|
92
|
-
|
|
93
|
-
不允许只写:
|
|
94
|
-
- 超时了
|
|
95
|
-
- SDK 有 bug
|
|
96
|
-
- 返回慢
|
|
97
|
-
|
|
98
|
-
## TBP-7 证据链
|
|
99
|
-
|
|
100
|
-
说明:
|
|
101
|
-
1. 哪些证据支持真因
|
|
102
|
-
2. 哪些现象若出现会推翻它,但现场没有出现
|
|
103
|
-
3. 为什么其他解释更弱
|
|
104
|
-
|
|
105
|
-
## TBP-8 修复
|
|
106
|
-
|
|
107
|
-
只有在证据链闭合后,才开始设计修复。
|
|
108
|
-
|
|
109
|
-
每个修复方案都要说明:
|
|
110
|
-
- 改哪一层
|
|
111
|
-
- 为什么这是修真因,不是补症状
|
|
112
|
-
- 风险是什么
|
|
113
|
-
- 怎么验证
|
|
114
|
-
|
|
115
|
-
---
|
|
116
|
-
|
|
117
|
-
## 📤 输出格式要求
|
|
118
|
-
|
|
119
|
-
请严格按以下 JSON 格式输出修复指南:
|
|
120
|
-
|
|
121
|
-
\`\`\`json
|
|
122
|
-
{
|
|
123
|
-
"bug_summary": "Bug 简述(一句话)",
|
|
124
|
-
"analysis_mode": "tbp8",
|
|
125
|
-
"analysis": {
|
|
126
|
-
"error_type": "错误类型",
|
|
127
|
-
"direct_cause": "直接原因",
|
|
128
|
-
"root_cause": "根本原因",
|
|
129
|
-
"affected_scope": "影响范围"
|
|
130
|
-
},
|
|
131
|
-
"tbp": {
|
|
132
|
-
"phenomenon": "TBP-1 现象",
|
|
133
|
-
"timeline": [],
|
|
134
|
-
"ruled_out": [],
|
|
135
|
-
"common_pattern": "TBP-4 共同模式",
|
|
136
|
-
"boundary": "TBP-5 边界",
|
|
137
|
-
"root_cause_statement": "A + B 在条件 D 下导致 C",
|
|
138
|
-
"evidence": [],
|
|
139
|
-
"repair": []
|
|
140
|
-
},
|
|
141
|
-
"location": {
|
|
142
|
-
"file": "问题文件路径",
|
|
143
|
-
"line": 42,
|
|
144
|
-
"function": "问题函数名",
|
|
145
|
-
"code_snippet": "问题代码片段"
|
|
146
|
-
},
|
|
147
|
-
"fix_plan": {
|
|
148
|
-
"chosen_solution": "选择的修复方案",
|
|
149
|
-
"reason": "选择理由",
|
|
150
|
-
"steps": [
|
|
151
|
-
{ "step": 1, "action": "修复步骤", "file": "文件", "change": "变更内容" }
|
|
152
|
-
],
|
|
153
|
-
"code_before": "修改前代码",
|
|
154
|
-
"code_after": "修改后代码"
|
|
155
|
-
},
|
|
156
|
-
"verification": {
|
|
157
|
-
"test_cases": ["测试用例1", "测试用例2"],
|
|
158
|
-
"manual_checks": ["手动验证项1", "手动验证项2"]
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
\`\`\`
|
|
162
|
-
|
|
163
|
-
## ⚠️ 护栏
|
|
164
|
-
|
|
165
|
-
- 不要一看到新现象就补一个新分支,先判断是不是同一类根因在换表现
|
|
166
|
-
- 不要把“超时”直接当真因,要先分清是没进展、慢进展,还是结果已出现但判定过严
|
|
167
|
-
- 不要只看单一样本就下结论,有对比样本时必须做对比
|
|
168
|
-
- 如果证据不足,要明确说明还缺什么证据
|
|
169
|
-
|
|
170
|
-
---
|
|
171
|
-
|
|
172
|
-
*指南版本: 2.0.0*
|
|
173
|
-
*工具: MCP Probe Kit - fix_bug*
|
|
13
|
+
const PROMPT_TEMPLATE = `# TBP 8 步 Bug 真因分析与修复指南
|
|
14
|
+
|
|
15
|
+
## 🐛 Bug 信息
|
|
16
|
+
|
|
17
|
+
**错误信息**:
|
|
18
|
+
\`\`\`
|
|
19
|
+
{error_message}
|
|
20
|
+
\`\`\`
|
|
21
|
+
|
|
22
|
+
{stack_trace_section}
|
|
23
|
+
|
|
24
|
+
{reproduce_section}
|
|
25
|
+
|
|
26
|
+
{behavior_section}
|
|
27
|
+
|
|
28
|
+
{code_context_section}
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## TBP-1 现象
|
|
33
|
+
|
|
34
|
+
先把用户可见的问题定义准确,避免“坏了/卡了/有问题”这类泛化描述。
|
|
35
|
+
|
|
36
|
+
要求:
|
|
37
|
+
1. 用 1-2 句定义现象
|
|
38
|
+
2. 明确是“慢”“停滞”“失败”“回归”还是“未生效”
|
|
39
|
+
3. 如果提供了期望/实际行为,必须纳入现象定义
|
|
40
|
+
|
|
41
|
+
## TBP-2 时间线
|
|
42
|
+
|
|
43
|
+
基于现有信息复盘事件顺序,至少回答:
|
|
44
|
+
1. 什么时候开始
|
|
45
|
+
2. 中间发生了什么
|
|
46
|
+
3. 最后停在什么状态
|
|
47
|
+
|
|
48
|
+
优先记录:
|
|
49
|
+
- 用户输入 / 复现步骤
|
|
50
|
+
- first progress / first error
|
|
51
|
+
- tool call / stack / stop / timeout
|
|
52
|
+
- 关键文件或模块
|
|
53
|
+
|
|
54
|
+
## TBP-3 不是这个
|
|
55
|
+
|
|
56
|
+
列出当前应优先排除的错误方向,并说明需要什么证据排除。
|
|
57
|
+
|
|
58
|
+
常见排除项:
|
|
59
|
+
- 不是单纯网络慢
|
|
60
|
+
- 不是前端展示截断
|
|
61
|
+
- 不是消息没转发
|
|
62
|
+
- 不是纯粹的超时表象
|
|
63
|
+
- 不是用户输入丢失
|
|
64
|
+
|
|
65
|
+
## TBP-4 共同模式
|
|
66
|
+
|
|
67
|
+
对比成功/失败样本,找出从哪一步开始分叉。
|
|
68
|
+
|
|
69
|
+
重点检查:
|
|
70
|
+
- 传输层
|
|
71
|
+
- 会话状态机
|
|
72
|
+
- 完成态判定
|
|
73
|
+
- 工具执行
|
|
74
|
+
- 文件写入
|
|
75
|
+
- 重试策略
|
|
76
|
+
|
|
77
|
+
## TBP-5 边界
|
|
78
|
+
|
|
79
|
+
明确指出问题失控落在哪一层:
|
|
80
|
+
- 上游模型 / SDK
|
|
81
|
+
- 网关状态机
|
|
82
|
+
- session 复用
|
|
83
|
+
- tool 执行层
|
|
84
|
+
- 文件系统
|
|
85
|
+
- 环境配置
|
|
86
|
+
- UI 展示层
|
|
87
|
+
|
|
88
|
+
## TBP-6 真因
|
|
89
|
+
|
|
90
|
+
真因必须写成因果句:
|
|
91
|
+
\`A + B 在条件 D 下导致了 C\`
|
|
92
|
+
|
|
93
|
+
不允许只写:
|
|
94
|
+
- 超时了
|
|
95
|
+
- SDK 有 bug
|
|
96
|
+
- 返回慢
|
|
97
|
+
|
|
98
|
+
## TBP-7 证据链
|
|
99
|
+
|
|
100
|
+
说明:
|
|
101
|
+
1. 哪些证据支持真因
|
|
102
|
+
2. 哪些现象若出现会推翻它,但现场没有出现
|
|
103
|
+
3. 为什么其他解释更弱
|
|
104
|
+
|
|
105
|
+
## TBP-8 修复
|
|
106
|
+
|
|
107
|
+
只有在证据链闭合后,才开始设计修复。
|
|
108
|
+
|
|
109
|
+
每个修复方案都要说明:
|
|
110
|
+
- 改哪一层
|
|
111
|
+
- 为什么这是修真因,不是补症状
|
|
112
|
+
- 风险是什么
|
|
113
|
+
- 怎么验证
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## 📤 输出格式要求
|
|
118
|
+
|
|
119
|
+
请严格按以下 JSON 格式输出修复指南:
|
|
120
|
+
|
|
121
|
+
\`\`\`json
|
|
122
|
+
{
|
|
123
|
+
"bug_summary": "Bug 简述(一句话)",
|
|
124
|
+
"analysis_mode": "tbp8",
|
|
125
|
+
"analysis": {
|
|
126
|
+
"error_type": "错误类型",
|
|
127
|
+
"direct_cause": "直接原因",
|
|
128
|
+
"root_cause": "根本原因",
|
|
129
|
+
"affected_scope": "影响范围"
|
|
130
|
+
},
|
|
131
|
+
"tbp": {
|
|
132
|
+
"phenomenon": "TBP-1 现象",
|
|
133
|
+
"timeline": [],
|
|
134
|
+
"ruled_out": [],
|
|
135
|
+
"common_pattern": "TBP-4 共同模式",
|
|
136
|
+
"boundary": "TBP-5 边界",
|
|
137
|
+
"root_cause_statement": "A + B 在条件 D 下导致 C",
|
|
138
|
+
"evidence": [],
|
|
139
|
+
"repair": []
|
|
140
|
+
},
|
|
141
|
+
"location": {
|
|
142
|
+
"file": "问题文件路径",
|
|
143
|
+
"line": 42,
|
|
144
|
+
"function": "问题函数名",
|
|
145
|
+
"code_snippet": "问题代码片段"
|
|
146
|
+
},
|
|
147
|
+
"fix_plan": {
|
|
148
|
+
"chosen_solution": "选择的修复方案",
|
|
149
|
+
"reason": "选择理由",
|
|
150
|
+
"steps": [
|
|
151
|
+
{ "step": 1, "action": "修复步骤", "file": "文件", "change": "变更内容" }
|
|
152
|
+
],
|
|
153
|
+
"code_before": "修改前代码",
|
|
154
|
+
"code_after": "修改后代码"
|
|
155
|
+
},
|
|
156
|
+
"verification": {
|
|
157
|
+
"test_cases": ["测试用例1", "测试用例2"],
|
|
158
|
+
"manual_checks": ["手动验证项1", "手动验证项2"]
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
\`\`\`
|
|
162
|
+
|
|
163
|
+
## ⚠️ 护栏
|
|
164
|
+
|
|
165
|
+
- 不要一看到新现象就补一个新分支,先判断是不是同一类根因在换表现
|
|
166
|
+
- 不要把“超时”直接当真因,要先分清是没进展、慢进展,还是结果已出现但判定过严
|
|
167
|
+
- 不要只看单一样本就下结论,有对比样本时必须做对比
|
|
168
|
+
- 如果证据不足,要明确说明还缺什么证据
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
*指南版本: 2.0.0*
|
|
173
|
+
*工具: MCP Probe Kit - fix_bug*
|
|
174
174
|
`;
|
|
175
175
|
function inferBugType(text) {
|
|
176
176
|
if (/timeout|latency|slow|卡|慢|超时/i.test(text))
|
|
@@ -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
|
+
}>;
|