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,207 @@
|
|
|
1
|
+
import { parseArgs, getString } from "../utils/parseArgs.js";
|
|
2
|
+
/**
|
|
3
|
+
* start_doc 智能编排工具
|
|
4
|
+
*
|
|
5
|
+
* 场景:文档生成
|
|
6
|
+
* 编排:[检查上下文] → gendoc → genreadme → genapi
|
|
7
|
+
*/
|
|
8
|
+
const PROMPT_TEMPLATE = `# 📖 文档生成编排指南
|
|
9
|
+
|
|
10
|
+
## 🎯 目标
|
|
11
|
+
|
|
12
|
+
为项目/代码生成完整的文档
|
|
13
|
+
|
|
14
|
+
**输入内容**:
|
|
15
|
+
\`\`\`
|
|
16
|
+
{code}
|
|
17
|
+
\`\`\`
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## 📋 步骤 0: 项目上下文(自动处理)
|
|
22
|
+
|
|
23
|
+
**操作**:
|
|
24
|
+
1. 检查 \`docs/project-context.md\` 是否存在
|
|
25
|
+
2. **如果不存在**:
|
|
26
|
+
- 调用 \`init_project_context\` 工具
|
|
27
|
+
- 等待生成完成
|
|
28
|
+
3. **读取** \`docs/project-context.md\` 内容
|
|
29
|
+
4. 了解项目的文档风格、技术栈
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## 📝 步骤 1: 生成代码注释
|
|
34
|
+
|
|
35
|
+
**调用工具**: \`gendoc\`
|
|
36
|
+
|
|
37
|
+
**参数**:
|
|
38
|
+
\`\`\`json
|
|
39
|
+
{
|
|
40
|
+
"code": "[代码内容]",
|
|
41
|
+
"style": "{style}",
|
|
42
|
+
"lang": "{lang}"
|
|
43
|
+
}
|
|
44
|
+
\`\`\`
|
|
45
|
+
|
|
46
|
+
**生成内容**:
|
|
47
|
+
- 函数/方法注释
|
|
48
|
+
- 参数说明
|
|
49
|
+
- 返回值说明
|
|
50
|
+
- 使用示例
|
|
51
|
+
|
|
52
|
+
**产出**: 带注释的代码
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## 📄 步骤 2: 生成 README
|
|
57
|
+
|
|
58
|
+
**调用工具**: \`genreadme\`
|
|
59
|
+
|
|
60
|
+
**参数**:
|
|
61
|
+
\`\`\`json
|
|
62
|
+
{
|
|
63
|
+
"project_info": "[项目信息或代码]",
|
|
64
|
+
"style": "standard"
|
|
65
|
+
}
|
|
66
|
+
\`\`\`
|
|
67
|
+
|
|
68
|
+
**生成内容**:
|
|
69
|
+
- 项目简介
|
|
70
|
+
- 功能特性
|
|
71
|
+
- 安装使用
|
|
72
|
+
- API 说明
|
|
73
|
+
- 贡献指南
|
|
74
|
+
|
|
75
|
+
**产出**: README.md
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## 🔌 步骤 3: 生成 API 文档(如适用)
|
|
80
|
+
|
|
81
|
+
**调用工具**: \`genapi\`
|
|
82
|
+
|
|
83
|
+
**参数**:
|
|
84
|
+
\`\`\`json
|
|
85
|
+
{
|
|
86
|
+
"code": "[API 相关代码]",
|
|
87
|
+
"format": "markdown"
|
|
88
|
+
}
|
|
89
|
+
\`\`\`
|
|
90
|
+
|
|
91
|
+
**生成内容**:
|
|
92
|
+
- API 端点列表
|
|
93
|
+
- 请求/响应格式
|
|
94
|
+
- 参数说明
|
|
95
|
+
|
|
96
|
+
**产出**: API 文档
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## ✅ 完成检查
|
|
101
|
+
|
|
102
|
+
- [ ] 项目上下文已读取
|
|
103
|
+
- [ ] 代码注释已生成
|
|
104
|
+
- [ ] README 已生成
|
|
105
|
+
- [ ] API 文档已生成(如适用)
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## 📊 输出汇总
|
|
110
|
+
|
|
111
|
+
完成后,向用户提供:
|
|
112
|
+
|
|
113
|
+
### 1. 代码注释
|
|
114
|
+
|
|
115
|
+
\`\`\`typescript
|
|
116
|
+
/**
|
|
117
|
+
* [函数描述]
|
|
118
|
+
* @param {Type} param - [参数说明]
|
|
119
|
+
* @returns {Type} [返回值说明]
|
|
120
|
+
* @example
|
|
121
|
+
* [使用示例]
|
|
122
|
+
*/
|
|
123
|
+
\`\`\`
|
|
124
|
+
|
|
125
|
+
### 2. README.md
|
|
126
|
+
|
|
127
|
+
\`\`\`markdown
|
|
128
|
+
# 项目名称
|
|
129
|
+
|
|
130
|
+
## 简介
|
|
131
|
+
...
|
|
132
|
+
|
|
133
|
+
## 功能特性
|
|
134
|
+
...
|
|
135
|
+
|
|
136
|
+
## 快速开始
|
|
137
|
+
...
|
|
138
|
+
|
|
139
|
+
## API 文档
|
|
140
|
+
...
|
|
141
|
+
|
|
142
|
+
## 贡献指南
|
|
143
|
+
...
|
|
144
|
+
|
|
145
|
+
## 许可证
|
|
146
|
+
...
|
|
147
|
+
\`\`\`
|
|
148
|
+
|
|
149
|
+
### 3. API 文档(如适用)
|
|
150
|
+
|
|
151
|
+
\`\`\`markdown
|
|
152
|
+
## API 参考
|
|
153
|
+
...
|
|
154
|
+
\`\`\`
|
|
155
|
+
|
|
156
|
+
### 4. 文档清单
|
|
157
|
+
|
|
158
|
+
| 文档 | 状态 | 位置 |
|
|
159
|
+
|------|------|------|
|
|
160
|
+
| 代码注释 | ✅ | 源代码中 |
|
|
161
|
+
| README | ✅ | README.md |
|
|
162
|
+
| API 文档 | ✅/- | docs/api.md |
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
*编排工具: MCP Probe Kit - start_doc*
|
|
167
|
+
`;
|
|
168
|
+
export async function startDoc(args) {
|
|
169
|
+
try {
|
|
170
|
+
// 智能参数解析,支持自然语言输入
|
|
171
|
+
const parsedArgs = parseArgs(args, {
|
|
172
|
+
defaultValues: {
|
|
173
|
+
code: "",
|
|
174
|
+
project_info: "",
|
|
175
|
+
style: "jsdoc",
|
|
176
|
+
lang: "zh",
|
|
177
|
+
},
|
|
178
|
+
primaryField: "code", // 纯文本输入默认映射到 code 字段
|
|
179
|
+
fieldAliases: {
|
|
180
|
+
code: ["source", "src", "代码", "content"],
|
|
181
|
+
project_info: ["info", "project", "项目信息"],
|
|
182
|
+
style: ["format", "type", "风格", "注释风格"],
|
|
183
|
+
lang: ["language", "语言"],
|
|
184
|
+
},
|
|
185
|
+
});
|
|
186
|
+
const code = getString(parsedArgs.code) || getString(parsedArgs.project_info);
|
|
187
|
+
const style = getString(parsedArgs.style) || "jsdoc";
|
|
188
|
+
const lang = getString(parsedArgs.lang) || "zh";
|
|
189
|
+
if (!code) {
|
|
190
|
+
throw new Error("缺少必填参数: code 或 project_info");
|
|
191
|
+
}
|
|
192
|
+
const guide = PROMPT_TEMPLATE
|
|
193
|
+
.replace(/{code}/g, code)
|
|
194
|
+
.replace(/{style}/g, style)
|
|
195
|
+
.replace(/{lang}/g, lang);
|
|
196
|
+
return {
|
|
197
|
+
content: [{ type: "text", text: guide }],
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
catch (error) {
|
|
201
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
202
|
+
return {
|
|
203
|
+
content: [{ type: "text", text: `❌ 编排执行失败: ${errorMsg}` }],
|
|
204
|
+
isError: true,
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
}
|
|
@@ -54,114 +54,114 @@ function extractFeatureInfo(input) {
|
|
|
54
54
|
description: input,
|
|
55
55
|
};
|
|
56
56
|
}
|
|
57
|
-
const PROMPT_TEMPLATE = `# 🚀 新功能开发编排(委托式)
|
|
58
|
-
|
|
59
|
-
本工具仅生成 **执行计划(steps)**。AI 需要按顺序调用对应工具并落盘文档。
|
|
60
|
-
|
|
61
|
-
## 🎯 目标
|
|
62
|
-
开发新功能:**{feature_name}**
|
|
63
|
-
功能描述:{description}
|
|
64
|
-
|
|
65
|
-
---
|
|
66
|
-
|
|
67
|
-
## ✅ 执行计划(按顺序)
|
|
68
|
-
|
|
69
|
-
### 0) 项目上下文(如缺失)
|
|
70
|
-
**检查**:
|
|
71
|
-
- \`{docs_dir}/project-context.md\`
|
|
72
|
-
- \`{docs_dir}/graph-insights/latest.md\`
|
|
73
|
-
- \`{docs_dir}/graph-insights/latest.json\`
|
|
74
|
-
**缺失则调用**: \`init_project_context\`
|
|
75
|
-
\`\`\`json
|
|
76
|
-
{ "docs_dir": "{docs_dir}", "project_root": "{project_root}" }
|
|
77
|
-
\`\`\`
|
|
78
|
-
|
|
79
|
-
### 1) 生成功能规格
|
|
80
|
-
**调用**: \`add_feature\`
|
|
81
|
-
\`\`\`json
|
|
82
|
-
{
|
|
83
|
-
"feature_name": "{feature_name}",
|
|
84
|
-
"description": "{description}",
|
|
85
|
-
"docs_dir": "{docs_dir}",
|
|
86
|
-
"template_profile": "{template_profile}"
|
|
87
|
-
}
|
|
88
|
-
\`\`\`
|
|
89
|
-
**预期输出**:
|
|
90
|
-
- \`{docs_dir}/specs/{feature_name}/requirements.md\`
|
|
91
|
-
- \`{docs_dir}/specs/{feature_name}/design.md\`
|
|
92
|
-
- \`{docs_dir}/specs/{feature_name}/tasks.md\`
|
|
93
|
-
|
|
94
|
-
### 2) 工作量估算
|
|
95
|
-
**调用**: \`estimate\`
|
|
96
|
-
\`\`\`json
|
|
97
|
-
{
|
|
98
|
-
"task_description": "实现 {feature_name} 功能:{description}",
|
|
99
|
-
"code_context": "参考生成的 tasks.md 中的任务列表"
|
|
100
|
-
}
|
|
101
|
-
\`\`\`
|
|
102
|
-
|
|
103
|
-
---
|
|
104
|
-
|
|
105
|
-
## ✅ 输出汇总(执行完成后)
|
|
106
|
-
1. 规格文档位置: \`{docs_dir}/specs/{feature_name}/\`
|
|
107
|
-
2. 图谱入口: \`{docs_dir}/graph-insights/latest.md\`
|
|
108
|
-
3. 估算结果: 故事点 + 时间区间
|
|
109
|
-
4. 主要风险(如有)
|
|
110
|
-
5. 下一步: 按 tasks.md 开始开发
|
|
111
|
-
|
|
112
|
-
---
|
|
113
|
-
|
|
57
|
+
const PROMPT_TEMPLATE = `# 🚀 新功能开发编排(委托式)
|
|
58
|
+
|
|
59
|
+
本工具仅生成 **执行计划(steps)**。AI 需要按顺序调用对应工具并落盘文档。
|
|
60
|
+
|
|
61
|
+
## 🎯 目标
|
|
62
|
+
开发新功能:**{feature_name}**
|
|
63
|
+
功能描述:{description}
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## ✅ 执行计划(按顺序)
|
|
68
|
+
|
|
69
|
+
### 0) 项目上下文(如缺失)
|
|
70
|
+
**检查**:
|
|
71
|
+
- \`{docs_dir}/project-context.md\`
|
|
72
|
+
- \`{docs_dir}/graph-insights/latest.md\`
|
|
73
|
+
- \`{docs_dir}/graph-insights/latest.json\`
|
|
74
|
+
**缺失则调用**: \`init_project_context\`
|
|
75
|
+
\`\`\`json
|
|
76
|
+
{ "docs_dir": "{docs_dir}", "project_root": "{project_root}" }
|
|
77
|
+
\`\`\`
|
|
78
|
+
|
|
79
|
+
### 1) 生成功能规格
|
|
80
|
+
**调用**: \`add_feature\`
|
|
81
|
+
\`\`\`json
|
|
82
|
+
{
|
|
83
|
+
"feature_name": "{feature_name}",
|
|
84
|
+
"description": "{description}",
|
|
85
|
+
"docs_dir": "{docs_dir}",
|
|
86
|
+
"template_profile": "{template_profile}"
|
|
87
|
+
}
|
|
88
|
+
\`\`\`
|
|
89
|
+
**预期输出**:
|
|
90
|
+
- \`{docs_dir}/specs/{feature_name}/requirements.md\`
|
|
91
|
+
- \`{docs_dir}/specs/{feature_name}/design.md\`
|
|
92
|
+
- \`{docs_dir}/specs/{feature_name}/tasks.md\`
|
|
93
|
+
|
|
94
|
+
### 2) 工作量估算
|
|
95
|
+
**调用**: \`estimate\`
|
|
96
|
+
\`\`\`json
|
|
97
|
+
{
|
|
98
|
+
"task_description": "实现 {feature_name} 功能:{description}",
|
|
99
|
+
"code_context": "参考生成的 tasks.md 中的任务列表"
|
|
100
|
+
}
|
|
101
|
+
\`\`\`
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## ✅ 输出汇总(执行完成后)
|
|
106
|
+
1. 规格文档位置: \`{docs_dir}/specs/{feature_name}/\`
|
|
107
|
+
2. 图谱入口: \`{docs_dir}/graph-insights/latest.md\`
|
|
108
|
+
3. 估算结果: 故事点 + 时间区间
|
|
109
|
+
4. 主要风险(如有)
|
|
110
|
+
5. 下一步: 按 tasks.md 开始开发
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
114
|
*编排工具: MCP Probe Kit - start_feature*`;
|
|
115
|
-
const LOOP_PROMPT_TEMPLATE = `# 🧭 需求澄清与补全(Requirements Loop)
|
|
116
|
-
|
|
117
|
-
本模式用于**生产级稳健补全**:在不改变用户意图的前提下补齐关键要素,并输出可审计的结构化结果。
|
|
118
|
-
|
|
119
|
-
## 🎯 目标
|
|
120
|
-
开发新功能:**{feature_name}**
|
|
121
|
-
功能描述:{description}
|
|
122
|
-
|
|
123
|
-
## ✅ 规则
|
|
124
|
-
1. **不覆盖用户原始需求**
|
|
125
|
-
2. **补全内容必须标注来源**(User / Derived / Assumption)
|
|
126
|
-
3. **假设必须进入待确认列表**
|
|
127
|
-
4. **每轮问题 ≤ {question_budget},假设 ≤ {assumption_cap}**
|
|
128
|
-
|
|
129
|
-
---
|
|
130
|
-
|
|
131
|
-
## 🔁 执行步骤(每轮)
|
|
132
|
-
|
|
133
|
-
### 1) 生成待确认问题
|
|
134
|
-
使用 \`ask_user\` 提问,问题来源于“功能需求补全清单”(角色/触发/约束/异常/依赖等)。
|
|
135
|
-
|
|
136
|
-
**调用示例**:
|
|
137
|
-
\`\`\`json
|
|
138
|
-
{
|
|
139
|
-
"questions": [
|
|
140
|
-
{ "question": "目标用户或角色是谁?", "context": "角色定义", "required": true },
|
|
141
|
-
{ "question": "触发场景是什么?", "context": "业务场景", "required": true }
|
|
142
|
-
]
|
|
143
|
-
}
|
|
144
|
-
\`\`\`
|
|
145
|
-
|
|
146
|
-
### 2) 更新结构化输出
|
|
147
|
-
将回答补入 \`requirements\`,并标注来源:
|
|
148
|
-
- User:用户明确回答
|
|
149
|
-
- Derived:合理推导
|
|
150
|
-
- Assumption:无法确认但补全(需确认)
|
|
151
|
-
|
|
152
|
-
### 3) 自检与结束
|
|
153
|
-
若 \`openQuestions\` 为空且无高风险假设,则结束 loop,进入规格生成与估算。
|
|
154
|
-
|
|
155
|
-
---
|
|
156
|
-
|
|
157
|
-
## ✅ 结束后继续
|
|
158
|
-
当满足结束条件时,执行:
|
|
159
|
-
1. 调用 \`add_feature\` 生成规格文档
|
|
160
|
-
2. 调用 \`estimate\` 进行工作量估算
|
|
161
|
-
|
|
162
|
-
---
|
|
163
|
-
|
|
164
|
-
*编排工具: MCP Probe Kit - start_feature (requirements loop)*
|
|
115
|
+
const LOOP_PROMPT_TEMPLATE = `# 🧭 需求澄清与补全(Requirements Loop)
|
|
116
|
+
|
|
117
|
+
本模式用于**生产级稳健补全**:在不改变用户意图的前提下补齐关键要素,并输出可审计的结构化结果。
|
|
118
|
+
|
|
119
|
+
## 🎯 目标
|
|
120
|
+
开发新功能:**{feature_name}**
|
|
121
|
+
功能描述:{description}
|
|
122
|
+
|
|
123
|
+
## ✅ 规则
|
|
124
|
+
1. **不覆盖用户原始需求**
|
|
125
|
+
2. **补全内容必须标注来源**(User / Derived / Assumption)
|
|
126
|
+
3. **假设必须进入待确认列表**
|
|
127
|
+
4. **每轮问题 ≤ {question_budget},假设 ≤ {assumption_cap}**
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## 🔁 执行步骤(每轮)
|
|
132
|
+
|
|
133
|
+
### 1) 生成待确认问题
|
|
134
|
+
使用 \`ask_user\` 提问,问题来源于“功能需求补全清单”(角色/触发/约束/异常/依赖等)。
|
|
135
|
+
|
|
136
|
+
**调用示例**:
|
|
137
|
+
\`\`\`json
|
|
138
|
+
{
|
|
139
|
+
"questions": [
|
|
140
|
+
{ "question": "目标用户或角色是谁?", "context": "角色定义", "required": true },
|
|
141
|
+
{ "question": "触发场景是什么?", "context": "业务场景", "required": true }
|
|
142
|
+
]
|
|
143
|
+
}
|
|
144
|
+
\`\`\`
|
|
145
|
+
|
|
146
|
+
### 2) 更新结构化输出
|
|
147
|
+
将回答补入 \`requirements\`,并标注来源:
|
|
148
|
+
- User:用户明确回答
|
|
149
|
+
- Derived:合理推导
|
|
150
|
+
- Assumption:无法确认但补全(需确认)
|
|
151
|
+
|
|
152
|
+
### 3) 自检与结束
|
|
153
|
+
若 \`openQuestions\` 为空且无高风险假设,则结束 loop,进入规格生成与估算。
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## ✅ 结束后继续
|
|
158
|
+
当满足结束条件时,执行:
|
|
159
|
+
1. 调用 \`add_feature\` 生成规格文档
|
|
160
|
+
2. 调用 \`estimate\` 进行工作量估算
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
*编排工具: MCP Probe Kit - start_feature (requirements loop)*
|
|
165
165
|
`;
|
|
166
166
|
function buildOpenQuestions(questionBudget) {
|
|
167
167
|
const base = [
|
|
@@ -278,18 +278,18 @@ export async function startFeature(args, context) {
|
|
|
278
278
|
const graphStatusNote = graphContext.available
|
|
279
279
|
? `任务图谱收敛: 可用(${graphContext.mode})`
|
|
280
280
|
: "任务图谱收敛: 已降级(自动回退)";
|
|
281
|
-
const graphGuideSection = `
|
|
282
|
-
|
|
283
|
-
## 🧠 代码图谱上下文
|
|
284
|
-
- 基线入口: ${graphDocs.latestMarkdownPath}
|
|
285
|
-
- 基线结构化副本: ${graphDocs.latestJsonPath}
|
|
286
|
-
- 基线状态: ${graphDocsMissing ? "缺失(需要补初始化)" : "可用"}
|
|
287
|
-
- 任务级收敛: ${graphContext.available ? "可用" : "降级"}
|
|
288
|
-
- 任务级摘要: ${graphContext.summary}
|
|
281
|
+
const graphGuideSection = `
|
|
282
|
+
|
|
283
|
+
## 🧠 代码图谱上下文
|
|
284
|
+
- 基线入口: ${graphDocs.latestMarkdownPath}
|
|
285
|
+
- 基线结构化副本: ${graphDocs.latestJsonPath}
|
|
286
|
+
- 基线状态: ${graphDocsMissing ? "缺失(需要补初始化)" : "可用"}
|
|
287
|
+
- 任务级收敛: ${graphContext.available ? "可用" : "降级"}
|
|
288
|
+
- 任务级摘要: ${graphContext.summary}
|
|
289
289
|
${graphContext.highlights.length > 0
|
|
290
290
|
? `- 任务级线索:\n${graphContext.highlights.slice(0, 3).map((item) => ` - ${item}`).join("\n")}`
|
|
291
|
-
: "- 任务级线索: 无"}
|
|
292
|
-
- 使用方式: 先参考基线图谱,再使用本次任务图谱线索约束模块边界和改动范围
|
|
291
|
+
: "- 任务级线索: 无"}
|
|
292
|
+
- 使用方式: 先参考基线图谱,再使用本次任务图谱线索约束模块边界和改动范围
|
|
293
293
|
`;
|
|
294
294
|
const estimateCodeContext = [
|
|
295
295
|
`参考生成的 ${docsDir}/specs/${featureName}/tasks.md`,
|
|
@@ -89,7 +89,7 @@ export async function startProduct(args, context) {
|
|
|
89
89
|
],
|
|
90
90
|
notes: [buildSkillHeaderNote(skillBridge)],
|
|
91
91
|
});
|
|
92
|
-
const guidanceText = header + skillBridgeSection + `# 🚀 产品设计工作流执行指导
|
|
92
|
+
const guidanceText = header + skillBridgeSection + `# 🚀 产品设计工作流执行指导
|
|
93
93
|
|
|
94
94
|
基于${requirementsSource},请按照以下步骤完成从需求到 HTML 原型的完整产品设计流程。
|
|
95
95
|
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
import { parseArgs, getString } from "../utils/parseArgs.js";
|
|
2
|
+
/**
|
|
3
|
+
* start_refactor 智能编排工具
|
|
4
|
+
*
|
|
5
|
+
* 场景:代码重构
|
|
6
|
+
* 编排:[检查上下文] → code_review → refactor → gentest
|
|
7
|
+
*/
|
|
8
|
+
const PROMPT_TEMPLATE = `# ♻️ 代码重构编排指南
|
|
9
|
+
|
|
10
|
+
## 🎯 目标
|
|
11
|
+
|
|
12
|
+
重构以下代码:
|
|
13
|
+
|
|
14
|
+
\`\`\`
|
|
15
|
+
{code}
|
|
16
|
+
\`\`\`
|
|
17
|
+
|
|
18
|
+
**重构目标**: {goal}
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## 📋 步骤 0: 项目上下文(自动处理)
|
|
23
|
+
|
|
24
|
+
**操作**:
|
|
25
|
+
1. 检查 \`docs/project-context.md\` 是否存在
|
|
26
|
+
2. **如果不存在**:
|
|
27
|
+
- 调用 \`init_project_context\` 工具
|
|
28
|
+
- 等待生成完成
|
|
29
|
+
3. **读取** \`docs/project-context.md\` 内容
|
|
30
|
+
4. 了解项目的架构模式、编码规范
|
|
31
|
+
5. 重构要符合项目规范
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## 🔍 步骤 1: 代码审查(发现问题)
|
|
36
|
+
|
|
37
|
+
**调用工具**: \`code_review\`
|
|
38
|
+
|
|
39
|
+
**参数**:
|
|
40
|
+
\`\`\`json
|
|
41
|
+
{
|
|
42
|
+
"code": "[待重构代码]",
|
|
43
|
+
"focus": "quality"
|
|
44
|
+
}
|
|
45
|
+
\`\`\`
|
|
46
|
+
|
|
47
|
+
**目的**:
|
|
48
|
+
- 识别代码坏味道
|
|
49
|
+
- 发现可改进点
|
|
50
|
+
- 评估当前代码质量
|
|
51
|
+
|
|
52
|
+
**产出**: 问题清单
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## ♻️ 步骤 2: 生成重构方案
|
|
57
|
+
|
|
58
|
+
**调用工具**: \`refactor\`
|
|
59
|
+
|
|
60
|
+
**参数**:
|
|
61
|
+
\`\`\`json
|
|
62
|
+
{
|
|
63
|
+
"code": "[待重构代码]",
|
|
64
|
+
"goal": "{goal}"
|
|
65
|
+
}
|
|
66
|
+
\`\`\`
|
|
67
|
+
|
|
68
|
+
**重构方向**:
|
|
69
|
+
- improve_readability: 提高可读性
|
|
70
|
+
- reduce_complexity: 降低复杂度
|
|
71
|
+
- extract_function: 提取函数
|
|
72
|
+
- remove_duplication: 消除重复
|
|
73
|
+
- improve_naming: 改进命名
|
|
74
|
+
|
|
75
|
+
**产出**: 重构后的代码 + 重构说明
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## 🧪 步骤 3: 生成保护测试
|
|
80
|
+
|
|
81
|
+
**调用工具**: \`gentest\`
|
|
82
|
+
|
|
83
|
+
**参数**:
|
|
84
|
+
\`\`\`json
|
|
85
|
+
{
|
|
86
|
+
"code": "[重构后的代码]",
|
|
87
|
+
"framework": "[根据项目上下文选择]"
|
|
88
|
+
}
|
|
89
|
+
\`\`\`
|
|
90
|
+
|
|
91
|
+
**目的**:
|
|
92
|
+
- 确保重构不改变行为
|
|
93
|
+
- 为重构后的代码提供测试保护
|
|
94
|
+
- 覆盖主要功能和边界情况
|
|
95
|
+
|
|
96
|
+
**产出**: 测试代码
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## ✅ 完成检查
|
|
101
|
+
|
|
102
|
+
- [ ] 项目上下文已读取
|
|
103
|
+
- [ ] 代码问题已识别
|
|
104
|
+
- [ ] 重构方案已生成
|
|
105
|
+
- [ ] 代码已重构
|
|
106
|
+
- [ ] 测试已添加
|
|
107
|
+
- [ ] 测试已通过
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## 📝 输出汇总
|
|
112
|
+
|
|
113
|
+
完成后,向用户提供:
|
|
114
|
+
|
|
115
|
+
### 1. 重构前后对比
|
|
116
|
+
|
|
117
|
+
**重构前**:
|
|
118
|
+
\`\`\`
|
|
119
|
+
[原代码]
|
|
120
|
+
\`\`\`
|
|
121
|
+
|
|
122
|
+
**重构后**:
|
|
123
|
+
\`\`\`
|
|
124
|
+
[新代码]
|
|
125
|
+
\`\`\`
|
|
126
|
+
|
|
127
|
+
### 2. 改进说明
|
|
128
|
+
|
|
129
|
+
| 改进项 | 说明 |
|
|
130
|
+
|--------|------|
|
|
131
|
+
| [改进1] | [说明] |
|
|
132
|
+
| [改进2] | [说明] |
|
|
133
|
+
|
|
134
|
+
### 3. 测试覆盖
|
|
135
|
+
|
|
136
|
+
- 测试用例数: X
|
|
137
|
+
- 覆盖场景: [列出]
|
|
138
|
+
|
|
139
|
+
### 4. 注意事项
|
|
140
|
+
|
|
141
|
+
- [重构可能影响的地方]
|
|
142
|
+
- [需要同步修改的地方]
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
*编排工具: MCP Probe Kit - start_refactor*
|
|
147
|
+
`;
|
|
148
|
+
export async function startRefactor(args) {
|
|
149
|
+
try {
|
|
150
|
+
// 智能参数解析,支持自然语言输入
|
|
151
|
+
const parsedArgs = parseArgs(args, {
|
|
152
|
+
defaultValues: {
|
|
153
|
+
code: "",
|
|
154
|
+
goal: "improve_readability",
|
|
155
|
+
},
|
|
156
|
+
primaryField: "code", // 纯文本输入默认映射到 code 字段
|
|
157
|
+
fieldAliases: {
|
|
158
|
+
code: ["source", "src", "代码", "content"],
|
|
159
|
+
goal: ["target", "objective", "目标", "重构目标"],
|
|
160
|
+
},
|
|
161
|
+
});
|
|
162
|
+
const code = getString(parsedArgs.code);
|
|
163
|
+
const goal = getString(parsedArgs.goal) || "improve_readability";
|
|
164
|
+
if (!code) {
|
|
165
|
+
throw new Error("缺少必填参数: code(需要重构的代码)");
|
|
166
|
+
}
|
|
167
|
+
const goalDesc = {
|
|
168
|
+
improve_readability: "提高可读性",
|
|
169
|
+
reduce_complexity: "降低复杂度",
|
|
170
|
+
extract_function: "提取函数",
|
|
171
|
+
remove_duplication: "消除重复",
|
|
172
|
+
improve_naming: "改进命名",
|
|
173
|
+
};
|
|
174
|
+
const guide = PROMPT_TEMPLATE
|
|
175
|
+
.replace(/{code}/g, code)
|
|
176
|
+
.replace(/{goal}/g, goalDesc[goal] || goal);
|
|
177
|
+
return {
|
|
178
|
+
content: [{ type: "text", text: guide }],
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
catch (error) {
|
|
182
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
183
|
+
return {
|
|
184
|
+
content: [{ type: "text", text: `❌ 编排执行失败: ${errorMsg}` }],
|
|
185
|
+
isError: true,
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
}
|