mcp-probe-kit 1.13.0 → 1.15.1

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 (46) hide show
  1. package/README.md +54 -3
  2. package/build/index.js +14 -1
  3. package/build/schemas/index.d.ts +108 -0
  4. package/build/schemas/index.js +2 -0
  5. package/build/schemas/ui-ux-schemas.d.ts +248 -0
  6. package/build/schemas/ui-ux-schemas.js +147 -0
  7. package/build/tools/__tests__/start_ui.integration.test.d.ts +6 -0
  8. package/build/tools/__tests__/start_ui.integration.test.js +179 -0
  9. package/build/tools/__tests__/start_ui.property.test.d.ts +6 -0
  10. package/build/tools/__tests__/start_ui.property.test.js +263 -0
  11. package/build/tools/__tests__/start_ui.unit.test.d.ts +6 -0
  12. package/build/tools/__tests__/start_ui.unit.test.js +109 -0
  13. package/build/tools/index.d.ts +4 -0
  14. package/build/tools/index.js +5 -0
  15. package/build/tools/init_component_catalog.d.ts +22 -0
  16. package/build/tools/init_component_catalog.js +809 -0
  17. package/build/tools/render_ui.d.ts +22 -0
  18. package/build/tools/render_ui.js +384 -0
  19. package/build/tools/start_ui.d.ts +25 -0
  20. package/build/tools/start_ui.js +299 -0
  21. package/build/tools/ui-ux-tools.d.ts +116 -0
  22. package/build/tools/ui-ux-tools.js +756 -0
  23. package/build/tools/ui-ux-tools.test.d.ts +6 -0
  24. package/build/tools/ui-ux-tools.test.js +132 -0
  25. package/build/utils/ascii-box-formatter.d.ts +29 -0
  26. package/build/utils/ascii-box-formatter.js +195 -0
  27. package/build/utils/bm25.d.ts +60 -0
  28. package/build/utils/bm25.js +139 -0
  29. package/build/utils/cache-manager.d.ts +65 -0
  30. package/build/utils/cache-manager.js +156 -0
  31. package/build/utils/design-reasoning-engine.d.ts +158 -0
  32. package/build/utils/design-reasoning-engine.js +363 -0
  33. package/build/utils/design-system-json-formatter.d.ts +41 -0
  34. package/build/utils/design-system-json-formatter.js +165 -0
  35. package/build/utils/ui-data-loader.d.ts +56 -0
  36. package/build/utils/ui-data-loader.js +164 -0
  37. package/build/utils/ui-search-engine.d.ts +57 -0
  38. package/build/utils/ui-search-engine.js +123 -0
  39. package/build/utils/ui-sync.d.ts +13 -0
  40. package/build/utils/ui-sync.js +241 -0
  41. package/docs/BEST_PRACTICES.md +257 -1
  42. package/docs/HOW_TO_TRIGGER.md +71 -1
  43. package/docs/MCP-Probe-Kit-/344/275/277/347/224/250/346/211/213/345/206/214.html +89 -29
  44. package/docs/MCP-Probe-Kit-/344/275/277/347/224/250/346/211/213/345/206/214.md +582 -1
  45. package/package.json +19 -6
  46. package/docs/HOW_TO_TRIGGER.html +0 -255
