archicore 0.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 +530 -0
- package/dist/analyzers/dead-code.d.ts +95 -0
- package/dist/analyzers/dead-code.js +327 -0
- package/dist/analyzers/duplication.d.ts +90 -0
- package/dist/analyzers/duplication.js +344 -0
- package/dist/analyzers/security.d.ts +79 -0
- package/dist/analyzers/security.js +484 -0
- package/dist/architecture/index.d.ts +35 -0
- package/dist/architecture/index.js +249 -0
- package/dist/cli/commands/analyzers.d.ts +6 -0
- package/dist/cli/commands/analyzers.js +431 -0
- package/dist/cli/commands/export.d.ts +6 -0
- package/dist/cli/commands/export.js +78 -0
- package/dist/cli/commands/index.d.ts +8 -0
- package/dist/cli/commands/index.js +8 -0
- package/dist/cli/commands/init.d.ts +26 -0
- package/dist/cli/commands/init.js +140 -0
- package/dist/cli/commands/interactive.d.ts +7 -0
- package/dist/cli/commands/interactive.js +522 -0
- package/dist/cli/commands/projects.d.ts +6 -0
- package/dist/cli/commands/projects.js +249 -0
- package/dist/cli/index.d.ts +7 -0
- package/dist/cli/index.js +7 -0
- package/dist/cli/ui/box.d.ts +17 -0
- package/dist/cli/ui/box.js +62 -0
- package/dist/cli/ui/colors.d.ts +49 -0
- package/dist/cli/ui/colors.js +86 -0
- package/dist/cli/ui/index.d.ts +9 -0
- package/dist/cli/ui/index.js +9 -0
- package/dist/cli/ui/prompt.d.ts +34 -0
- package/dist/cli/ui/prompt.js +122 -0
- package/dist/cli/ui/spinner.d.ts +29 -0
- package/dist/cli/ui/spinner.js +80 -0
- package/dist/cli/ui/table.d.ts +33 -0
- package/dist/cli/ui/table.js +84 -0
- package/dist/cli/utils/config.d.ts +23 -0
- package/dist/cli/utils/config.js +73 -0
- package/dist/cli/utils/index.d.ts +6 -0
- package/dist/cli/utils/index.js +6 -0
- package/dist/cli/utils/session.d.ts +27 -0
- package/dist/cli/utils/session.js +117 -0
- package/dist/cli.d.ts +8 -0
- package/dist/cli.js +295 -0
- package/dist/code-index/ast-parser.d.ts +16 -0
- package/dist/code-index/ast-parser.js +330 -0
- package/dist/code-index/dependency-graph.d.ts +16 -0
- package/dist/code-index/dependency-graph.js +161 -0
- package/dist/code-index/index.d.ts +44 -0
- package/dist/code-index/index.js +124 -0
- package/dist/code-index/symbol-extractor.d.ts +13 -0
- package/dist/code-index/symbol-extractor.js +150 -0
- package/dist/export/index.d.ts +92 -0
- package/dist/export/index.js +676 -0
- package/dist/github/github-service.d.ts +146 -0
- package/dist/github/github-service.js +609 -0
- package/dist/impact-engine/index.d.ts +25 -0
- package/dist/impact-engine/index.js +284 -0
- package/dist/index.d.ts +60 -0
- package/dist/index.js +149 -0
- package/dist/metrics/index.d.ts +136 -0
- package/dist/metrics/index.js +525 -0
- package/dist/orchestrator/deepseek-optimizer.d.ts +67 -0
- package/dist/orchestrator/deepseek-optimizer.js +320 -0
- package/dist/orchestrator/index.d.ts +34 -0
- package/dist/orchestrator/index.js +305 -0
- package/dist/pr-guardian/index.d.ts +143 -0
- package/dist/pr-guardian/index.js +553 -0
- package/dist/refactoring/index.d.ts +108 -0
- package/dist/refactoring/index.js +580 -0
- package/dist/rules-engine/index.d.ts +129 -0
- package/dist/rules-engine/index.js +482 -0
- package/dist/semantic-memory/embedding-service.d.ts +24 -0
- package/dist/semantic-memory/embedding-service.js +120 -0
- package/dist/semantic-memory/index.d.ts +45 -0
- package/dist/semantic-memory/index.js +206 -0
- package/dist/semantic-memory/vector-store.d.ts +27 -0
- package/dist/semantic-memory/vector-store.js +166 -0
- package/dist/server/index.d.ts +28 -0
- package/dist/server/index.js +141 -0
- package/dist/server/middleware/api-auth.d.ts +43 -0
- package/dist/server/middleware/api-auth.js +256 -0
- package/dist/server/routes/admin.d.ts +5 -0
- package/dist/server/routes/admin.js +123 -0
- package/dist/server/routes/api.d.ts +7 -0
- package/dist/server/routes/api.js +362 -0
- package/dist/server/routes/auth.d.ts +16 -0
- package/dist/server/routes/auth.js +191 -0
- package/dist/server/routes/developer.d.ts +8 -0
- package/dist/server/routes/developer.js +439 -0
- package/dist/server/routes/github.d.ts +7 -0
- package/dist/server/routes/github.js +495 -0
- package/dist/server/routes/upload.d.ts +7 -0
- package/dist/server/routes/upload.js +196 -0
- package/dist/server/services/api-key-service.d.ts +81 -0
- package/dist/server/services/api-key-service.js +281 -0
- package/dist/server/services/auth-service.d.ts +40 -0
- package/dist/server/services/auth-service.js +315 -0
- package/dist/server/services/project-service.d.ts +123 -0
- package/dist/server/services/project-service.js +533 -0
- package/dist/server/services/token-service.d.ts +107 -0
- package/dist/server/services/token-service.js +416 -0
- package/dist/server/services/upload-service.d.ts +93 -0
- package/dist/server/services/upload-service.js +464 -0
- package/dist/types/api.d.ts +188 -0
- package/dist/types/api.js +86 -0
- package/dist/types/github.d.ts +335 -0
- package/dist/types/github.js +5 -0
- package/dist/types/index.d.ts +265 -0
- package/dist/types/index.js +32 -0
- package/dist/types/user.d.ts +69 -0
- package/dist/types/user.js +42 -0
- package/dist/utils/file-utils.d.ts +20 -0
- package/dist/utils/file-utils.js +163 -0
- package/dist/utils/logger.d.ts +17 -0
- package/dist/utils/logger.js +41 -0
- package/dist/watcher/index.d.ts +125 -0
- package/dist/watcher/index.js +397 -0
- package/package.json +71 -0
package/README.md
ADDED
|
@@ -0,0 +1,530 @@
|
|
|
1
|
+
# AIArhitector
|
|
2
|
+
|
|
3
|
+
**AI Software Architect System** - система ИИ-архитектор, которая понимает весь код, держит контекст и снижает риск багов практически до нуля.
|
|
4
|
+
|
|
5
|
+
## Ключевые возможности
|
|
6
|
+
|
|
7
|
+
### 1. **Понимание всего кода**
|
|
8
|
+
- 🌲 **AST Parsing** - парсинг кода через Tree-sitter
|
|
9
|
+
- 🕸️ **Dependency Graph** - полный граф зависимостей между компонентами
|
|
10
|
+
- 🔍 **Symbol Extraction** - извлечение всех символов (функции, классы, интерфейсы)
|
|
11
|
+
- 📊 **Call Graph** - граф вызовов функций
|
|
12
|
+
|
|
13
|
+
### 2. **Семантическая память**
|
|
14
|
+
- 🧠 **Vector Database** - хранение семантического понимания кода (Qdrant)
|
|
15
|
+
- 🔎 **Semantic Search** - поиск по смыслу, а не по тексту
|
|
16
|
+
- 💾 **Long-term Memory** - долговременная память о назначении компонентов
|
|
17
|
+
|
|
18
|
+
### 3. **Архитектурные знания**
|
|
19
|
+
- 🏛️ **Bounded Contexts** - описание границ контекстов
|
|
20
|
+
- 📐 **Domain Entities** - доменные сущности и их связи
|
|
21
|
+
- 📋 **Architectural Rules** - правила архитектуры
|
|
22
|
+
- ⚖️ **Invariants** - инварианты системы
|
|
23
|
+
|
|
24
|
+
### 4. **Анализ влияния изменений**
|
|
25
|
+
- 🎯 **Impact Analysis** - определение затронутых компонентов
|
|
26
|
+
- ⚠️ **Risk Assessment** - оценка рисков
|
|
27
|
+
- 💡 **Recommendations** - автоматические рекомендации
|
|
28
|
+
- 📈 **Impact Graph** - визуальный граф влияния
|
|
29
|
+
|
|
30
|
+
### 5. **LLM Orchestration**
|
|
31
|
+
- 🤖 **AI Architect** - ИИ-архитектор для принятия решений
|
|
32
|
+
- 💬 **Contextual Answers** - ответы с учётом всего контекста
|
|
33
|
+
- 🔄 **Code Review** - автоматический ревью кода
|
|
34
|
+
- 📝 **Documentation** - генерация документации
|
|
35
|
+
|
|
36
|
+
## Архитектура системы
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
┌─────────────────────────────────────────────────────┐
|
|
40
|
+
│ Git Repository │
|
|
41
|
+
└─────────────────────────────────────────────────────┘
|
|
42
|
+
↓
|
|
43
|
+
┌─────────────────────────────────────────────────────┐
|
|
44
|
+
│ Code Index (AST + Graph) │
|
|
45
|
+
│ - Tree-sitter Parser │
|
|
46
|
+
│ - Symbol Extraction │
|
|
47
|
+
│ - Dependency Graph Builder │
|
|
48
|
+
└─────────────────────────────────────────────────────┘
|
|
49
|
+
↓
|
|
50
|
+
┌─────────────────────────────────────────────────────┐
|
|
51
|
+
│ Semantic Memory (Vector DB) │
|
|
52
|
+
│ - Embeddings Generation │
|
|
53
|
+
│ - Qdrant Vector Store │
|
|
54
|
+
│ - Semantic Search │
|
|
55
|
+
└─────────────────────────────────────────────────────┘
|
|
56
|
+
↓
|
|
57
|
+
┌─────────────────────────────────────────────────────┐
|
|
58
|
+
│ Architecture Knowledge Layer │
|
|
59
|
+
│ - Bounded Contexts │
|
|
60
|
+
│ - Domain Entities │
|
|
61
|
+
│ - Architectural Rules │
|
|
62
|
+
│ - Invariants Validation │
|
|
63
|
+
└─────────────────────────────────────────────────────┘
|
|
64
|
+
↓
|
|
65
|
+
┌─────────────────────────────────────────────────────┐
|
|
66
|
+
│ Change Impact Engine │
|
|
67
|
+
│ - Affected Components Detection │
|
|
68
|
+
│ - Risk Assessment │
|
|
69
|
+
│ - Recommendations Generation │
|
|
70
|
+
│ - Impact Graph Building │
|
|
71
|
+
└─────────────────────────────────────────────────────┘
|
|
72
|
+
↓
|
|
73
|
+
┌─────────────────────────────────────────────────────┐
|
|
74
|
+
│ LLM Orchestrator │
|
|
75
|
+
│ - Claude / GPT Integration │
|
|
76
|
+
│ - Context Management │
|
|
77
|
+
│ - Architectural Decision Making │
|
|
78
|
+
│ - Code Generation & Review │
|
|
79
|
+
└─────────────────────────────────────────────────────┘
|
|
80
|
+
↓
|
|
81
|
+
┌─────────────────────────────────────────────────────┐
|
|
82
|
+
│ Interfaces (CLI, API, IDE) │
|
|
83
|
+
└─────────────────────────────────────────────────────┘
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Установка
|
|
87
|
+
|
|
88
|
+
### 1. Клонировать репозиторий
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
git clone https://github.com/yourusername/AIarhitector.git
|
|
92
|
+
cd AIarhitector
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### 2. Установить зависимости
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
npm install
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### 3. Настроить окружение
|
|
102
|
+
|
|
103
|
+
Создайте файл `.env`:
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
cp .env.example .env
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Заполните необходимые ключи:
|
|
110
|
+
|
|
111
|
+
```env
|
|
112
|
+
# LLM API Keys
|
|
113
|
+
ANTHROPIC_API_KEY=your_key_here
|
|
114
|
+
OPENAI_API_KEY=your_key_here
|
|
115
|
+
|
|
116
|
+
# Vector Database
|
|
117
|
+
QDRANT_URL=http://localhost:6333
|
|
118
|
+
QDRANT_API_KEY=
|
|
119
|
+
|
|
120
|
+
# Database
|
|
121
|
+
DATABASE_URL=postgresql://localhost:5432/aiarhitector
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### 4. Запустить Qdrant (векторная БД)
|
|
125
|
+
|
|
126
|
+
**Вариант A: Через скрипт (рекомендуется)**
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
# Windows
|
|
130
|
+
start-qdrant.bat
|
|
131
|
+
|
|
132
|
+
# Linux/Mac
|
|
133
|
+
chmod +x start-qdrant.sh
|
|
134
|
+
./start-qdrant.sh
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
Скрипт автоматически:
|
|
138
|
+
- Использует Docker если установлен
|
|
139
|
+
- Или скачает и запустит Qdrant binary
|
|
140
|
+
|
|
141
|
+
**Вариант B: Через Docker Compose**
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
docker-compose up -d
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
**Вариант C: Вручную через Docker**
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
docker run -d --name qdrant -p 6333:6333 -p 6334:6334 qdrant/qdrant
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
После запуска Qdrant доступен на:
|
|
154
|
+
- **API:** http://localhost:6333
|
|
155
|
+
- **Dashboard:** http://localhost:6333/dashboard
|
|
156
|
+
|
|
157
|
+
### 5. Собрать проект
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
npm run build
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
## Использование
|
|
164
|
+
|
|
165
|
+
### CLI Команды
|
|
166
|
+
|
|
167
|
+
#### 1. Индексирование проекта
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
npm run index
|
|
171
|
+
# или
|
|
172
|
+
npx tsx src/cli.ts index --dir /path/to/project
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
Результат:
|
|
176
|
+
```
|
|
177
|
+
✓ Проект проиндексирован!
|
|
178
|
+
|
|
179
|
+
📊 Статистика:
|
|
180
|
+
|
|
181
|
+
Всего файлов: 156
|
|
182
|
+
Всего символов: 1243
|
|
183
|
+
Узлов в графе: 1399
|
|
184
|
+
Связей: 2847
|
|
185
|
+
|
|
186
|
+
🔤 Символы по типам:
|
|
187
|
+
|
|
188
|
+
function: 687
|
|
189
|
+
class: 234
|
|
190
|
+
interface: 145
|
|
191
|
+
variable: 177
|
|
192
|
+
|
|
193
|
+
🧠 Семантическая память:
|
|
194
|
+
|
|
195
|
+
Векторов: 1243
|
|
196
|
+
Точек: 1243
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
#### 2. Анализ влияния изменений
|
|
200
|
+
|
|
201
|
+
```bash
|
|
202
|
+
npx tsx src/cli.ts analyze \
|
|
203
|
+
--description "Объединить уроки и базу знаний в единую сущность" \
|
|
204
|
+
--files "src/lessons,src/knowledge-base" \
|
|
205
|
+
--type "refactor"
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
Результат:
|
|
209
|
+
```
|
|
210
|
+
📋 ОТЧЁТ ОБ АНАЛИЗЕ ВЛИЯНИЯ
|
|
211
|
+
|
|
212
|
+
⚠ ЗАТРОНУТЫЕ КОМПОНЕНТЫ:
|
|
213
|
+
|
|
214
|
+
Всего: 47
|
|
215
|
+
🔴 Критические: 12
|
|
216
|
+
🟠 Высокие: 18
|
|
217
|
+
🟡 Средние: 11
|
|
218
|
+
🟢 Низкие: 6
|
|
219
|
+
|
|
220
|
+
🔴 КРИТИЧЕСКИЕ КОМПОНЕНТЫ:
|
|
221
|
+
|
|
222
|
+
- CourseService (src/services/course.ts)
|
|
223
|
+
Directly modified
|
|
224
|
+
- KnowledgeRepository (src/repositories/knowledge.ts)
|
|
225
|
+
Direct dependency
|
|
226
|
+
- ProgressTracker (src/tracking/progress.ts)
|
|
227
|
+
Direct dependency
|
|
228
|
+
|
|
229
|
+
⚠ РИСКИ:
|
|
230
|
+
|
|
231
|
+
[HIGH] Change affects 12 critical components
|
|
232
|
+
💡 Consider breaking into smaller changes
|
|
233
|
+
|
|
234
|
+
[CRITICAL] Modification may break API contracts
|
|
235
|
+
💡 Review and update all API consumers
|
|
236
|
+
|
|
237
|
+
✅ РЕКОМЕНДАЦИИ:
|
|
238
|
+
|
|
239
|
+
[CRITICAL] Review all affected components
|
|
240
|
+
47 components will be affected by this change
|
|
241
|
+
|
|
242
|
+
[CRITICAL] Test critical components
|
|
243
|
+
Focus on: CourseService, KnowledgeRepository, ProgressTracker
|
|
244
|
+
|
|
245
|
+
[CRITICAL] Address high-severity risks
|
|
246
|
+
Change affects 12 critical components; Modification may break API contracts
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
#### 3. Семантический поиск
|
|
250
|
+
|
|
251
|
+
```bash
|
|
252
|
+
npx tsx src/cli.ts search \
|
|
253
|
+
--query "функции для обработки платежей" \
|
|
254
|
+
--limit 5
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
Результат:
|
|
258
|
+
```
|
|
259
|
+
🔍 РЕЗУЛЬТАТЫ ПОИСКА:
|
|
260
|
+
|
|
261
|
+
1. src/payments/processor.ts:45
|
|
262
|
+
Релевантность: 94.23%
|
|
263
|
+
export class PaymentProcessor { processPayment(...)
|
|
264
|
+
|
|
265
|
+
2. src/payments/stripe.ts:12
|
|
266
|
+
Релевантность: 87.15%
|
|
267
|
+
async function handleStripePayment(...)
|
|
268
|
+
|
|
269
|
+
3. src/billing/charge.ts:78
|
|
270
|
+
Релевантность: 82.34%
|
|
271
|
+
function calculateCharge(amount, currency)
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
#### 4. Вопрос архитектору
|
|
275
|
+
|
|
276
|
+
```bash
|
|
277
|
+
npx tsx src/cli.ts ask \
|
|
278
|
+
--question "Как организована работа с платежами в системе?"
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
Результат:
|
|
282
|
+
```
|
|
283
|
+
💬 ОТВЕТ AI АРХИТЕКТОРА:
|
|
284
|
+
|
|
285
|
+
В системе используется слоистая архитектура для работы с платежами:
|
|
286
|
+
|
|
287
|
+
1. **Слой домена** (src/domain/payments)
|
|
288
|
+
- PaymentEntity - доменная сущность платежа
|
|
289
|
+
- PaymentStatus - статусы платежа
|
|
290
|
+
- Бизнес-правила валидации
|
|
291
|
+
|
|
292
|
+
2. **Слой приложения** (src/application/payments)
|
|
293
|
+
- PaymentService - основной сервис обработки платежей
|
|
294
|
+
- UseCase классы для различных сценариев
|
|
295
|
+
|
|
296
|
+
3. **Инфраструктурный слой** (src/infrastructure/payments)
|
|
297
|
+
- StripeAdapter - интеграция со Stripe
|
|
298
|
+
- PaymentRepository - персистентность
|
|
299
|
+
- EventPublisher - публикация событий
|
|
300
|
+
|
|
301
|
+
Платежи обрабатываются асинхронно через очередь, что обеспечивает
|
|
302
|
+
надёжность и возможность повторных попыток при ошибках.
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
#### 5. Генерация документации
|
|
306
|
+
|
|
307
|
+
```bash
|
|
308
|
+
npx tsx src/cli.ts docs --output ARCHITECTURE.md
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
Создаст подробную документацию по архитектуре проекта.
|
|
312
|
+
|
|
313
|
+
## Поддерживаемые LLM провайдеры
|
|
314
|
+
|
|
315
|
+
AIArhitector поддерживает несколько LLM провайдеров:
|
|
316
|
+
|
|
317
|
+
### 1. **Claude (Anthropic)** ⭐ Рекомендуется
|
|
318
|
+
- Лучшее качество для архитектурных решений
|
|
319
|
+
- Модели: `claude-opus-4-20250514`, `claude-sonnet-4-20250514`
|
|
320
|
+
- Контекст: до 200K токенов
|
|
321
|
+
- Цена: $$$ (высокая)
|
|
322
|
+
|
|
323
|
+
### 2. **GPT (OpenAI)**
|
|
324
|
+
- Отличное качество
|
|
325
|
+
- Модели: `gpt-4-turbo-preview`, `gpt-4`, `gpt-3.5-turbo`
|
|
326
|
+
- Контекст: до 128K токенов
|
|
327
|
+
- Цена: $$ (средняя-высокая)
|
|
328
|
+
|
|
329
|
+
### 3. **DeepSeek** 💰 Бюджетный вариант ⚡ С автооптимизацией
|
|
330
|
+
- Приемлемое качество для простых задач
|
|
331
|
+
- Модели: `deepseek-chat`, `deepseek-coder`
|
|
332
|
+
- Контекст: 16-32K токенов
|
|
333
|
+
- Цена: $ (очень низкая, ~99% дешевле GPT-4)
|
|
334
|
+
- **🚀 Автоматическая оптимизация промптов для лучшего качества!**
|
|
335
|
+
|
|
336
|
+
⚠️ **Важно**: Для критических архитектурных решений рекомендуется Claude или GPT-4. DeepSeek подходит для разработки/тестирования.
|
|
337
|
+
|
|
338
|
+
📖 **Документация**:
|
|
339
|
+
- [DEEPSEEK.md](./DEEPSEEK.md) - Подробное сравнение плюсов/минусов
|
|
340
|
+
- [DEEPSEEK_OPTIMIZATION.md](./DEEPSEEK_OPTIMIZATION.md) - Как работает автооптимизация
|
|
341
|
+
|
|
342
|
+
#### Что делает автооптимизация:
|
|
343
|
+
|
|
344
|
+
1. **Упрощает промпты** - убирает сложные формулировки
|
|
345
|
+
2. **Сокращает контекст** - только топ-3 самых важных фрагмента
|
|
346
|
+
3. **Переводит на английский** - DeepSeek лучше понимает английский
|
|
347
|
+
4. **Структурирует вывод** - требует четкий формат ответа
|
|
348
|
+
5. **Обрезает до оптимума** - 8000 символов вместо 32K
|
|
349
|
+
6. **Retry с упрощением** - до 2 попыток с прогрессивным упрощением
|
|
350
|
+
|
|
351
|
+
**Результат**: DeepSeek работает в **1.5-2x точнее** с автооптимизацией!
|
|
352
|
+
|
|
353
|
+
### Пример использования DeepSeek
|
|
354
|
+
|
|
355
|
+
```typescript
|
|
356
|
+
const ai = new AIArhitector({
|
|
357
|
+
rootDir: '/path/to/project',
|
|
358
|
+
llm: {
|
|
359
|
+
provider: 'deepseek', // вместо 'anthropic' или 'openai'
|
|
360
|
+
model: 'deepseek-chat',
|
|
361
|
+
temperature: 0.1,
|
|
362
|
+
maxTokens: 4096
|
|
363
|
+
},
|
|
364
|
+
vectorStore: {
|
|
365
|
+
url: 'http://localhost:6333',
|
|
366
|
+
collectionName: 'my-project'
|
|
367
|
+
}
|
|
368
|
+
});
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
## Платформы
|
|
372
|
+
|
|
373
|
+
### 🐧 Linux
|
|
374
|
+
|
|
375
|
+
Для Linux созданы shell-скрипты:
|
|
376
|
+
|
|
377
|
+
- **`setup.sh`** - Автоматическая установка и настройка
|
|
378
|
+
- **`analyze-project.sh`** - Полный анализ проекта
|
|
379
|
+
- **`ask-question.sh`** - Интерактивные вопросы AI
|
|
380
|
+
- **`search-code.sh`** - Семантический поиск
|
|
381
|
+
- **`test-full.sh`** - Проверка всей системы
|
|
382
|
+
- **`start-qdrant-docker.sh`** - Запуск Qdrant в Docker
|
|
383
|
+
|
|
384
|
+
**Быстрый старт Linux:**
|
|
385
|
+
```bash
|
|
386
|
+
# 1. Запустить установку
|
|
387
|
+
chmod +x setup.sh
|
|
388
|
+
./setup.sh
|
|
389
|
+
|
|
390
|
+
# 2. Настроить .env с API ключами
|
|
391
|
+
nano .env
|
|
392
|
+
|
|
393
|
+
# 3. Запустить анализ
|
|
394
|
+
./analyze-project.sh
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
📖 **Документация:**
|
|
398
|
+
- [SETUP_LINUX.md](./SETUP_LINUX.md) - Полное руководство по установке
|
|
399
|
+
- [QUICKSTART_LINUX.md](./QUICKSTART_LINUX.md) - Быстрый старт за 5 минут
|
|
400
|
+
|
|
401
|
+
**Преимущества Linux:**
|
|
402
|
+
- ✅ Лучше для production серверов
|
|
403
|
+
- ✅ Легкая автоматизация (cron jobs)
|
|
404
|
+
- ✅ Нет проблем с кодировкой
|
|
405
|
+
- ✅ Отличная поддержка Docker
|
|
406
|
+
- ✅ SSH доступ для удаленной работы
|
|
407
|
+
|
|
408
|
+
## Программное использование
|
|
409
|
+
|
|
410
|
+
```typescript
|
|
411
|
+
import { AIArhitector, Change } from 'aiarhitector';
|
|
412
|
+
|
|
413
|
+
// Создание экземпляра
|
|
414
|
+
const ai = new AIArhitector({
|
|
415
|
+
rootDir: '/path/to/project',
|
|
416
|
+
llm: {
|
|
417
|
+
provider: 'anthropic',
|
|
418
|
+
model: 'claude-sonnet-4-20250514',
|
|
419
|
+
temperature: 0.1,
|
|
420
|
+
maxTokens: 4096
|
|
421
|
+
},
|
|
422
|
+
vectorStore: {
|
|
423
|
+
url: 'http://localhost:6333',
|
|
424
|
+
collectionName: 'my-project'
|
|
425
|
+
}
|
|
426
|
+
});
|
|
427
|
+
|
|
428
|
+
// Инициализация
|
|
429
|
+
await ai.initialize();
|
|
430
|
+
|
|
431
|
+
// Анализ изменений
|
|
432
|
+
const change: Change = {
|
|
433
|
+
type: 'modify',
|
|
434
|
+
description: 'Обновление API аутентификации',
|
|
435
|
+
files: ['src/auth/api.ts'],
|
|
436
|
+
symbols: ['AuthController', 'loginUser']
|
|
437
|
+
};
|
|
438
|
+
|
|
439
|
+
const impact = await ai.analyzeChange(change);
|
|
440
|
+
|
|
441
|
+
console.log('Затронутые компоненты:', impact.affectedNodes.length);
|
|
442
|
+
console.log('Риски:', impact.risks);
|
|
443
|
+
console.log('Рекомендации:', impact.recommendations);
|
|
444
|
+
|
|
445
|
+
// Семантический поиск
|
|
446
|
+
const results = await ai.searchCode('функции валидации email', 5);
|
|
447
|
+
|
|
448
|
+
// Вопрос архитектору
|
|
449
|
+
const answer = await ai.askQuestion(
|
|
450
|
+
'Какие компоненты отвечают за аутентификацию?'
|
|
451
|
+
);
|
|
452
|
+
|
|
453
|
+
// Ревью кода
|
|
454
|
+
const review = await ai.reviewCode(
|
|
455
|
+
codeContent,
|
|
456
|
+
['src/auth/api.ts'],
|
|
457
|
+
);
|
|
458
|
+
|
|
459
|
+
// Генерация документации
|
|
460
|
+
const docs = await ai.generateDocumentation();
|
|
461
|
+
```
|
|
462
|
+
|
|
463
|
+
## Конфигурация архитектуры
|
|
464
|
+
|
|
465
|
+
Создайте файл `.aiarhitector/architecture.json`:
|
|
466
|
+
|
|
467
|
+
```json
|
|
468
|
+
{
|
|
469
|
+
"boundedContexts": [
|
|
470
|
+
{
|
|
471
|
+
"id": "core",
|
|
472
|
+
"name": "Core Domain",
|
|
473
|
+
"description": "Основная бизнес-логика",
|
|
474
|
+
"modules": ["src/core"],
|
|
475
|
+
"dependencies": [],
|
|
476
|
+
"prohibitedDependencies": ["src/ui", "src/external"]
|
|
477
|
+
}
|
|
478
|
+
],
|
|
479
|
+
"entities": [
|
|
480
|
+
{
|
|
481
|
+
"id": "user",
|
|
482
|
+
"name": "User",
|
|
483
|
+
"context": "core",
|
|
484
|
+
"properties": [...],
|
|
485
|
+
"relationships": [...],
|
|
486
|
+
"invariants": [...]
|
|
487
|
+
}
|
|
488
|
+
],
|
|
489
|
+
"rules": [],
|
|
490
|
+
"invariants": []
|
|
491
|
+
}
|
|
492
|
+
```
|
|
493
|
+
|
|
494
|
+
Пример см. в `.aiarhitector/architecture.example.json`
|
|
495
|
+
|
|
496
|
+
## Этапы внедрения
|
|
497
|
+
|
|
498
|
+
### Этап 1 (2-3 недели)
|
|
499
|
+
- ✅ Индексация кода (AST + граф)
|
|
500
|
+
- ✅ Семантическая память (векторная БД)
|
|
501
|
+
- ✅ Анализ влияния изменений (read-only)
|
|
502
|
+
|
|
503
|
+
### Этап 2 (1-2 недели)
|
|
504
|
+
- ⏳ PR-анализ
|
|
505
|
+
- ⏳ Автоматические подсказки
|
|
506
|
+
- ⏳ Интеграция с IDE
|
|
507
|
+
|
|
508
|
+
### Этап 3 (2-3 недели)
|
|
509
|
+
- ⏳ Микро-рефакторинг
|
|
510
|
+
- ⏳ Автоматическая документация
|
|
511
|
+
- ⏳ Continuous learning
|
|
512
|
+
|
|
513
|
+
## Технологический стек
|
|
514
|
+
|
|
515
|
+
- **Языки**: TypeScript
|
|
516
|
+
- **AST**: Tree-sitter (TypeScript, JavaScript, Python)
|
|
517
|
+
- **Vector DB**: Qdrant
|
|
518
|
+
- **LLM**: Anthropic Claude, OpenAI GPT
|
|
519
|
+
- **Database**: PostgreSQL (опционально)
|
|
520
|
+
- **CLI**: Commander.js
|
|
521
|
+
- **Logging**: Custom logger with Chalk
|
|
522
|
+
|
|
523
|
+
## Производительность
|
|
524
|
+
|
|
525
|
+
- Индексация 1000 файлов: ~30 секунд
|
|
526
|
+
- Анализ влияния: ~2-5 секунд
|
|
527
|
+
- Семантический поиск: ~100ms
|
|
528
|
+
- LLM запрос: ~2-10 секунд (зависит от модели)
|
|
529
|
+
|
|
530
|
+
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dead Code Detector
|
|
3
|
+
*
|
|
4
|
+
* Обнаружение неиспользуемого кода:
|
|
5
|
+
* - Неиспользуемые экспорты
|
|
6
|
+
* - Неиспользуемые переменные
|
|
7
|
+
* - Unreachable code
|
|
8
|
+
* - Пустые функции/классы
|
|
9
|
+
* - Закомментированный код
|
|
10
|
+
*/
|
|
11
|
+
import { DependencyGraph, Symbol } from '../types/index.js';
|
|
12
|
+
export interface DeadCodeResult {
|
|
13
|
+
unusedExports: UnusedExport[];
|
|
14
|
+
unusedVariables: UnusedVariable[];
|
|
15
|
+
unreachableCode: UnreachableCode[];
|
|
16
|
+
emptyBlocks: EmptyBlock[];
|
|
17
|
+
commentedCode: CommentedCode[];
|
|
18
|
+
summary: DeadCodeSummary;
|
|
19
|
+
}
|
|
20
|
+
export interface UnusedExport {
|
|
21
|
+
name: string;
|
|
22
|
+
type: string;
|
|
23
|
+
file: string;
|
|
24
|
+
line: number;
|
|
25
|
+
suggestion: string;
|
|
26
|
+
}
|
|
27
|
+
export interface UnusedVariable {
|
|
28
|
+
name: string;
|
|
29
|
+
file: string;
|
|
30
|
+
line: number;
|
|
31
|
+
scope: string;
|
|
32
|
+
}
|
|
33
|
+
export interface UnreachableCode {
|
|
34
|
+
file: string;
|
|
35
|
+
startLine: number;
|
|
36
|
+
endLine: number;
|
|
37
|
+
reason: string;
|
|
38
|
+
}
|
|
39
|
+
export interface EmptyBlock {
|
|
40
|
+
type: 'function' | 'class' | 'if' | 'catch' | 'loop';
|
|
41
|
+
name?: string;
|
|
42
|
+
file: string;
|
|
43
|
+
line: number;
|
|
44
|
+
}
|
|
45
|
+
export interface CommentedCode {
|
|
46
|
+
file: string;
|
|
47
|
+
startLine: number;
|
|
48
|
+
endLine: number;
|
|
49
|
+
linesCount: number;
|
|
50
|
+
preview: string;
|
|
51
|
+
}
|
|
52
|
+
export interface DeadCodeSummary {
|
|
53
|
+
totalIssues: number;
|
|
54
|
+
unusedExportsCount: number;
|
|
55
|
+
unusedVariablesCount: number;
|
|
56
|
+
unreachableCodeLines: number;
|
|
57
|
+
emptyBlocksCount: number;
|
|
58
|
+
commentedCodeLines: number;
|
|
59
|
+
estimatedCleanupHours: number;
|
|
60
|
+
}
|
|
61
|
+
export declare class DeadCodeDetector {
|
|
62
|
+
/**
|
|
63
|
+
* Анализ мёртвого кода
|
|
64
|
+
*/
|
|
65
|
+
analyze(graph: DependencyGraph, symbols: Map<string, Symbol>, fileContents: Map<string, string>): Promise<DeadCodeResult>;
|
|
66
|
+
/**
|
|
67
|
+
* Поиск неиспользуемых экспортов
|
|
68
|
+
*/
|
|
69
|
+
private findUnusedExports;
|
|
70
|
+
/**
|
|
71
|
+
* Поиск неиспользуемых переменных
|
|
72
|
+
*/
|
|
73
|
+
private findUnusedVariables;
|
|
74
|
+
/**
|
|
75
|
+
* Поиск недостижимого кода
|
|
76
|
+
*/
|
|
77
|
+
private findUnreachableCode;
|
|
78
|
+
/**
|
|
79
|
+
* Поиск пустых блоков
|
|
80
|
+
*/
|
|
81
|
+
private findEmptyBlocks;
|
|
82
|
+
/**
|
|
83
|
+
* Поиск закомментированного кода
|
|
84
|
+
*/
|
|
85
|
+
private findCommentedCode;
|
|
86
|
+
/**
|
|
87
|
+
* Подсказка для неиспользуемого экспорта
|
|
88
|
+
*/
|
|
89
|
+
private getSuggestionForUnusedExport;
|
|
90
|
+
/**
|
|
91
|
+
* Сводка
|
|
92
|
+
*/
|
|
93
|
+
private calculateSummary;
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=dead-code.d.ts.map
|