mr-sliy 1.0.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 (50) hide show
  1. package/.env.example +145 -0
  2. package/database/schema.sql +187 -0
  3. package/package.json +74 -0
  4. package/scripts/download-tree-sitter.js +171 -0
  5. package/scripts/postinstall.js +134 -0
  6. package/src/agent/agent.js +563 -0
  7. package/src/agent.js +87 -0
  8. package/src/cli/index.js +1643 -0
  9. package/src/config/index.js +232 -0
  10. package/src/engine/dualModeEngine.js +486 -0
  11. package/src/index.js +165 -0
  12. package/src/middlewares/errorHandler.js +166 -0
  13. package/src/middlewares/index.js +23 -0
  14. package/src/routes/aiRoutes.js +117 -0
  15. package/src/routes/configRoutes.js +31 -0
  16. package/src/routes/index.js +75 -0
  17. package/src/routes/issueRoutes.js +195 -0
  18. package/src/routes/projectRoutes.js +46 -0
  19. package/src/routes/reportRoutes.js +40 -0
  20. package/src/routes/scanRoutes.js +245 -0
  21. package/src/routes/userRoutes.js +47 -0
  22. package/src/services/ast/parser.js +503 -0
  23. package/src/services/detection/detector.js +934 -0
  24. package/src/services/llm/providers.js +1107 -0
  25. package/src/services/rag/agent.js +375 -0
  26. package/src/services/vector/knowledgeBase.js +863 -0
  27. package/src/skills/Skill.js +38 -0
  28. package/src/skills/code-analysis/index.js +272 -0
  29. package/src/skills/code-detection/index.js +166 -0
  30. package/src/skills/code-detection/rules/console-log.js +45 -0
  31. package/src/skills/code-detection/rules/deep-nesting.js +76 -0
  32. package/src/skills/code-detection/rules/duplicate-code.js +57 -0
  33. package/src/skills/code-detection/rules/high-complexity.js +109 -0
  34. package/src/skills/code-detection/rules/index.js +59 -0
  35. package/src/skills/code-detection/rules/long-functions.js +54 -0
  36. package/src/skills/code-detection/rules/magic-numbers.js +48 -0
  37. package/src/skills/code-detection/rules/missing-comment.js +64 -0
  38. package/src/skills/code-detection/rules/null-check.js +71 -0
  39. package/src/skills/code-detection/rules/unnecessary-else.js +46 -0
  40. package/src/skills/code-detection/rules/unused-functions.js +57 -0
  41. package/src/skills/code-detection/rules/unused-imports.js +57 -0
  42. package/src/skills/code-detection/rules/unused-variables.js +54 -0
  43. package/src/skills/code-optimization/index.js +319 -0
  44. package/src/skills/index.js +152 -0
  45. package/src/utils/crypto.js +212 -0
  46. package/src/utils/database.js +125 -0
  47. package/src/utils/helpers.js +226 -0
  48. package/src/utils/logger.js +202 -0
  49. package/src/utils/mysql.js +198 -0
  50. package/src/utils/response.js +124 -0
package/src/agent.js ADDED
@@ -0,0 +1,87 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Mr.Sliy - 多语言代码优化智能体
4
+ * 基于 Tree-sitter 与 RAG 的智能检测优化系统
5
+ *
6
+ * 使用方式:
7
+ * Mr.Sliy # 启动交互式CLI
8
+ * Mr.Sliy analyze <file> # 分析单个文件
9
+ * Mr.Sliy scan <path> # 扫描项目
10
+ * Mr.Sliy optimize # 交互式优化
11
+ */
12
+
13
+ const { startCLI } = require('./cli');
14
+ const { agent } = require('./agent/agent');
15
+
16
+ // 解析命令行参数
17
+ const args = process.argv.slice(2);
18
+ const command = args[0];
19
+
20
+ async function main() {
21
+ // 初始化Agent
22
+ await agent.init();
23
+
24
+ // 从环境变量加载提供商配置
25
+ if (process.env.OPENAI_API_KEY) {
26
+ agent.registerProvider('openai', {
27
+ apiKey: process.env.OPENAI_API_KEY,
28
+ model: process.env.OPENAI_MODEL || 'gpt-4'
29
+ });
30
+ }
31
+
32
+ if (process.env.CLAUDE_API_KEY) {
33
+ agent.registerProvider('claude', {
34
+ apiKey: process.env.CLAUDE_API_KEY,
35
+ model: process.env.CLAUDE_MODEL || 'claude-3-sonnet-20240229'
36
+ });
37
+ }
38
+
39
+ agent.registerProvider('ollama', {
40
+ baseURL: process.env.OLLAMA_URL || 'http://localhost:11434',
41
+ model: process.env.OLLAMA_MODEL || 'codellama'
42
+ });
43
+
44
+ // 处理命令行命令
45
+ switch (command) {
46
+ case 'analyze':
47
+ if (!args[1]) {
48
+ console.error('用法: node src/agent.js analyze <文件路径>');
49
+ process.exit(1);
50
+ }
51
+ {
52
+ const result = await agent.analyzeFile(args[1]);
53
+ console.log(JSON.stringify(result, null, 2));
54
+ }
55
+ break;
56
+
57
+ case 'scan':
58
+ if (!args[1]) {
59
+ console.error('用法: node src/agent.js scan <项目路径>');
60
+ process.exit(1);
61
+ }
62
+ {
63
+ const result = await agent.analyzeProject(args[1]);
64
+ console.log(JSON.stringify(result, null, 2));
65
+ }
66
+ break;
67
+
68
+ case 'optimize':
69
+ // 交互式优化,启动CLI中的优化流程
70
+ startCLI();
71
+ break;
72
+
73
+ case 'status':
74
+ console.log(JSON.stringify(agent.getStatus(), null, 2));
75
+ break;
76
+
77
+ default:
78
+ // 无参数或未知命令,启动交互式CLI
79
+ startCLI();
80
+ break;
81
+ }
82
+ }
83
+
84
+ main().catch(error => {
85
+ console.error('Agent启动失败:', error);
86
+ process.exit(1);
87
+ });