mcp-probe-kit 2.0.2 → 2.1.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.
@@ -0,0 +1,788 @@
1
+ /**
2
+ * 分析任务配置
3
+ *
4
+ * 定义每种文档的分析任务,包括:
5
+ * - Discover: 发现现有代码和模式
6
+ * - Analyze: 分析项目约定和实现方式
7
+ * - Generate: 生成文档内容
8
+ */
9
+ /**
10
+ * 获取分析任务配置
11
+ */
12
+ export function getAnalysisTasks(category, language, framework) {
13
+ const taskGetter = tasksByCategory[category];
14
+ if (!taskGetter) {
15
+ return getUnknownTasks();
16
+ }
17
+ return taskGetter(language, framework);
18
+ }
19
+ /**
20
+ * 各类型项目的任务配置
21
+ */
22
+ const tasksByCategory = {
23
+ 'backend-api': getBackendApiTasks,
24
+ 'frontend-spa': getFrontendSpaTasks,
25
+ 'fullstack': getFullstackTasks,
26
+ 'mobile': getMobileTasks,
27
+ 'desktop': getDesktopTasks,
28
+ 'data-science': getDataScienceTasks,
29
+ 'cli': getCliTasks,
30
+ 'library': getLibraryTasks,
31
+ 'unknown': getUnknownTasks
32
+ };
33
+ /**
34
+ * 后端 API 项目的分析任务
35
+ */
36
+ function getBackendApiTasks(language, framework) {
37
+ return [
38
+ {
39
+ document: 'how-to-add-api.md',
40
+ title: '如何添加新接口',
41
+ purpose: '指导开发者如何在项目中添加新的 API 接口',
42
+ analysis: {
43
+ discover: {
44
+ description: '找到项目中现有的 API 接口实现',
45
+ locations: [
46
+ 'src/routes/', 'src/controllers/', 'src/api/', 'src/handlers/',
47
+ 'app/api/', 'routes/', 'controllers/', 'api/', 'handlers/',
48
+ 'src/views/', 'views/', // Django/Flask
49
+ 'src/main/java/**/controller/', 'src/main/java/**/rest/', // Java
50
+ 'cmd/', 'internal/handler/', 'internal/controller/' // Go
51
+ ],
52
+ patterns: [
53
+ '路由定义文件(*.routes.js, *.routes.ts, *_routes.py, *Controller.java, *_handler.go)',
54
+ 'API 端点定义(@app.route, router.get, @GetMapping, @RestController)',
55
+ '控制器文件(*Controller.*, *Handler.*, *View.*)'
56
+ ],
57
+ examples: 2
58
+ },
59
+ analyze: {
60
+ description: '分析项目的 API 开发模式和约定',
61
+ questions: [
62
+ '路由在哪里定义?(文件路径和代码位置)',
63
+ '路由如何注册到应用?(在哪个文件中注册?)',
64
+ '业务逻辑在哪里实现?(Controller/Service/Handler/View)',
65
+ '参数如何验证?(使用什么库?Zod/Joi/class-validator/Pydantic/Bean Validation)',
66
+ '请求体如何解析?(JSON/表单/文件上传)',
67
+ '响应如何格式化?(统一的响应格式?)',
68
+ '错误如何处理?(统一的错误处理中间件?)',
69
+ '数据库如何操作?(ORM/原生 SQL/查询构建器)',
70
+ '认证如何处理?(JWT/Session/中间件/注解)',
71
+ '日志如何记录?(使用什么日志库?)'
72
+ ],
73
+ extract: [
74
+ '实际的文件路径(不要用占位符)',
75
+ '真实的代码片段(从项目中复制)',
76
+ '项目特定的命名约定',
77
+ '项目特定的目录结构',
78
+ '使用的第三方库和工具'
79
+ ]
80
+ },
81
+ generate: {
82
+ description: '基于分析结果,生成具体的操作步骤文档',
83
+ structure: [
84
+ '# 如何添加新接口',
85
+ '## 概述(简要说明项目的 API 开发模式)',
86
+ '## 第一步:创建路由/控制器文件',
87
+ ' - 位置:[实际路径]',
88
+ ' - 命名规范:[项目约定]',
89
+ ' - 参考示例:[实际文件]',
90
+ '## 第二步:定义路由/端点',
91
+ ' - 代码示例(从项目中提取)',
92
+ '## 第三步:实现业务逻辑',
93
+ ' - 位置和代码示例',
94
+ '## 第四步:数据验证',
95
+ ' - 使用的验证库和示例',
96
+ '## 第五步:错误处理',
97
+ ' - 项目的错误处理机制',
98
+ '## 第六步:测试',
99
+ ' - 测试命令和示例',
100
+ '## 参考资料'
101
+ ],
102
+ requirements: [
103
+ '所有文件路径必须是真实存在的',
104
+ '所有代码示例必须从项目中提取',
105
+ '步骤必须具体可操作',
106
+ '必须包含至少 1 个完整的示例',
107
+ '必须说明项目特定的约定和规范'
108
+ ]
109
+ }
110
+ }
111
+ },
112
+ {
113
+ document: 'how-to-database.md',
114
+ title: '如何操作数据库',
115
+ purpose: '指导开发者如何连接和操作数据库',
116
+ analysis: {
117
+ discover: {
118
+ description: '找到项目中的数据库操作代码',
119
+ locations: [
120
+ 'src/models/', 'src/entities/', 'src/database/', 'src/db/',
121
+ 'models/', 'entities/', 'database/', 'db/',
122
+ 'src/main/java/**/entity/', 'src/main/java/**/model/',
123
+ 'src/main/resources/', 'config/'
124
+ ],
125
+ patterns: [
126
+ '数据模型文件(*.model.js, *.entity.ts, *_model.py, *.java)',
127
+ '数据库配置文件(database.js, db.config.ts, settings.py, application.yml)',
128
+ 'ORM 配置(TypeORM, Sequelize, SQLAlchemy, JPA, GORM)',
129
+ '迁移文件(migrations/, alembic/)'
130
+ ],
131
+ examples: 2
132
+ },
133
+ analyze: {
134
+ description: '分析项目的数据库使用方式',
135
+ questions: [
136
+ '使用什么数据库?(MySQL/PostgreSQL/MongoDB/SQLite)',
137
+ '使用什么 ORM?(TypeORM/Sequelize/Prisma/SQLAlchemy/JPA/GORM)',
138
+ '数据模型在哪里定义?',
139
+ '如何创建新表/集合?',
140
+ '如何执行查询?(示例代码)',
141
+ '如何处理事务?',
142
+ '如何处理迁移?(migration 工具)',
143
+ '数据库连接如何配置?(配置文件位置)'
144
+ ],
145
+ extract: [
146
+ '数据库配置文件路径',
147
+ '模型定义示例',
148
+ '查询操作示例',
149
+ '迁移命令'
150
+ ]
151
+ },
152
+ generate: {
153
+ description: '生成数据库操作指南',
154
+ structure: [
155
+ '# 如何操作数据库',
156
+ '## 数据库配置',
157
+ '## 创建数据模型',
158
+ '## 执行查询',
159
+ '## 处理事务',
160
+ '## 数据库迁移',
161
+ '## 参考资料'
162
+ ],
163
+ requirements: [
164
+ '包含实际的配置文件内容',
165
+ '包含真实的模型定义',
166
+ '包含查询操作示例',
167
+ '说明迁移流程'
168
+ ]
169
+ }
170
+ }
171
+ },
172
+ {
173
+ document: 'how-to-auth.md',
174
+ title: '如何处理认证',
175
+ purpose: '指导开发者如何实现用户认证和授权',
176
+ analysis: {
177
+ discover: {
178
+ description: '找到项目中的认证相关代码',
179
+ locations: [
180
+ 'src/auth/', 'src/middleware/', 'src/guards/', 'src/security/',
181
+ 'auth/', 'middleware/', 'guards/', 'security/',
182
+ 'src/main/java/**/security/', 'src/main/java/**/config/'
183
+ ],
184
+ patterns: [
185
+ '认证中间件(auth.middleware.*, auth_middleware.py, AuthGuard.java)',
186
+ 'JWT 处理(jwt.*, token.*)',
187
+ '登录/注册接口',
188
+ '权限检查代码'
189
+ ],
190
+ examples: 2
191
+ },
192
+ analyze: {
193
+ description: '分析项目的认证机制',
194
+ questions: [
195
+ '使用什么认证方式?(JWT/Session/OAuth)',
196
+ '认证中间件在哪里?',
197
+ '如何生成和验证 token?',
198
+ '如何保护路由?',
199
+ '如何获取当前用户信息?',
200
+ '如何处理权限?(RBAC/ABAC)'
201
+ ],
202
+ extract: [
203
+ '认证中间件代码',
204
+ 'Token 生成和验证代码',
205
+ '路由保护示例',
206
+ '权限检查示例'
207
+ ]
208
+ },
209
+ generate: {
210
+ description: '生成认证实现指南',
211
+ structure: [
212
+ '# 如何处理认证',
213
+ '## 认证机制概述',
214
+ '## 实现登录',
215
+ '## 保护路由',
216
+ '## 获取用户信息',
217
+ '## 处理权限',
218
+ '## 参考资料'
219
+ ],
220
+ requirements: [
221
+ '说明认证流程',
222
+ '包含登录实现示例',
223
+ '包含路由保护示例',
224
+ '包含权限检查示例'
225
+ ]
226
+ }
227
+ }
228
+ },
229
+ {
230
+ document: 'how-to-test.md',
231
+ title: '如何编写测试',
232
+ purpose: '指导开发者如何编写单元测试和集成测试',
233
+ analysis: {
234
+ discover: {
235
+ description: '找到项目中的测试代码',
236
+ locations: [
237
+ 'tests/', 'test/', '__tests__/', 'src/**/*.test.*', 'src/**/*.spec.*',
238
+ 'src/test/java/', 'internal/*_test.go'
239
+ ],
240
+ patterns: [
241
+ '测试文件(*.test.js, *.spec.ts, test_*.py, *Test.java, *_test.go)',
242
+ '测试配置(jest.config.js, vitest.config.ts, pytest.ini)'
243
+ ],
244
+ examples: 2
245
+ },
246
+ analyze: {
247
+ description: '分析项目的测试方式',
248
+ questions: [
249
+ '使用什么测试框架?(Jest/Vitest/Mocha/pytest/JUnit/testing)',
250
+ '测试文件放在哪里?',
251
+ '如何运行测试?(命令)',
252
+ '如何 mock 依赖?',
253
+ '如何测试 API?',
254
+ '如何测试数据库操作?',
255
+ '测试覆盖率如何查看?'
256
+ ],
257
+ extract: [
258
+ '测试框架配置',
259
+ '测试文件示例',
260
+ '测试命令',
261
+ 'Mock 示例'
262
+ ]
263
+ },
264
+ generate: {
265
+ description: '生成测试编写指南',
266
+ structure: [
267
+ '# 如何编写测试',
268
+ '## 测试框架',
269
+ '## 编写单元测试',
270
+ '## 编写集成测试',
271
+ '## Mock 依赖',
272
+ '## 运行测试',
273
+ '## 查看覆盖率',
274
+ '## 参考资料'
275
+ ],
276
+ requirements: [
277
+ '说明测试框架',
278
+ '包含测试示例',
279
+ '说明测试命令',
280
+ '包含 Mock 示例'
281
+ ]
282
+ }
283
+ }
284
+ },
285
+ {
286
+ document: 'how-to-deploy.md',
287
+ title: '如何部署',
288
+ purpose: '指导开发者如何部署应用到生产环境',
289
+ analysis: {
290
+ discover: {
291
+ description: '找到项目中的部署配置',
292
+ locations: [
293
+ 'Dockerfile', 'docker-compose.yml', '.github/workflows/', '.gitlab-ci.yml',
294
+ 'deploy/', 'scripts/', 'k8s/', 'terraform/'
295
+ ],
296
+ patterns: [
297
+ 'Docker 配置',
298
+ 'CI/CD 配置',
299
+ '部署脚本',
300
+ 'K8s 配置'
301
+ ],
302
+ examples: 1
303
+ },
304
+ analyze: {
305
+ description: '分析项目的部署方式',
306
+ questions: [
307
+ '使用什么部署方式?(Docker/K8s/云平台)',
308
+ '如何构建?(命令)',
309
+ '如何运行?(命令)',
310
+ '环境变量如何配置?',
311
+ '如何处理数据库迁移?',
312
+ '如何监控和日志?'
313
+ ],
314
+ extract: [
315
+ '部署配置文件',
316
+ '构建命令',
317
+ '运行命令',
318
+ '环境变量列表'
319
+ ]
320
+ },
321
+ generate: {
322
+ description: '生成部署指南',
323
+ structure: [
324
+ '# 如何部署',
325
+ '## 部署方式',
326
+ '## 构建应用',
327
+ '## 配置环境变量',
328
+ '## 运行应用',
329
+ '## 数据库迁移',
330
+ '## 监控和日志',
331
+ '## 参考资料'
332
+ ],
333
+ requirements: [
334
+ '说明部署方式',
335
+ '包含构建命令',
336
+ '包含运行命令',
337
+ '说明环境变量配置'
338
+ ]
339
+ }
340
+ }
341
+ }
342
+ ];
343
+ }
344
+ /**
345
+ * 前端 SPA 项目的分析任务
346
+ */
347
+ function getFrontendSpaTasks(language, framework) {
348
+ return [
349
+ {
350
+ document: 'how-to-new-page.md',
351
+ title: '如何创建新页面',
352
+ purpose: '指导开发者如何创建新的页面组件',
353
+ analysis: {
354
+ discover: {
355
+ description: '找到项目中现有的页面组件',
356
+ locations: [
357
+ 'src/pages/', 'src/views/', 'app/', 'pages/', 'views/',
358
+ 'src/screens/', 'src/routes/'
359
+ ],
360
+ patterns: [
361
+ '页面组件文件(*.tsx, *.jsx, *.vue, *.svelte)',
362
+ '路由配置文件(router.*, routes.*, app/layout.tsx)',
363
+ '页面布局文件(Layout.*, _layout.*, layout.tsx)'
364
+ ],
365
+ examples: 2
366
+ },
367
+ analyze: {
368
+ description: '分析项目的页面开发模式',
369
+ questions: [
370
+ '页面组件放在哪里?(目录结构)',
371
+ '页面如何命名?(PascalCase/kebab-case)',
372
+ '路由如何配置?(文件系统路由/配置文件)',
373
+ '如何获取数据?(useEffect/getServerSideProps/loader)',
374
+ '如何处理加载状态?(Loading 组件/Suspense)',
375
+ '如何处理错误?(ErrorBoundary/try-catch)',
376
+ '如何处理 SEO?(meta 标签/head 组件)'
377
+ ],
378
+ extract: [
379
+ '实际的页面文件路径',
380
+ '真实的组件代码',
381
+ '路由配置代码',
382
+ '数据获取代码'
383
+ ]
384
+ },
385
+ generate: {
386
+ description: '生成页面开发步骤文档',
387
+ structure: [
388
+ '# 如何创建新页面',
389
+ '## 第一步:创建页面文件',
390
+ '## 第二步:定义页面组件',
391
+ '## 第三步:配置路由',
392
+ '## 第四步:获取数据',
393
+ '## 第五步:处理状态',
394
+ '## 第六步:编写样式',
395
+ '## 参考资料'
396
+ ],
397
+ requirements: [
398
+ '包含完整的组件代码示例',
399
+ '说明路由配置方式',
400
+ '展示数据获取方式'
401
+ ]
402
+ }
403
+ }
404
+ },
405
+ {
406
+ document: 'how-to-call-api.md',
407
+ title: '如何调用 API',
408
+ purpose: '指导开发者如何调用后端 API 接口',
409
+ analysis: {
410
+ discover: {
411
+ description: '找到项目中的 API 调用代码',
412
+ locations: [
413
+ 'src/api/', 'src/services/', 'src/lib/', 'src/utils/',
414
+ 'api/', 'services/', 'lib/', 'utils/'
415
+ ],
416
+ patterns: [
417
+ 'API 客户端文件(api.*, *Api.*, *Service.*)',
418
+ 'HTTP 请求代码(fetch, axios, ky)',
419
+ 'API 配置文件'
420
+ ],
421
+ examples: 2
422
+ },
423
+ analyze: {
424
+ description: '分析项目的 API 调用方式',
425
+ questions: [
426
+ '使用什么 HTTP 客户端?(fetch/axios/ky/tRPC)',
427
+ 'API 客户端在哪里?',
428
+ 'API 基础 URL 如何配置?',
429
+ '如何处理请求拦截?(添加 token)',
430
+ '如何处理响应拦截?(错误处理)',
431
+ '如何处理加载状态?',
432
+ '如何处理错误?'
433
+ ],
434
+ extract: [
435
+ 'API 客户端代码',
436
+ '请求示例',
437
+ '错误处理代码',
438
+ '拦截器配置'
439
+ ]
440
+ },
441
+ generate: {
442
+ description: '生成 API 调用指南',
443
+ structure: [
444
+ '# 如何调用 API',
445
+ '## API 客户端配置',
446
+ '## 发起请求',
447
+ '## 处理响应',
448
+ '## 错误处理',
449
+ '## 加载状态',
450
+ '## 参考资料'
451
+ ],
452
+ requirements: [
453
+ '说明 HTTP 客户端',
454
+ '包含请求示例',
455
+ '包含错误处理示例'
456
+ ]
457
+ }
458
+ }
459
+ },
460
+ {
461
+ document: 'how-to-state.md',
462
+ title: '如何管理状态',
463
+ purpose: '指导开发者如何使用状态管理工具',
464
+ analysis: {
465
+ discover: {
466
+ description: '找到项目中的状态管理代码',
467
+ locations: [
468
+ 'src/store/', 'src/stores/', 'src/state/', 'src/context/',
469
+ 'store/', 'stores/', 'state/', 'context/'
470
+ ],
471
+ patterns: [
472
+ '状态管理文件(*.store.*, *.slice.*, *Store.*, *Context.*)',
473
+ '状态管理配置(store.*, redux.*, zustand.*)'
474
+ ],
475
+ examples: 2
476
+ },
477
+ analyze: {
478
+ description: '分析项目的状态管理方式',
479
+ questions: [
480
+ '使用什么状态管理?(Redux/Zustand/MobX/Context API/Pinia)',
481
+ '状态如何定义?',
482
+ '如何读取状态?',
483
+ '如何更新状态?',
484
+ '如何处理异步操作?'
485
+ ],
486
+ extract: [
487
+ '状态定义代码',
488
+ '状态使用示例',
489
+ '状态更新示例'
490
+ ]
491
+ },
492
+ generate: {
493
+ description: '生成状态管理指南',
494
+ structure: [
495
+ '# 如何管理状态',
496
+ '## 状态管理工具',
497
+ '## 定义状态',
498
+ '## 读取状态',
499
+ '## 更新状态',
500
+ '## 异步操作',
501
+ '## 参考资料'
502
+ ],
503
+ requirements: [
504
+ '说明状态管理工具',
505
+ '包含状态定义示例',
506
+ '包含状态使用示例'
507
+ ]
508
+ }
509
+ }
510
+ },
511
+ {
512
+ document: 'how-to-routing.md',
513
+ title: '如何处理路由',
514
+ purpose: '指导开发者如何配置和使用路由',
515
+ analysis: {
516
+ discover: {
517
+ description: '找到项目中的路由配置',
518
+ locations: [
519
+ 'src/router/', 'src/routes/', 'app/', 'pages/',
520
+ 'router/', 'routes/'
521
+ ],
522
+ patterns: [
523
+ '路由配置文件(router.*, routes.*, app/layout.tsx)',
524
+ '路由组件(Route, Link, NavLink)'
525
+ ],
526
+ examples: 2
527
+ },
528
+ analyze: {
529
+ description: '分析项目的路由方式',
530
+ questions: [
531
+ '使用什么路由?(React Router/Vue Router/文件系统路由)',
532
+ '路由如何配置?',
533
+ '如何导航?(Link/useNavigate/router.push)',
534
+ '如何传递参数?',
535
+ '如何保护路由?(认证)',
536
+ '如何处理 404?'
537
+ ],
538
+ extract: [
539
+ '路由配置代码',
540
+ '导航示例',
541
+ '路由保护示例'
542
+ ]
543
+ },
544
+ generate: {
545
+ description: '生成路由使用指南',
546
+ structure: [
547
+ '# 如何处理路由',
548
+ '## 路由配置',
549
+ '## 添加新路由',
550
+ '## 页面导航',
551
+ '## 传递参数',
552
+ '## 路由保护',
553
+ '## 参考资料'
554
+ ],
555
+ requirements: [
556
+ '说明路由工具',
557
+ '包含路由配置示例',
558
+ '包含导航示例'
559
+ ]
560
+ }
561
+ }
562
+ },
563
+ {
564
+ document: 'how-to-styling.md',
565
+ title: '如何处理样式',
566
+ purpose: '指导开发者如何编写和组织样式代码',
567
+ analysis: {
568
+ discover: {
569
+ description: '找到项目中的样式文件',
570
+ locations: [
571
+ 'src/styles/', 'src/css/', 'styles/', 'css/',
572
+ 'src/**/*.css', 'src/**/*.scss', 'src/**/*.module.css'
573
+ ],
574
+ patterns: [
575
+ '样式文件(*.css, *.scss, *.module.css)',
576
+ '样式配置(tailwind.config.js, styled-components)'
577
+ ],
578
+ examples: 2
579
+ },
580
+ analyze: {
581
+ description: '分析项目的样式处理方式',
582
+ questions: [
583
+ '使用什么样式方案?(CSS Modules/Tailwind/styled-components/Sass)',
584
+ '全局样式在哪里?',
585
+ '如何编写组件样式?',
586
+ '如何使用主题?',
587
+ '如何处理响应式?'
588
+ ],
589
+ extract: [
590
+ '样式配置',
591
+ '样式使用示例',
592
+ '主题配置'
593
+ ]
594
+ },
595
+ generate: {
596
+ description: '生成样式处理指南',
597
+ structure: [
598
+ '# 如何处理样式',
599
+ '## 样式方案',
600
+ '## 编写样式',
601
+ '## 使用主题',
602
+ '## 响应式设计',
603
+ '## 参考资料'
604
+ ],
605
+ requirements: [
606
+ '说明样式方案',
607
+ '包含样式示例',
608
+ '说明主题使用'
609
+ ]
610
+ }
611
+ }
612
+ }
613
+ ];
614
+ }
615
+ /**
616
+ * 全栈项目的分析任务
617
+ */
618
+ function getFullstackTasks(language, framework) {
619
+ // 全栈项目结合前端和后端的任务
620
+ return [
621
+ {
622
+ document: 'how-to-new-feature.md',
623
+ title: '如何开发新功能',
624
+ purpose: '指导开发者如何开发前后端联动的新功能',
625
+ analysis: {
626
+ discover: {
627
+ description: '找到项目中的全栈功能示例',
628
+ locations: ['app/', 'src/app/', 'pages/', 'src/pages/', 'api/', 'src/api/'],
629
+ patterns: ['页面组件', 'API 路由', '数据获取'],
630
+ examples: 1
631
+ },
632
+ analyze: {
633
+ description: '分析全栈开发流程',
634
+ questions: [
635
+ '前端页面在哪里?',
636
+ 'API 路由在哪里?',
637
+ '如何在页面中调用 API?',
638
+ '如何处理数据?'
639
+ ],
640
+ extract: ['页面代码', 'API 代码', '数据流']
641
+ },
642
+ generate: {
643
+ description: '生成全栈开发指南',
644
+ structure: ['# 如何开发新功能', '## 创建 API 路由', '## 创建页面', '## 连接前后端', '## 测试'],
645
+ requirements: ['包含完整示例', '说明前后端交互']
646
+ }
647
+ }
648
+ },
649
+ ...getBackendApiTasks(language, framework).slice(0, 2), // 复用部分后端任务
650
+ ...getFrontendSpaTasks(language, framework).slice(0, 1) // 复用部分前端任务
651
+ ];
652
+ }
653
+ /**
654
+ * 移动端项目的分析任务
655
+ */
656
+ function getMobileTasks(language, framework) {
657
+ return getFrontendSpaTasks(language, framework).map(task => ({
658
+ ...task,
659
+ document: task.document.replace('page', 'screen'),
660
+ title: task.title.replace('页面', '屏幕')
661
+ }));
662
+ }
663
+ /**
664
+ * 桌面应用项目的分析任务
665
+ */
666
+ function getDesktopTasks(language, framework) {
667
+ return getFrontendSpaTasks(language, framework);
668
+ }
669
+ /**
670
+ * 数据科学项目的分析任务
671
+ */
672
+ function getDataScienceTasks(language, framework) {
673
+ return [
674
+ {
675
+ document: 'how-to-new-analysis.md',
676
+ title: '如何开始新分析',
677
+ purpose: '指导开发者如何创建新的数据分析任务',
678
+ analysis: {
679
+ discover: {
680
+ description: '找到现有的分析脚本或 Notebook',
681
+ locations: ['notebooks/', 'analysis/', 'scripts/', 'src/'],
682
+ patterns: ['*.ipynb', '*.py', 'analysis_*.py'],
683
+ examples: 1
684
+ },
685
+ analyze: {
686
+ description: '分析数据分析流程',
687
+ questions: ['如何加载数据?', '如何预处理?', '如何可视化?', '如何保存结果?'],
688
+ extract: ['数据加载代码', '预处理代码', '可视化代码']
689
+ },
690
+ generate: {
691
+ description: '生成数据分析指南',
692
+ structure: ['# 如何开始新分析', '## 加载数据', '## 预处理', '## 分析', '## 可视化', '## 保存结果'],
693
+ requirements: ['包含代码示例', '说明数据流程']
694
+ }
695
+ }
696
+ }
697
+ ];
698
+ }
699
+ /**
700
+ * CLI 工具项目的分析任务
701
+ */
702
+ function getCliTasks(language, framework) {
703
+ return [
704
+ {
705
+ document: 'how-to-new-command.md',
706
+ title: '如何添加新命令',
707
+ purpose: '指导开发者如何添加新的 CLI 命令',
708
+ analysis: {
709
+ discover: {
710
+ description: '找到现有的命令定义',
711
+ locations: ['src/commands/', 'commands/', 'cli/', 'cmd/'],
712
+ patterns: ['命令文件', '命令注册'],
713
+ examples: 1
714
+ },
715
+ analyze: {
716
+ description: '分析命令实现方式',
717
+ questions: ['如何定义命令?', '如何解析参数?', '如何执行逻辑?'],
718
+ extract: ['命令定义代码', '参数解析代码']
719
+ },
720
+ generate: {
721
+ description: '生成命令开发指南',
722
+ structure: ['# 如何添加新命令', '## 定义命令', '## 解析参数', '## 实现逻辑', '## 测试'],
723
+ requirements: ['包含命令示例', '说明参数处理']
724
+ }
725
+ }
726
+ }
727
+ ];
728
+ }
729
+ /**
730
+ * 库/SDK 项目的分析任务
731
+ */
732
+ function getLibraryTasks(language, framework) {
733
+ return [
734
+ {
735
+ document: 'how-to-new-api.md',
736
+ title: '如何添加新 API',
737
+ purpose: '指导开发者如何添加新的公共 API',
738
+ analysis: {
739
+ discover: {
740
+ description: '找到现有的 API 定义',
741
+ locations: ['src/', 'lib/', 'index.ts', 'index.js'],
742
+ patterns: ['导出的函数', '导出的类'],
743
+ examples: 2
744
+ },
745
+ analyze: {
746
+ description: '分析 API 设计模式',
747
+ questions: ['如何定义 API?', '如何导出?', '如何编写文档?', '如何测试?'],
748
+ extract: ['API 定义代码', '导出代码', '文档注释']
749
+ },
750
+ generate: {
751
+ description: '生成 API 开发指南',
752
+ structure: ['# 如何添加新 API', '## 定义 API', '## 编写文档', '## 编写测试', '## 导出'],
753
+ requirements: ['包含 API 示例', '说明文档规范']
754
+ }
755
+ }
756
+ }
757
+ ];
758
+ }
759
+ /**
760
+ * 未知类型项目的分析任务
761
+ */
762
+ function getUnknownTasks() {
763
+ return [
764
+ {
765
+ document: 'project-overview.md',
766
+ title: '项目概览',
767
+ purpose: '项目的基本信息和技术栈',
768
+ analysis: {
769
+ discover: {
770
+ description: '分析项目基本信息',
771
+ locations: ['package.json', 'README.md', 'src/', 'lib/'],
772
+ patterns: ['配置文件', '源代码目录'],
773
+ examples: 0
774
+ },
775
+ analyze: {
776
+ description: '理解项目结构',
777
+ questions: ['项目是做什么的?', '使用了什么技术?', '如何运行?'],
778
+ extract: ['项目描述', '技术栈', '运行命令']
779
+ },
780
+ generate: {
781
+ description: '生成项目概览文档',
782
+ structure: ['# 项目概览', '## 项目介绍', '## 技术栈', '## 目录结构', '## 如何运行'],
783
+ requirements: ['包含基本信息', '说明技术栈']
784
+ }
785
+ }
786
+ }
787
+ ];
788
+ }