mcp-probe-kit 3.0.24 → 3.2.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.
Files changed (142) hide show
  1. package/README.md +755 -779
  2. package/build/index.js +42 -41
  3. package/build/lib/__tests__/spec-validator.unit.test.js +115 -0
  4. package/build/lib/agents-md-template.js +32 -32
  5. package/build/lib/memory-orchestration.js +29 -8
  6. package/build/lib/skill-bridge.js +12 -12
  7. package/build/lib/spec-validator.d.ts +36 -0
  8. package/build/lib/spec-validator.js +103 -0
  9. package/build/lib/template-loader.js +149 -47
  10. package/build/lib/tool-annotations.d.ts +30 -0
  11. package/build/lib/tool-annotations.js +55 -0
  12. package/build/lib/toolset-manager.js +2 -0
  13. package/build/resources/index.d.ts +4 -0
  14. package/build/resources/index.js +4 -0
  15. package/build/resources/tool-params-guide.d.ts +571 -0
  16. package/build/resources/tool-params-guide.js +488 -0
  17. package/build/resources/ui-ux-data/guidelines/vercel-web-interface.json +1632 -1632
  18. package/build/resources/ui-ux-data/metadata.json +30 -30
  19. package/build/resources/ui-ux-data/shadcn/blocks.json +2541 -2541
  20. package/build/resources/ui-ux-data/shadcn/components.json +997 -997
  21. package/build/resources/ui-ux-data/themes/presets.json +483 -483
  22. package/build/schemas/index.d.ts +22 -22
  23. package/build/schemas/memory-tools.d.ts +0 -22
  24. package/build/schemas/memory-tools.js +0 -14
  25. package/build/schemas/project-tools.d.ts +22 -0
  26. package/build/schemas/project-tools.js +23 -0
  27. package/build/tools/analyze_project.d.ts +1 -0
  28. package/build/tools/analyze_project.js +527 -0
  29. package/build/tools/check_deps.d.ts +13 -0
  30. package/build/tools/check_deps.js +204 -0
  31. package/build/tools/check_spec.d.ts +7 -0
  32. package/build/tools/check_spec.js +81 -0
  33. package/build/tools/code_insight.js +41 -41
  34. package/build/tools/convert.d.ts +13 -0
  35. package/build/tools/convert.js +599 -0
  36. package/build/tools/css_order.d.ts +13 -0
  37. package/build/tools/css_order.js +81 -0
  38. package/build/tools/debug.d.ts +13 -0
  39. package/build/tools/debug.js +131 -0
  40. package/build/tools/design2code.d.ts +20 -0
  41. package/build/tools/design2code.js +426 -0
  42. package/build/tools/detect_shell.d.ts +6 -0
  43. package/build/tools/detect_shell.js +151 -0
  44. package/build/tools/explain.d.ts +13 -0
  45. package/build/tools/explain.js +390 -0
  46. package/build/tools/fix.d.ts +13 -0
  47. package/build/tools/fix.js +303 -0
  48. package/build/tools/fix_bug.js +161 -161
  49. package/build/tools/gen_mock.d.ts +22 -0
  50. package/build/tools/gen_mock.js +269 -0
  51. package/build/tools/gen_skill.d.ts +13 -0
  52. package/build/tools/gen_skill.js +560 -0
  53. package/build/tools/genapi.d.ts +13 -0
  54. package/build/tools/genapi.js +174 -0
  55. package/build/tools/genchangelog.d.ts +13 -0
  56. package/build/tools/genchangelog.js +250 -0
  57. package/build/tools/gencommit.js +60 -60
  58. package/build/tools/gendoc.d.ts +13 -0
  59. package/build/tools/gendoc.js +232 -0
  60. package/build/tools/genpr.d.ts +13 -0
  61. package/build/tools/genpr.js +194 -0
  62. package/build/tools/genreadme.d.ts +13 -0
  63. package/build/tools/genreadme.js +626 -0
  64. package/build/tools/gensql.d.ts +13 -0
  65. package/build/tools/gensql.js +320 -0
  66. package/build/tools/genui.d.ts +13 -0
  67. package/build/tools/genui.js +803 -0
  68. package/build/tools/index.d.ts +1 -1
  69. package/build/tools/index.js +1 -1
  70. package/build/tools/init_component_catalog.d.ts +22 -0
  71. package/build/tools/init_component_catalog.js +809 -0
  72. package/build/tools/init_project_context.js +432 -432
  73. package/build/tools/init_setting.d.ts +13 -0
  74. package/build/tools/init_setting.js +47 -0
  75. package/build/tools/perf.d.ts +13 -0
  76. package/build/tools/perf.js +409 -0
  77. package/build/tools/render_ui.d.ts +22 -0
  78. package/build/tools/render_ui.js +384 -0
  79. package/build/tools/resolve_conflict.d.ts +13 -0
  80. package/build/tools/resolve_conflict.js +349 -0
  81. package/build/tools/security_scan.d.ts +22 -0
  82. package/build/tools/security_scan.js +323 -0
  83. package/build/tools/split.d.ts +13 -0
  84. package/build/tools/split.js +599 -0
  85. package/build/tools/start_api.d.ts +13 -0
  86. package/build/tools/start_api.js +193 -0
  87. package/build/tools/start_bugfix.js +254 -243
  88. package/build/tools/start_doc.d.ts +13 -0
  89. package/build/tools/start_doc.js +207 -0
  90. package/build/tools/start_feature.js +162 -127
  91. package/build/tools/start_product.js +1 -1
  92. package/build/tools/start_refactor.d.ts +13 -0
  93. package/build/tools/start_refactor.js +188 -0
  94. package/build/tools/start_release.d.ts +13 -0
  95. package/build/tools/start_release.js +167 -0
  96. package/build/tools/start_review.d.ts +13 -0
  97. package/build/tools/start_review.js +175 -0
  98. package/build/tools/start_ui.js +426 -412
  99. package/build/tools/ui-ux-tools.js +290 -290
  100. package/build/utils/__tests__/vercel-guidelines-sync.unit.test.js +12 -12
  101. package/build/utils/themes-sync.js +8 -8
  102. package/package.json +81 -83
  103. package/build/lib/__tests__/memory-orchestration.unit.test.js +0 -88
  104. package/build/lib/__tests__/memory-payload.unit.test.js +0 -35
  105. package/build/lib/cursor-history-client.d.ts +0 -54
  106. package/build/lib/cursor-history-client.js +0 -240
  107. package/build/tools/__tests__/cursor-history.unit.test.js +0 -38
  108. package/build/tools/cursor_read_conversation.d.ts +0 -7
  109. package/build/tools/cursor_read_conversation.js +0 -36
  110. package/docs/.mcp-probe/layout.json +0 -11
  111. package/docs/CNAME +0 -1
  112. package/docs/assets/font/MaterialSymbolsOutlined.codepoints +0 -4102
  113. package/docs/assets/font/MaterialSymbolsOutlined.ttf +0 -0
  114. package/docs/assets/font/noto-sans-sc-400.ttf +0 -0
  115. package/docs/assets/font/noto-sans-sc-700.ttf +0 -0
  116. package/docs/assets/font/noto-sans-sc-900.ttf +0 -0
  117. package/docs/assets/js/i18n.js +0 -375
  118. package/docs/assets/js/tailwind.js +0 -83
  119. package/docs/assets/logo-zh.png +0 -0
  120. package/docs/assets/logo.png +0 -0
  121. package/docs/data/tools.js +0 -523
  122. package/docs/i18n/all-tools/en.json +0 -190
  123. package/docs/i18n/all-tools/ja.json +0 -171
  124. package/docs/i18n/all-tools/ko.json +0 -171
  125. package/docs/i18n/all-tools/zh-CN.json +0 -190
  126. package/docs/i18n/en.json +0 -626
  127. package/docs/i18n/ja.json +0 -602
  128. package/docs/i18n/ko.json +0 -602
  129. package/docs/i18n/zh-CN.json +0 -626
  130. package/docs/index.html +0 -327
  131. package/docs/memory-local-setup.md +0 -315
  132. package/docs/memory-local-setup.zh-CN.md +0 -283
  133. package/docs/pages/all-tools.html +0 -515
  134. package/docs/pages/examples.html +0 -717
  135. package/docs/pages/getting-started.html +0 -964
  136. package/docs/pages/migration.html +0 -308
  137. package/docs/specs/user-auth/design.md +0 -82
  138. package/docs/specs/user-auth/requirements.md +0 -52
  139. package/docs/specs/user-auth/tasks.md +0 -55
  140. /package/build/lib/__tests__/{memory-orchestration.unit.test.d.ts → spec-validator.unit.test.d.ts} +0 -0
  141. /package/build/{lib/__tests__/memory-payload.unit.test.d.ts → utils/design-docs-generator.d.ts} +0 -0
  142. /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
+ }
@@ -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
+ }>;