@@ -0,0 +1,241 @@
1
+ /**
2
+ * UI/UX 数据同步工具
3
+ *
4
+ * 从 npm 包 uipro-cli 同步数据到缓存目录
5
+ */
6
+ import * as fs from 'fs';
7
+ import * as path from 'path';
8
+ import * as os from 'os';
9
+ import * as https from 'https';
10
+ import * as tar from 'tar';
11
+ import { createWriteStream } from 'fs';
12
+ import { parse as parseCSV } from 'csv-parse/sync';
13
+ /**
14
+ * 获取 npm 包的最新版本号
15
+ */
16
+ async function getLatestVersion(packageName) {
17
+ return new Promise((resolve, reject) => {
18
+ const url = `https://registry.npmjs.org/${packageName}/latest`;
19
+ https.get(url, (res) => {
20
+ let data = '';
21
+ res.on('data', (chunk) => {
22
+ data += chunk;
23
+ });
24
+ res.on('end', () => {
25
+ try {
26
+ const pkg = JSON.parse(data);
27
+ resolve(pkg.version);
28
+ }
29
+ catch (error) {
30
+ reject(new Error(`Failed to parse package metadata: ${error}`));
31
+ }
32
+ });
33
+ }).on('error', (error) => {
34
+ reject(new Error(`Failed to fetch package metadata: ${error}`));
35
+ });
36
+ });
37
+ }
38
+ /**
39
+ * 下载文件
40
+ */
41
+ async function downloadFile(url, outputPath) {
42
+ return new Promise((resolve, reject) => {
43
+ https.get(url, (res) => {
44
+ if (res.statusCode === 302 || res.statusCode === 301) {
45
+ if (res.headers.location) {
46
+ downloadFile(res.headers.location, outputPath).then(resolve).catch(reject);
47
+ return;
48
+ }
49
+ }
50
+ if (res.statusCode !== 200) {
51
+ reject(new Error(`Failed to download: HTTP ${res.statusCode}`));
52
+ return;
53
+ }
54
+ const fileStream = createWriteStream(outputPath);
55
+ res.pipe(fileStream);
56
+ fileStream.on('finish', () => {
57
+ fileStream.close();
58
+ resolve();
59
+ });
60
+ fileStream.on('error', (error) => {
61
+ fs.unlinkSync(outputPath);
62
+ reject(error);
63
+ });
64
+ }).on('error', (error) => {
65
+ reject(error);
66
+ });
67
+ });
68
+ }
69
+ /**
70
+ * 解压 tarball 并提取指定目录
71
+ */
72
+ async function extractTarball(tarballPath, extractPath, targetDir) {
73
+ const tempDir = path.join(extractPath, '.temp');
74
+ if (!fs.existsSync(tempDir)) {
75
+ fs.mkdirSync(tempDir, { recursive: true });
76
+ }
77
+ await tar.extract({
78
+ file: tarballPath,
79
+ cwd: tempDir,
80
+ });
81
+ const sourceDir = path.join(tempDir, targetDir);
82
+ if (!fs.existsSync(sourceDir)) {
83
+ throw new Error(`Target directory not found in tarball: ${targetDir}`);
84
+ }
85
+ return sourceDir;
86
+ }
87
+ /**
88
+ * 转换 CSV 到 JSON
89
+ */
90
+ function convertCSVToJSON(csvContent, filename) {
91
+ try {
92
+ const records = parseCSV(csvContent, {
93
+ columns: true,
94
+ skip_empty_lines: true,
95
+ trim: true,
96
+ relax_quotes: true,
97
+ relax_column_count: true,
98
+ escape: '\\',
99
+ quote: '"',
100
+ skip_records_with_error: true,
101
+ });
102
+ return records;
103
+ }
104
+ catch (error) {
105
+ console.warn(`Warning: Failed to parse ${filename}, skipping: ${error}`);
106
+ return [];
107
+ }
108
+ }
109
+ /**
110
+ * 处理数据文件
111
+ */
112
+ async function processDataFiles(sourceDir, outputDir, verbose) {
113
+ if (!fs.existsSync(outputDir)) {
114
+ fs.mkdirSync(outputDir, { recursive: true });
115
+ }
116
+ const files = fs.readdirSync(sourceDir);
117
+ for (const file of files) {
118
+ const sourcePath = path.join(sourceDir, file);
119
+ const stat = fs.statSync(sourcePath);
120
+ if (stat.isDirectory()) {
121
+ const subOutputDir = path.join(outputDir, file);
122
+ await processDataFiles(sourcePath, subOutputDir, verbose);
123
+ continue;
124
+ }
125
+ if (!file.endsWith('.csv')) {
126
+ continue;
127
+ }
128
+ if (verbose) {
129
+ console.log(`Processing: ${file}`);
130
+ }
131
+ const csvContent = fs.readFileSync(sourcePath, 'utf-8');
132
+ const jsonData = convertCSVToJSON(csvContent, file);
133
+ if (jsonData.length === 0) {
134
+ if (verbose) {
135
+ console.log(` ⚠️ Skipped ${file} (no valid records)`);
136
+ }
137
+ continue;
138
+ }
139
+ const outputFile = file.replace('.csv', '.json');
140
+ const outputPath = path.join(outputDir, outputFile);
141
+ fs.writeFileSync(outputPath, JSON.stringify(jsonData, null, 2), 'utf-8');
142
+ if (verbose) {
143
+ console.log(` → ${outputFile} (${jsonData.length} records)`);
144
+ }
145
+ }
146
+ }
147
+ /**
148
+ * 写入元数据
149
+ */
150
+ function writeMetadata(outputDir, metadata) {
151
+ const metadataPath = path.join(outputDir, 'metadata.json');
152
+ fs.writeFileSync(metadataPath, JSON.stringify(metadata, null, 2), 'utf-8');
153
+ }
154
+ /**
155
+ * 清理临时文件
156
+ */
157
+ function cleanup(tempDir) {
158
+ if (fs.existsSync(tempDir)) {
159
+ fs.rmSync(tempDir, { recursive: true, force: true });
160
+ }
161
+ }
162
+ /**
163
+ * 同步 UI/UX 数据到指定目录(通用函数)
164
+ */
165
+ export async function syncUIDataTo(outputDir, verbose = false) {
166
+ const packageName = 'uipro-cli';
167
+ if (verbose) {
168
+ console.log('🚀 Starting UI/UX data sync...\n');
169
+ }
170
+ try {
171
+ // 1. 获取最新版本
172
+ if (verbose) {
173
+ console.log(`Fetching latest version of ${packageName}...`);
174
+ }
175
+ const latestVersion = await getLatestVersion(packageName);
176
+ if (verbose) {
177
+ console.log(`✓ Latest version: ${latestVersion}\n`);
178
+ }
179
+ // 2. 下载 tarball
180
+ const tarballUrl = `https://registry.npmjs.org/${packageName}/-/${packageName}-${latestVersion}.tgz`;
181
+ const tempDir = path.join(os.tmpdir(), '.mcp-ui-sync');
182
+ const tarballPath = path.join(tempDir, 'package.tgz');
183
+ if (!fs.existsSync(tempDir)) {
184
+ fs.mkdirSync(tempDir, { recursive: true });
185
+ }
186
+ if (verbose) {
187
+ console.log(`Downloading tarball...`);
188
+ }
189
+ await downloadFile(tarballUrl, tarballPath);
190
+ if (verbose) {
191
+ console.log('✓ Downloaded tarball\n');
192
+ }
193
+ // 3. 解压并提取数据
194
+ if (verbose) {
195
+ console.log('Extracting data files...');
196
+ }
197
+ const extractedDataDir = await extractTarball(tarballPath, tempDir, 'package/assets/data');
198
+ if (verbose) {
199
+ console.log('✓ Extracted data files\n');
200
+ }
201
+ // 4. 处理数据文件
202
+ if (verbose) {
203
+ console.log('Processing data files...');
204
+ }
205
+ await processDataFiles(extractedDataDir, outputDir, verbose);
206
+ if (verbose) {
207
+ console.log('✓ Processed all data files\n');
208
+ }
209
+ // 5. 写入元数据
210
+ const metadata = {
211
+ version: latestVersion,
212
+ syncedAt: new Date().toISOString(),
213
+ source: packageName,
214
+ format: 'json',
215
+ };
216
+ writeMetadata(outputDir, metadata);
217
+ if (verbose) {
218
+ console.log('✓ Written metadata\n');
219
+ }
220
+ // 6. 清理临时文件
221
+ cleanup(tempDir);
222
+ if (verbose) {
223
+ console.log('✓ Cleaned up temporary files\n');
224
+ console.log('✅ Sync completed successfully!');
225
+ console.log(` Version: ${latestVersion}`);
226
+ console.log(` Output: ${outputDir}`);
227
+ }
228
+ }
229
+ catch (error) {
230
+ const tempDir = path.join(os.tmpdir(), '.mcp-ui-sync');
231
+ cleanup(tempDir);
232
+ throw error;
233
+ }
234
+ }
235
+ /**
236
+ * 同步 UI/UX 数据到缓存
237
+ */
238
+ export async function syncUIDataToCache(force = false, verbose = false) {
239
+ const cacheDir = path.join(os.homedir(), '.mcp-probe-kit', 'ui-ux-data');
240
+ await syncUIDataTo(cacheDir, verbose);
241
+ }
@@ -2,11 +2,15 @@
2
2
 
