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.
- package/README.md +755 -779
- package/build/index.js +42 -41
- package/build/lib/__tests__/spec-validator.unit.test.js +115 -0
- package/build/lib/agents-md-template.js +32 -32
- package/build/lib/memory-orchestration.js +29 -8
- package/build/lib/skill-bridge.js +12 -12
- package/build/lib/spec-validator.d.ts +36 -0
- package/build/lib/spec-validator.js +103 -0
- package/build/lib/template-loader.js +149 -47
- package/build/lib/tool-annotations.d.ts +30 -0
- package/build/lib/tool-annotations.js +55 -0
- package/build/lib/toolset-manager.js +2 -0
- 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 +22 -22
- package/build/schemas/memory-tools.d.ts +0 -22
- package/build/schemas/memory-tools.js +0 -14
- package/build/schemas/project-tools.d.ts +22 -0
- package/build/schemas/project-tools.js +23 -0
- 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/check_spec.d.ts +7 -0
- package/build/tools/check_spec.js +81 -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 +1 -1
- package/build/tools/index.js +1 -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/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/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 +254 -243
- package/build/tools/start_doc.d.ts +13 -0
- package/build/tools/start_doc.js +207 -0
- package/build/tools/start_feature.js +162 -127
- 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 +426 -412
- 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 -88
- 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 -315
- 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 → spec-validator.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
|
@@ -46,232 +46,232 @@ function resolveTemplateProfile(rawProfile, description) {
|
|
|
46
46
|
warning: `模板档位 "${rawProfile}" 不支持,已回退为 ${fallback}`,
|
|
47
47
|
};
|
|
48
48
|
}
|
|
49
|
-
const PROMPT_TEMPLATE_GUIDED = `# 🐛 Bug 修复编排指南(TBP 8 步真因分析)
|
|
50
|
-
|
|
51
|
-
## 🎯 目标
|
|
52
|
-
|
|
53
|
-
修复以下 Bug:
|
|
54
|
-
|
|
55
|
-
**错误信息**:
|
|
56
|
-
\`\`\`
|
|
57
|
-
{error_message}
|
|
58
|
-
\`\`\`
|
|
59
|
-
|
|
60
|
-
{stack_trace_section}
|
|
61
|
-
|
|
62
|
-
---
|
|
63
|
-
|
|
64
|
-
## 📋 步骤 0: 项目上下文与取证基线(自动处理)
|
|
65
|
-
|
|
66
|
-
**操作**:
|
|
67
|
-
1. 检查 \`docs/project-context.md\` 是否存在
|
|
68
|
-
2. 检查 \`docs/graph-insights/latest.md\` 和 \`docs/graph-insights/latest.json\` 是否存在
|
|
69
|
-
3. **如果任一缺失**:
|
|
70
|
-
- 调用 \`init_project_context\` 工具
|
|
71
|
-
- 等待生成完成
|
|
72
|
-
4. **读取** \`docs/project-context.md\` 与图谱文档
|
|
73
|
-
5. 了解项目的技术栈、架构、测试框架和调用链
|
|
74
|
-
6. 后续步骤参考此上下文
|
|
75
|
-
|
|
76
|
-
---
|
|
77
|
-
|
|
78
|
-
## 🔍 步骤 1: 先做 TBP 1-7,再决定修复
|
|
79
|
-
|
|
80
|
-
**调用工具**: \`fix_bug\`
|
|
81
|
-
|
|
82
|
-
**参数**:
|
|
83
|
-
\`\`\`json
|
|
84
|
-
{
|
|
85
|
-
"error_message": "{error_message}",
|
|
86
|
-
"stack_trace": "{stack_trace}"
|
|
87
|
-
}
|
|
88
|
-
\`\`\`
|
|
89
|
-
|
|
90
|
-
**执行要点**:
|
|
91
|
-
1. 先定义现象,不能泛化
|
|
92
|
-
2. 复盘时间线,尽量带时间/步骤/状态
|
|
93
|
-
3. 明确排除错误方向,并说明为什么不是
|
|
94
|
-
4. 对比成功/失败样本,找分叉点
|
|
95
|
-
5. 定位问题边界(模型 / 状态机 / 工具 / 文件 / 环境)
|
|
96
|
-
6. 用因果句陈述真因:A + B 在条件 D 下导致 C
|
|
97
|
-
7. 闭合证据链后,才进入修复设计
|
|
98
|
-
8. 修复必须说明风险与验证方式
|
|
99
|
-
|
|
100
|
-
**产出**: 修复后的代码
|
|
101
|
-
|
|
102
|
-
---
|
|
103
|
-
|
|
104
|
-
## 🧪 步骤 2: 生成回归测试
|
|
105
|
-
|
|
106
|
-
**调用工具**: \`gentest\`
|
|
107
|
-
|
|
108
|
-
**参数**:
|
|
109
|
-
\`\`\`json
|
|
110
|
-
{
|
|
111
|
-
"code": "[修复后的代码]",
|
|
112
|
-
"framework": "[根据项目上下文选择: jest/vitest/mocha]"
|
|
113
|
-
}
|
|
114
|
-
\`\`\`
|
|
115
|
-
|
|
116
|
-
**执行要点**:
|
|
117
|
-
1. 为修复的代码生成测试
|
|
118
|
-
2. 包含 Bug 场景的测试用例
|
|
119
|
-
3. 包含边界情况测试
|
|
120
|
-
|
|
121
|
-
**产出**: 测试代码
|
|
122
|
-
|
|
123
|
-
---
|
|
124
|
-
|
|
125
|
-
## ✅ 完成检查
|
|
126
|
-
|
|
127
|
-
- [ ] 项目上下文已读取
|
|
128
|
-
- [ ] TBP-1~TBP-7 已闭合
|
|
129
|
-
- [ ] 真因已写成因果句
|
|
130
|
-
- [ ] 代码已修复
|
|
131
|
-
- [ ] 测试已添加
|
|
132
|
-
- [ ] 测试已通过
|
|
133
|
-
|
|
134
|
-
---
|
|
135
|
-
|
|
136
|
-
## 📝 输出汇总
|
|
137
|
-
|
|
138
|
-
完成后,向用户汇总:
|
|
139
|
-
|
|
140
|
-
1. **TBP 现象**: [精确定义的问题]
|
|
141
|
-
2. **TBP 时间线**: [关键事件顺序]
|
|
142
|
-
3. **已排除方向**: [不是哪些原因]
|
|
143
|
-
4. **问题边界**: [失控发生在哪一层]
|
|
144
|
-
5. **Bug 真因**: [根本原因]
|
|
145
|
-
6. **修复方案**: [修复说明]
|
|
146
|
-
7. **修改文件**: [文件列表]
|
|
147
|
-
8. **测试覆盖**: [测试情况]
|
|
148
|
-
|
|
149
|
-
---
|
|
150
|
-
|
|
151
|
-
*编排工具: MCP Probe Kit - start_bugfix*
|
|
49
|
+
const PROMPT_TEMPLATE_GUIDED = `# 🐛 Bug 修复编排指南(TBP 8 步真因分析)
|
|
50
|
+
|
|
51
|
+
## 🎯 目标
|
|
52
|
+
|
|
53
|
+
修复以下 Bug:
|
|
54
|
+
|
|
55
|
+
**错误信息**:
|
|
56
|
+
\`\`\`
|
|
57
|
+
{error_message}
|
|
58
|
+
\`\`\`
|
|
59
|
+
|
|
60
|
+
{stack_trace_section}
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## 📋 步骤 0: 项目上下文与取证基线(自动处理)
|
|
65
|
+
|
|
66
|
+
**操作**:
|
|
67
|
+
1. 检查 \`docs/project-context.md\` 是否存在
|
|
68
|
+
2. 检查 \`docs/graph-insights/latest.md\` 和 \`docs/graph-insights/latest.json\` 是否存在
|
|
69
|
+
3. **如果任一缺失**:
|
|
70
|
+
- 调用 \`init_project_context\` 工具
|
|
71
|
+
- 等待生成完成
|
|
72
|
+
4. **读取** \`docs/project-context.md\` 与图谱文档
|
|
73
|
+
5. 了解项目的技术栈、架构、测试框架和调用链
|
|
74
|
+
6. 后续步骤参考此上下文
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## 🔍 步骤 1: 先做 TBP 1-7,再决定修复
|
|
79
|
+
|
|
80
|
+
**调用工具**: \`fix_bug\`
|
|
81
|
+
|
|
82
|
+
**参数**:
|
|
83
|
+
\`\`\`json
|
|
84
|
+
{
|
|
85
|
+
"error_message": "{error_message}",
|
|
86
|
+
"stack_trace": "{stack_trace}"
|
|
87
|
+
}
|
|
88
|
+
\`\`\`
|
|
89
|
+
|
|
90
|
+
**执行要点**:
|
|
91
|
+
1. 先定义现象,不能泛化
|
|
92
|
+
2. 复盘时间线,尽量带时间/步骤/状态
|
|
93
|
+
3. 明确排除错误方向,并说明为什么不是
|
|
94
|
+
4. 对比成功/失败样本,找分叉点
|
|
95
|
+
5. 定位问题边界(模型 / 状态机 / 工具 / 文件 / 环境)
|
|
96
|
+
6. 用因果句陈述真因:A + B 在条件 D 下导致 C
|
|
97
|
+
7. 闭合证据链后,才进入修复设计
|
|
98
|
+
8. 修复必须说明风险与验证方式
|
|
99
|
+
|
|
100
|
+
**产出**: 修复后的代码
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## 🧪 步骤 2: 生成回归测试
|
|
105
|
+
|
|
106
|
+
**调用工具**: \`gentest\`
|
|
107
|
+
|
|
108
|
+
**参数**:
|
|
109
|
+
\`\`\`json
|
|
110
|
+
{
|
|
111
|
+
"code": "[修复后的代码]",
|
|
112
|
+
"framework": "[根据项目上下文选择: jest/vitest/mocha]"
|
|
113
|
+
}
|
|
114
|
+
\`\`\`
|
|
115
|
+
|
|
116
|
+
**执行要点**:
|
|
117
|
+
1. 为修复的代码生成测试
|
|
118
|
+
2. 包含 Bug 场景的测试用例
|
|
119
|
+
3. 包含边界情况测试
|
|
120
|
+
|
|
121
|
+
**产出**: 测试代码
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## ✅ 完成检查
|
|
126
|
+
|
|
127
|
+
- [ ] 项目上下文已读取
|
|
128
|
+
- [ ] TBP-1~TBP-7 已闭合
|
|
129
|
+
- [ ] 真因已写成因果句
|
|
130
|
+
- [ ] 代码已修复
|
|
131
|
+
- [ ] 测试已添加
|
|
132
|
+
- [ ] 测试已通过
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## 📝 输出汇总
|
|
137
|
+
|
|
138
|
+
完成后,向用户汇总:
|
|
139
|
+
|
|
140
|
+
1. **TBP 现象**: [精确定义的问题]
|
|
141
|
+
2. **TBP 时间线**: [关键事件顺序]
|
|
142
|
+
3. **已排除方向**: [不是哪些原因]
|
|
143
|
+
4. **问题边界**: [失控发生在哪一层]
|
|
144
|
+
5. **Bug 真因**: [根本原因]
|
|
145
|
+
6. **修复方案**: [修复说明]
|
|
146
|
+
7. **修改文件**: [文件列表]
|
|
147
|
+
8. **测试覆盖**: [测试情况]
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
*编排工具: MCP Probe Kit - start_bugfix*
|
|
152
152
|
`;
|
|
153
|
-
const PROMPT_TEMPLATE_STRICT = `# 🐛 Bug 修复编排(严格 | TBP 8 步)
|
|
154
|
-
|
|
155
|
-
## 🎯 目标
|
|
156
|
-
修复 Bug:{error_message}
|
|
157
|
-
|
|
158
|
-
{stack_trace_section}
|
|
159
|
-
|
|
160
|
-
---
|
|
161
|
-
|
|
162
|
-
## ✅ 执行计划(按顺序)
|
|
163
|
-
|
|
164
|
-
1) 检查 \`docs/project-context.md\` 与 \`docs/graph-insights/latest.*\`,任一缺失则调用 \`init_project_context\`
|
|
165
|
-
2) 调用 \`fix_bug\`
|
|
166
|
-
\`\`\`json
|
|
167
|
-
{
|
|
168
|
-
"error_message": "{error_message}",
|
|
169
|
-
"stack_trace": "{stack_trace}",
|
|
170
|
-
"analysis_mode": "{analysis_mode}"
|
|
171
|
-
}
|
|
172
|
-
\`\`\`
|
|
173
|
-
3) 调用 \`gentest\`
|
|
174
|
-
\`\`\`json
|
|
175
|
-
{
|
|
176
|
-
"code": "[修复后的代码]",
|
|
177
|
-
"framework": "[根据项目上下文选择: jest/vitest/mocha]"
|
|
178
|
-
}
|
|
179
|
-
\`\`\`
|
|
180
|
-
|
|
181
|
-
---
|
|
182
|
-
|
|
183
|
-
## ✅ 输出汇总
|
|
184
|
-
1. TBP 现象
|
|
185
|
-
2. TBP 时间线
|
|
186
|
-
3. 已排除方向
|
|
187
|
-
4. 问题边界
|
|
188
|
-
5. Bug 真因
|
|
189
|
-
6. 修复方案
|
|
190
|
-
7. 修改文件
|
|
191
|
-
8. 测试覆盖
|
|
192
|
-
|
|
193
|
-
---
|
|
194
|
-
|
|
195
|
-
*编排工具: MCP Probe Kit - start_bugfix*
|
|
153
|
+
const PROMPT_TEMPLATE_STRICT = `# 🐛 Bug 修复编排(严格 | TBP 8 步)
|
|
154
|
+
|
|
155
|
+
## 🎯 目标
|
|
156
|
+
修复 Bug:{error_message}
|
|
157
|
+
|
|
158
|
+
{stack_trace_section}
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## ✅ 执行计划(按顺序)
|
|
163
|
+
|
|
164
|
+
1) 检查 \`docs/project-context.md\` 与 \`docs/graph-insights/latest.*\`,任一缺失则调用 \`init_project_context\`
|
|
165
|
+
2) 调用 \`fix_bug\`
|
|
166
|
+
\`\`\`json
|
|
167
|
+
{
|
|
168
|
+
"error_message": "{error_message}",
|
|
169
|
+
"stack_trace": "{stack_trace}",
|
|
170
|
+
"analysis_mode": "{analysis_mode}"
|
|
171
|
+
}
|
|
172
|
+
\`\`\`
|
|
173
|
+
3) 调用 \`gentest\`
|
|
174
|
+
\`\`\`json
|
|
175
|
+
{
|
|
176
|
+
"code": "[修复后的代码]",
|
|
177
|
+
"framework": "[根据项目上下文选择: jest/vitest/mocha]"
|
|
178
|
+
}
|
|
179
|
+
\`\`\`
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## ✅ 输出汇总
|
|
184
|
+
1. TBP 现象
|
|
185
|
+
2. TBP 时间线
|
|
186
|
+
3. 已排除方向
|
|
187
|
+
4. 问题边界
|
|
188
|
+
5. Bug 真因
|
|
189
|
+
6. 修复方案
|
|
190
|
+
7. 修改文件
|
|
191
|
+
8. 测试覆盖
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
*编排工具: MCP Probe Kit - start_bugfix*
|
|
196
196
|
`;
|
|
197
|
-
const LOOP_PROMPT_TEMPLATE_GUIDED = `# 🧭 Bug 需求澄清与补全(TBP RCA Loop)
|
|
198
|
-
|
|
199
|
-
本模式用于**生产级稳健补全**:在不改变用户意图的前提下补齐 TBP 8 步真因分析所需证据。
|
|
200
|
-
|
|
201
|
-
## 🎯 目标
|
|
202
|
-
修复 Bug:{error_message}
|
|
203
|
-
|
|
204
|
-
## ✅ 规则
|
|
205
|
-
1. **不覆盖用户原始描述**
|
|
206
|
-
2. **补全内容必须标注来源**(User / Derived / Assumption)
|
|
207
|
-
3. **假设必须进入待确认列表**
|
|
208
|
-
4. **每轮问题 ≤ {question_budget},假设 ≤ {assumption_cap}**
|
|
209
|
-
|
|
210
|
-
---
|
|
211
|
-
|
|
212
|
-
## 🔁 执行步骤(每轮)
|
|
213
|
-
|
|
214
|
-
### 1) 生成待确认问题
|
|
215
|
-
使用 \`ask_user\` 提问,问题来源于 TBP 清单(现象/时间线/对比样本/边界/验证)。
|
|
216
|
-
|
|
217
|
-
**调用示例**:
|
|
218
|
-
\`\`\`json
|
|
219
|
-
{
|
|
220
|
-
"questions": [
|
|
221
|
-
{ "question": "复现步骤是什么?", "context": "复现步骤", "required": true },
|
|
222
|
-
{ "question": "期望行为是什么?", "context": "期望行为", "required": true }
|
|
223
|
-
]
|
|
224
|
-
}
|
|
225
|
-
\`\`\`
|
|
226
|
-
|
|
227
|
-
### 2) 更新结构化输出
|
|
228
|
-
将回答补入 \`requirements\`,并标注来源:
|
|
229
|
-
- User:用户明确回答
|
|
230
|
-
- Derived:合理推导
|
|
231
|
-
- Assumption:无法确认但补全(需确认)
|
|
232
|
-
|
|
233
|
-
### 3) 自检与结束
|
|
234
|
-
若 \`openQuestions\` 为空且无高风险假设,则结束 loop,进入 TBP-6/7/8 修复流程。
|
|
235
|
-
|
|
236
|
-
---
|
|
237
|
-
|
|
238
|
-
## ✅ 结束后继续
|
|
239
|
-
当满足结束条件时,执行:
|
|
240
|
-
1. 调用 \`fix_bug\` 完成 TBP 8 步分析与修复方案
|
|
241
|
-
2. 调用 \`gentest\` 生成回归测试
|
|
242
|
-
|
|
243
|
-
---
|
|
244
|
-
|
|
245
|
-
*编排工具: MCP Probe Kit - start_bugfix (requirements loop)*
|
|
197
|
+
const LOOP_PROMPT_TEMPLATE_GUIDED = `# 🧭 Bug 需求澄清与补全(TBP RCA Loop)
|
|
198
|
+
|
|
199
|
+
本模式用于**生产级稳健补全**:在不改变用户意图的前提下补齐 TBP 8 步真因分析所需证据。
|
|
200
|
+
|
|
201
|
+
## 🎯 目标
|
|
202
|
+
修复 Bug:{error_message}
|
|
203
|
+
|
|
204
|
+
## ✅ 规则
|
|
205
|
+
1. **不覆盖用户原始描述**
|
|
206
|
+
2. **补全内容必须标注来源**(User / Derived / Assumption)
|
|
207
|
+
3. **假设必须进入待确认列表**
|
|
208
|
+
4. **每轮问题 ≤ {question_budget},假设 ≤ {assumption_cap}**
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## 🔁 执行步骤(每轮)
|
|
213
|
+
|
|
214
|
+
### 1) 生成待确认问题
|
|
215
|
+
使用 \`ask_user\` 提问,问题来源于 TBP 清单(现象/时间线/对比样本/边界/验证)。
|
|
216
|
+
|
|
217
|
+
**调用示例**:
|
|
218
|
+
\`\`\`json
|
|
219
|
+
{
|
|
220
|
+
"questions": [
|
|
221
|
+
{ "question": "复现步骤是什么?", "context": "复现步骤", "required": true },
|
|
222
|
+
{ "question": "期望行为是什么?", "context": "期望行为", "required": true }
|
|
223
|
+
]
|
|
224
|
+
}
|
|
225
|
+
\`\`\`
|
|
226
|
+
|
|
227
|
+
### 2) 更新结构化输出
|
|
228
|
+
将回答补入 \`requirements\`,并标注来源:
|
|
229
|
+
- User:用户明确回答
|
|
230
|
+
- Derived:合理推导
|
|
231
|
+
- Assumption:无法确认但补全(需确认)
|
|
232
|
+
|
|
233
|
+
### 3) 自检与结束
|
|
234
|
+
若 \`openQuestions\` 为空且无高风险假设,则结束 loop,进入 TBP-6/7/8 修复流程。
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
## ✅ 结束后继续
|
|
239
|
+
当满足结束条件时,执行:
|
|
240
|
+
1. 调用 \`fix_bug\` 完成 TBP 8 步分析与修复方案
|
|
241
|
+
2. 调用 \`gentest\` 生成回归测试
|
|
242
|
+
|
|
243
|
+
---
|
|
244
|
+
|
|
245
|
+
*编排工具: MCP Probe Kit - start_bugfix (requirements loop)*
|
|
246
246
|
`;
|
|
247
|
-
const LOOP_PROMPT_TEMPLATE_STRICT = `# 🧭 Bug 需求澄清与补全(TBP RCA Loop | 严格)
|
|
248
|
-
|
|
249
|
-
本模式用于稳健补全关键信息,不改变用户意图。
|
|
250
|
-
|
|
251
|
-
## 🎯 目标
|
|
252
|
-
修复 Bug:{error_message}
|
|
253
|
-
|
|
254
|
-
## ✅ 规则
|
|
255
|
-
1. 不覆盖用户原始描述
|
|
256
|
-
2. 补全内容标注来源(User / Derived / Assumption)
|
|
257
|
-
3. 假设进入待确认列表
|
|
258
|
-
4. 每轮问题 ≤ {question_budget},假设 ≤ {assumption_cap}
|
|
259
|
-
|
|
260
|
-
---
|
|
261
|
-
|
|
262
|
-
## 🔁 执行步骤(每轮)
|
|
263
|
-
1) 使用 \`ask_user\` 提问补全关键信息
|
|
264
|
-
2) 更新结构化输出并标注来源
|
|
265
|
-
3) 若 \`openQuestions\` 为空且无高风险假设则结束
|
|
266
|
-
|
|
267
|
-
---
|
|
268
|
-
|
|
269
|
-
## ✅ 结束后继续
|
|
270
|
-
当满足结束条件时,调用 \`fix_bug\` 与 \`gentest\`
|
|
271
|
-
|
|
272
|
-
---
|
|
273
|
-
|
|
274
|
-
*编排工具: MCP Probe Kit - start_bugfix (requirements loop)*
|
|
247
|
+
const LOOP_PROMPT_TEMPLATE_STRICT = `# 🧭 Bug 需求澄清与补全(TBP RCA Loop | 严格)
|
|
248
|
+
|
|
249
|
+
本模式用于稳健补全关键信息,不改变用户意图。
|
|
250
|
+
|
|
251
|
+
## 🎯 目标
|
|
252
|
+
修复 Bug:{error_message}
|
|
253
|
+
|
|
254
|
+
## ✅ 规则
|
|
255
|
+
1. 不覆盖用户原始描述
|
|
256
|
+
2. 补全内容标注来源(User / Derived / Assumption)
|
|
257
|
+
3. 假设进入待确认列表
|
|
258
|
+
4. 每轮问题 ≤ {question_budget},假设 ≤ {assumption_cap}
|
|
259
|
+
|
|
260
|
+
---
|
|
261
|
+
|
|
262
|
+
## 🔁 执行步骤(每轮)
|
|
263
|
+
1) 使用 \`ask_user\` 提问补全关键信息
|
|
264
|
+
2) 更新结构化输出并标注来源
|
|
265
|
+
3) 若 \`openQuestions\` 为空且无高风险假设则结束
|
|
266
|
+
|
|
267
|
+
---
|
|
268
|
+
|
|
269
|
+
## ✅ 结束后继续
|
|
270
|
+
当满足结束条件时,调用 \`fix_bug\` 与 \`gentest\`
|
|
271
|
+
|
|
272
|
+
---
|
|
273
|
+
|
|
274
|
+
*编排工具: MCP Probe Kit - start_bugfix (requirements loop)*
|
|
275
275
|
`;
|
|
276
276
|
function buildBugfixQuestions(questionBudget) {
|
|
277
277
|
const base = [
|
|
@@ -410,21 +410,32 @@ export async function startBugfix(args, context) {
|
|
|
410
410
|
]
|
|
411
411
|
.filter(Boolean)
|
|
412
412
|
.join("\n\n");
|
|
413
|
-
const graphGuideSection = `
|
|
414
|
-
|
|
415
|
-
## 🧠 代码图谱上下文
|
|
416
|
-
- 基线入口: ${graphDocs.latestMarkdownPath}
|
|
417
|
-
- 基线结构化副本: ${graphDocs.latestJsonPath}
|
|
418
|
-
- 基线状态: ${graphDocsMissing ? "缺失(需要补初始化)" : "可用"}
|
|
419
|
-
- 任务级收敛: ${graphContext.available ? "可用" : "降级"}
|
|
420
|
-
- 任务级摘要: ${graphContext.summary}
|
|
413
|
+
const graphGuideSection = `
|
|
414
|
+
|
|
415
|
+
## 🧠 代码图谱上下文
|
|
416
|
+
- 基线入口: ${graphDocs.latestMarkdownPath}
|
|
417
|
+
- 基线结构化副本: ${graphDocs.latestJsonPath}
|
|
418
|
+
- 基线状态: ${graphDocsMissing ? "缺失(需要补初始化)" : "可用"}
|
|
419
|
+
- 任务级收敛: ${graphContext.available ? "可用" : "降级"}
|
|
420
|
+
- 任务级摘要: ${graphContext.summary}
|
|
421
421
|
${graphContext.highlights.length > 0
|
|
422
422
|
? `- 任务级线索:\n${graphContext.highlights.slice(0, 3).map((item) => ` - ${item}`).join("\n")}`
|
|
423
|
-
: "- 任务级线索: 无"}
|
|
424
|
-
- 使用方式: 先读取基线图谱,再用本次任务图谱做 TBP-4 / TBP-5 / TBP-6 的边界与真因收敛
|
|
423
|
+
: "- 任务级线索: 无"}
|
|
424
|
+
- 使用方式: 先读取基线图谱,再用本次任务图谱做 TBP-4 / TBP-5 / TBP-6 的边界与真因收敛
|
|
425
425
|
`;
|
|
426
426
|
const memoryContext = await loadMemoryInjectionContext([errorMessage, stackTrace, codeContext].filter(Boolean).join("\n"), "bugfix");
|
|
427
427
|
const memoryGuideSection = renderMemoryGuideSection(memoryContext);
|
|
428
|
+
// 记忆优先:先消化历史同类 Bug 的根因/修复(坑),再做 TBP 真因分析
|
|
429
|
+
const memoryRecallStep = memoryContext.enabled
|
|
430
|
+
? [{
|
|
431
|
+
id: 'recall-memory',
|
|
432
|
+
tool: 'search_memory',
|
|
433
|
+
when: '开干前(下方「历史经验与坑」已自动注入相似历史修复;需要更多同类案例时再调)',
|
|
434
|
+
args: { query: errorMessage, limit: 5 },
|
|
435
|
+
outputs: [],
|
|
436
|
+
note: '先看历史同类 Bug 的根因与已验证修复,优先复用其修复路径并规避同类坑;据此收敛 TBP-4/5/6 的真因方向',
|
|
437
|
+
}]
|
|
438
|
+
: [];
|
|
428
439
|
if (requirementsMode === "loop") {
|
|
429
440
|
throwIfAborted(context?.signal, "start_bugfix(loop) 已取消");
|
|
430
441
|
await reportToolProgress(context, 70, "start_bugfix: 生成 loop 计划");
|
|
@@ -450,6 +461,7 @@ ${graphContext.highlights.length > 0
|
|
|
450
461
|
const plan = {
|
|
451
462
|
mode: 'delegated',
|
|
452
463
|
steps: [
|
|
464
|
+
...memoryRecallStep,
|
|
453
465
|
{
|
|
454
466
|
id: 'context',
|
|
455
467
|
tool: 'init_project_context',
|
|
@@ -512,19 +524,18 @@ ${graphContext.highlights.length > 0
|
|
|
512
524
|
],
|
|
513
525
|
notes: [
|
|
514
526
|
...headerNotes,
|
|
515
|
-
...(memoryContext.enabled ? ['
|
|
527
|
+
...(memoryContext.enabled ? ['记忆优先: 已自动注入历史同类 Bug 的根因与修复(见顶部),先复用、规避同类坑;结束后评估沉淀'] : []),
|
|
516
528
|
],
|
|
517
529
|
});
|
|
518
530
|
const loopTemplate = profileDecision.resolved === 'strict'
|
|
519
531
|
? LOOP_PROMPT_TEMPLATE_STRICT
|
|
520
532
|
: LOOP_PROMPT_TEMPLATE_GUIDED;
|
|
521
|
-
const
|
|
533
|
+
const renderedLoopPrompt = loopTemplate
|
|
522
534
|
.replace(/{error_message}/g, errorMessage)
|
|
523
535
|
.replace(/{analysis_mode}/g, analysisMode)
|
|
524
536
|
.replace(/{question_budget}/g, String(questionBudget))
|
|
525
|
-
.replace(/{assumption_cap}/g, String(assumptionCap))
|
|
526
|
-
|
|
527
|
-
+ memoryGuideSection;
|
|
537
|
+
.replace(/{assumption_cap}/g, String(assumptionCap));
|
|
538
|
+
const guide = header + memoryGuideSection + renderedLoopPrompt + graphGuideSection;
|
|
528
539
|
const loopReport = {
|
|
529
540
|
mode: 'loop',
|
|
530
541
|
round: 1,
|
|
@@ -577,22 +588,22 @@ ${graphContext.highlights.length > 0
|
|
|
577
588
|
],
|
|
578
589
|
notes: [
|
|
579
590
|
...headerNotes,
|
|
580
|
-
...(memoryContext.enabled ? ['
|
|
591
|
+
...(memoryContext.enabled ? ['记忆优先: 已自动注入历史同类 Bug 的根因与修复(见顶部),先复用、规避同类坑'] : []),
|
|
581
592
|
],
|
|
582
593
|
});
|
|
583
594
|
const promptTemplate = profileDecision.resolved === 'strict'
|
|
584
595
|
? PROMPT_TEMPLATE_STRICT
|
|
585
596
|
: PROMPT_TEMPLATE_GUIDED;
|
|
586
|
-
const
|
|
597
|
+
const renderedPrompt = promptTemplate
|
|
587
598
|
.replace(/{error_message}/g, errorMessage)
|
|
588
599
|
.replace(/{stack_trace}/g, stackTrace)
|
|
589
600
|
.replace(/{analysis_mode}/g, analysisMode)
|
|
590
|
-
.replace(/{stack_trace_section}/g, stackTraceSection)
|
|
591
|
-
|
|
592
|
-
+ memoryGuideSection;
|
|
601
|
+
.replace(/{stack_trace_section}/g, stackTraceSection);
|
|
602
|
+
const guide = header + memoryGuideSection + renderedPrompt + graphGuideSection;
|
|
593
603
|
const plan = {
|
|
594
604
|
mode: 'delegated',
|
|
595
605
|
steps: [
|
|
606
|
+
...memoryRecallStep,
|
|
596
607
|
{
|
|
597
608
|
id: 'context',
|
|
598
609
|
tool: 'init_project_context',
|