3
3
  > 完整的工具调用指南和使用技巧
4
4
 
5
+ **版本**: v1.14.0 | **工具总数**: 46 个
6
+
5
7
  ---
6
8
 
7
9
  ## 📖 目录
8
10
 
9
11
  - [工具调用写法指南](#工具调用写法指南)
12
+ - [UI/UX 工具调用](#uiux-工具调用) 🆕
13
+ - [访谈工具调用](#访谈工具调用)
10
14
  - [基础工具调用](#基础工具调用)
11
15
  - [智能编排调用](#智能编排调用)
12
16
  - [使用技巧](#使用技巧)
@@ -17,7 +21,90 @@
17
21
 
18
22
  ## 🎯 工具调用写法指南
19
23
 
20
- ### 访谈工具调用 🆕
24
+ ### UI/UX 工具调用 🆕
25
+
26
+ #### ui_design_system - 设计系统生成
27
+
28
+ ```
29
+ # 方式 1:最简单(只指定技术栈)
30
+ ui_design_system --stack react
31
+
32
+ # 方式 2:指定主色调
33
+ ui_design_system --stack react --primary-color "#3b82f6"
34
+
35
+ # 方式 3:完整配置
36
+ ui_design_system \
37
+ --stack nextjs \
38
+ --color-scheme light \
39
+ --primary-color "#3b82f6" \
40
+ --typography modern \
41
+ --spacing normal \
42
+ --border-radius medium
43
+
44
+ # 方式 4:对话式
45
+ "帮我生成一个 React 设计系统,主色调用蓝色"
46
+ "为我的 Tailwind 项目生成配置"
47
+
48
+ # 自动完成:
49
+ # ✓ 生成完整的色彩系统(11 级色阶)
50
+ # ✓ 生成字体系统(Sans/Serif/Mono)
51
+ # ✓ 生成间距系统(基于 4px)
52
+ # ✓ 生成组件样式(圆角、阴影、动画)
53
+ # ✓ 输出可直接使用的代码
54
+ ```
55
+
56
+ #### ui_search - UI/UX 智能搜索
57
+
58
+ ```
59
+ # 方式 1:简单搜索
60
+ ui_search "button primary"
61
+
62
+ # 方式 2:指定类别
63
+ ui_search "button" --category react
64
+
65
+ # 方式 3:完整配置
66
+ ui_search \
67
+ --query "button primary hover" \
68
+ --category react \
69
+ --limit 5 \
70
+ --min-score 1.0
71
+
72
+ # 方式 4:对话式
73
+ "我需要一个 React 的主按钮组件"
74
+ "搜索一下蓝色主题的配色方案"
75
+ "表单验证有什么 UX 最佳实践?"
76
+
77
+ # 搜索技巧:
78
+ # ✓ 使用具体关键词:"primary button hover" 而不是 "button"
79
+ # ✓ 指定类别:colors, icons, react, vue, ux-guidelines 等
80
+ # ✓ 调整结果数量:--limit 3(快速预览)或 --limit 20(详细搜索)
81
+ # ✓ 支持中英文:可以搜索 "按钮" 或 "button"
82
+ ```
83
+
84
+ #### sync_ui_data - 数据同步
85
+
86
+ ```
87
+ # 方式 1:检查更新
88
+ sync_ui_data
89
+
90
+ # 方式 2:强制同步
91
+ sync_ui_data --force
92
+
93
+ # 方式 3:详细日志
94
+ sync_ui_data --force --verbose
95
+
96
+ # 方式 4:对话式
97
+ "检查一下 UI 数据有没有更新"
98
+ "强制更新 UI 数据"
99
+
100
+ # 数据位置:
101
+ # ✓ 内嵌数据:npm 包内部(离线可用)
102
+ # ✓ 缓存数据:~/.mcp-probe-kit/ui-ux-data/(自动更新)
103
+ ```
104
+
105
+ ---
106
+
107
+ ### 访谈工具调用
21
108
 
22
109
  #### interview - 需求访谈
23
110
 
@@ -918,10 +1005,179 @@ AI: 好的,我来对支付 API 进行全面体检。
918
1005
 
919
1006
  ---
920
1007
 
1008
+ ## 🎨 UI/UX 工具使用技巧 🆕
1009
+
1010
+ ### 设计系统生成技巧
1011
+
1012
+ **1. 新项目启动**
1013
+ ```
1014
+ # 步骤 1:生成基础设计系统
1015
+ ui_design_system --stack react
1016
+
1017
+ # 步骤 2:根据需求调整
1018
+ ui_design_system --stack react --primary-color "#3b82f6" --border-radius large
1019
+
1020
+ # 步骤 3:复制生成的代码到项目中
1021
+ ```
1022
+
1023
+ **2. 技术栈选择**
1024
+ ```
1025
+ # React 项目
1026
+ ui_design_system --stack react
1027
+
1028
+ # Next.js 项目
1029
+ ui_design_system --stack nextjs
1030
+
1031
+ # Tailwind 项目(生成 tailwind.config.js)
1032
+ ui_design_system --stack tailwind
1033
+
1034
+ # Vue 项目
1035
+ ui_design_system --stack vue
1036
+ ```
1037
+
1038
+ **3. 主题定制**
1039
+ ```
1040
+ # 浅色主题
1041
+ ui_design_system --stack react --color-scheme light
1042
+
1043
+ # 深色主题
1044
+ ui_design_system --stack react --color-scheme dark
1045
+
1046
+ # 自适应主题
1047
+ ui_design_system --stack react --color-scheme auto
1048
+ ```
1049
+
1050
+ ### UI 搜索技巧
1051
+
1052
+ **1. 组件搜索**
1053
+ ```
1054
+ # ❌ 不好:太模糊
1055
+ ui_search "button"
1056
+
1057
+ # ✅ 好:具体明确
1058
+ ui_search "button primary hover effect" --category react
1059
+
1060
+ # ✅ 更好:指定技术栈
1061
+ ui_search "button primary" --category react --limit 5
1062
+ ```
1063
+
1064
+ **2. 颜色搜索**
1065
+ ```
1066
+ # 搜索配色方案
1067
+ ui_search "blue professional" --category colors
1068
+
1069
+ # 搜索特定用途的颜色
1070
+ ui_search "saas tech primary color" --category colors
1071
+
1072
+ # 搜索完整色阶
1073
+ ui_search "blue gradient" --category colors
1074
+ ```
1075
+
1076
+ **3. 最佳实践搜索**
1077
+ ```
1078
+ # 搜索 UX 指南
1079
+ ui_search "form validation" --category ux-guidelines
1080
+
1081
+ # 搜索性能优化
1082
+ ui_search "react performance" --category react-performance
1083
+
1084
+ # 搜索设计模式
1085
+ ui_search "card layout" --category web-interface
1086
+ ```
1087
+
1088
+ **4. 调整搜索结果**
1089
+ ```
1090
+ # 快速预览(3 个结果)
1091
+ ui_search "button" --limit 3
1092
+
1093
+ # 详细搜索(20 个结果)
1094
+ ui_search "button" --limit 20
1095
+
1096
+ # 过滤低相关性结果
1097
+ ui_search "button" --min-score 2.0
1098
+ ```
1099
+
1100
+ ### 数据同步技巧
1101
+
1102
+ **1. 定期检查**
1103
+ ```
1104
+ # 每周检查一次(推荐)
1105
+ sync_ui_data
1106
+
1107
+ # 如果已是最新版本,不会重复下载
1108
+ ```
1109
+
1110
+ **2. 遇到问题时**
1111
+ ```
1112
+ # 搜索结果不准确?强制更新
1113
+ sync_ui_data --force --verbose
1114
+
1115
+ # 查看详细日志
1116
+ sync_ui_data --verbose
1117
+ ```
1118
+
1119
+ **3. 数据位置**
1120
+ ```
1121
+ # 内嵌数据(离线可用)
1122
+ 位置:npm 包内部
1123
+ 更新:重新安装 mcp-probe-kit
1124
+
1125
+ # 缓存数据(自动更新)
1126
+ 位置:~/.mcp-probe-kit/ui-ux-data/
1127
+ 更新:首次使用时自动检查
1128
+
1129
+ # 手动同步(立即更新)
1130
+ 命令:sync_ui_data --force
1131
+ ```
1132
+
1133
+ ### 组合使用技巧
1134
+
1135
+ **场景 1:新项目完整流程**
1136
+ ```
1137
+ # 步骤 1:生成设计系统
1138
+ ui_design_system --stack react --primary-color "#3b82f6"
1139
+
1140
+ # 步骤 2:搜索需要的组件
1141
+ ui_search "button card form" --category react
1142
+
1143
+ # 步骤 3:搜索配色方案
1144
+ ui_search "blue professional" --category colors
1145
+
1146
+ # 步骤 4:应用到项目
1147
+ ```
1148
+
1149
+ **场景 2:优化现有项目**
1150
+ ```
1151
+ # 步骤 1:搜索最佳实践
1152
+ ui_search "form validation ux" --category ux-guidelines
1153
+
1154
+ # 步骤 2:搜索优化方案
1155
+ ui_search "react performance" --category react-performance
1156
+
1157
+ # 步骤 3:搜索改进的组件
1158
+ ui_search "button loading state" --category react
1159
+ ```
1160
+
1161
+ **场景 3:设计系统迁移**
1162
+ ```
1163
+ # 步骤 1:生成新的设计系统
1164
+ ui_design_system --stack tailwind
1165
+
1166
+ # 步骤 2:搜索对应的组件
1167
+ ui_search "button" --category tailwind
1168
+
1169
+ # 步骤 3:逐步替换旧组件
1170
+ ```
1171
+
1172
+ ---
1173
+
921
1174
  ## 📚 相关文档
922
1175
 
923
1176
  - [README](../README.md) - 项目介绍和快速开始
924
1177
  - [工具列表](../README.md#功能特性) - 所有工具的详细说明
1178
+ - [UI/UX 快速开始](../QUICK-START-UI-UX.md) - UI/UX 工具快速入门 🆕
1179
+ - [UI/UX 完整文档](./UI-UX-PRO-MAX-GUIDE.md) - UI/UX 工具详细文档 🆕
1180
+ - [UI/UX 使用演示](./UI-UX-DEMO.md) - UI/UX 工具使用示例 🆕
925
1181
  - [常见问题](../README.md#常见问题) - FAQ
926
1182
 
927
1183
  ---
@@ -2,6 +2,8 @@
2
2
 
3
3
  > 实用的对话技巧,让 AI 准确理解你的意图并调用正确的工具
4
4
 
5
+ **版本**: v1.14.0 | **工具总数**: 46 个
6
+
5
7
  ---
6
8
 
7
9
  ## 📖 目录
@@ -26,7 +28,75 @@ AI 需要理解你的意图才能调用正确的工具。使用明确的关键
26
28
 
27
29
  ## 🔑 工具触发关键词
28
30
 
29
- ### 🆕 0️⃣ 需求访谈 → `interview` / `ask_user`
31
+ ### 🎨 0️⃣ UI/UX 设计 → `ui_design_system` / `ui_search` / `sync_ui_data` 🆕
32
+
33
+ **触发关键词**:设计系统、配色、颜色、按钮、组件、UI、UX、图标、字体
34
+
35
+ #### `ui_design_system` - 设计系统生成
36
+
37
+ **✅ 推荐说法**
38
+ ```
39
+ "帮我生成一个 React 设计系统"
40
+ "为我的 Next.js 项目生成 Tailwind 配置"
41
+ "生成一个蓝色主题的设计系统"
42
+ "我需要一套完整的设计系统"
43
+ "帮我配置项目的色彩和字体"
44
+ ```
45
+
46
+ **❌ 不推荐说法**
47
+ ```
48
+ "设计一下"(太模糊)
49
+ "好看一点"(没有具体需求)
50
+ ```
51
+
52
+ **使用场景**
53
+ - 新项目启动,需要设计系统
54
+ - 需要统一的色彩、字体、间距配置
55
+ - 想要生成 Tailwind/React/Vue 配置
56
+ - 需要完整的主题配置
57
+
58
+ #### `ui_search` - UI/UX 智能搜索
59
+
60
+ **✅ 推荐说法**
61
+ ```
62
+ "我需要一个 React 的主按钮组件"
63
+ "搜索一下蓝色主题的配色方案"
64
+ "表单验证有什么 UX 最佳实践?"
65
+ "给我推荐一些图标"
66
+ "找一个加载动画组件"
67
+ "有什么好的卡片设计?"
68
+ ```
69
+
70
+ **❌ 不推荐说法**
71
+ ```
72
+ "找个东西"(太模糊)
73
+ "搜索"(没有说明搜索什么)
74
+ ```
75
+
76
+ **使用场景**
77
+ - 需要特定的 UI 组件实现
78
+ - 寻找配色方案
79
+ - 查找设计最佳实践
80
+ - 需要图标、图表等设计元素
81
+
82
+ #### `sync_ui_data` - 数据同步
83
+
84
+ **✅ 推荐说法**
85
+ ```
86
+ "检查一下 UI 数据有没有更新"
87
+ "更新 UI/UX 数据"
88
+ "同步最新的设计数据"
89
+ "强制更新 UI 数据"
90
+ ```
91
+
92
+ **使用场景**
93
+ - 定期检查数据更新
94
+ - 遇到搜索结果不准确
95
+ - 需要最新的设计数据
96
+
97
+ ---
98
+
99
+ ### 🎯 1️⃣ 需求访谈 → `interview` / `ask_user`
30
100
 
31
101
  **触发关键词**:访谈、需求不明确、想清楚、澄清需求、提问、确认
32
102