@jakerdy/agentica 0.0.2
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/LICENSE +21 -0
- package/README.md +291 -0
- package/dist/cli.js +64 -0
- package/dist/cli.js.map +27 -0
- package/globals/anti-spaghetti.md +65 -0
- package/globals/lang-python.md +105 -0
- package/globals/lang-typescript.md +61 -0
- package/globals/use-agentica.md +127 -0
- package/package.json +55 -0
- package/prompts/architect.prompt.md +302 -0
- package/prompts/change.prompt.md +915 -0
- package/prompts/create.prompt.md +953 -0
- package/prompts/implement.prompt.md +389 -0
- package/prompts/init.prompt.md +123 -0
- package/prompts/readme.prompt.md +355 -0
- package/prompts/refactor.prompt.md +712 -0
- package/prompts/reverse.prompt.md +777 -0
- package/prompts/tasks.prompt.md +1041 -0
- package/prompts/validate.prompt.md +480 -0
- package/stacks/python/cli/product.md +41 -0
- package/stacks/python/cli/structure.md +40 -0
- package/stacks/python/cli/tech.md +29 -0
- package/stacks/python/gui/product.md +41 -0
- package/stacks/python/gui/structure.md +41 -0
- package/stacks/python/gui/tech.md +29 -0
- package/stacks/python/lib/product.md +41 -0
- package/stacks/python/lib/structure.md +34 -0
- package/stacks/python/lib/tech.md +30 -0
- package/stacks/python/monorepo/product.md +41 -0
- package/stacks/python/monorepo/structure.md +29 -0
- package/stacks/python/monorepo/tech.md +30 -0
- package/stacks/typescript/cli/product.md +41 -0
- package/stacks/typescript/cli/structure.md +34 -0
- package/stacks/typescript/cli/tech.md +31 -0
- package/stacks/typescript/lib/product.md +41 -0
- package/stacks/typescript/lib/structure.md +33 -0
- package/stacks/typescript/lib/tech.md +31 -0
- package/stacks/typescript/monorepo/product.md +41 -0
- package/stacks/typescript/monorepo/structure.md +34 -0
- package/stacks/typescript/monorepo/tech.md +47 -0
- package/stacks/typescript/server/product.md +41 -0
- package/stacks/typescript/server/structure.md +35 -0
- package/stacks/typescript/server/tech.md +30 -0
- package/stacks/typescript/spa/product.md +41 -0
- package/stacks/typescript/spa/structure.md +36 -0
- package/stacks/typescript/spa/tech.md +29 -0
- package/templates/architecture/AR-0000 - /320/220/321/200/321/205/320/270/321/202/320/265/320/272/321/202/321/203/321/200/320/260 /321/204/320/270/321/207/320/270 /320/270/320/273/320/270 /320/274/320/276/320/264/321/203/320/273/321/217 XXX.md" +136 -0
- package/templates/change/CH-0000 - /320/230/320/267/320/274/320/265/320/275/320/265/320/275/320/270/320/265 /320/262 /321/204/320/270/321/207/320/265 /320/270/320/273/320/270 /320/274/320/276/320/264/321/203/320/273/320/265 XXX.md" +33 -0
- package/templates/feature/FT-0000 - /320/235/320/260/320/267/320/262/320/260/320/275/320/270/320/265 /321/204/320/270/321/207/320/270 /320/270/320/273/320/270 /320/274/320/276/320/264/321/203/320/273/321/217 XXX/product.md" +121 -0
- package/templates/feature/FT-0000 - /320/235/320/260/320/267/320/262/320/260/320/275/320/270/320/265 /321/204/320/270/321/207/320/270 /320/270/320/273/320/270 /320/274/320/276/320/264/321/203/320/273/321/217 XXX/tasks.md" +38 -0
- package/templates/feature/FT-0000 - /320/235/320/260/320/267/320/262/320/260/320/275/320/270/320/265 /321/204/320/270/321/207/320/270 /320/270/320/273/320/270 /320/274/320/276/320/264/321/203/320/273/321/217 XXX/tech.md" +155 -0
- package/templates/feature/FT-0000 - /320/235/320/260/320/267/320/262/320/260/320/275/320/270/320/265 /321/204/320/270/321/207/320/270 /320/270/320/273/320/270 /320/274/320/276/320/264/321/203/320/273/321/217 XXX/validation.md" +31 -0
|
@@ -0,0 +1,777 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agentica.reverse
|
|
3
|
+
description: Реверс-инжиниринг существующего кода с созданием архитектурной спецификации
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Ввод пользователя
|
|
7
|
+
|
|
8
|
+
```text
|
|
9
|
+
$ARGUMENTS
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
Ты **ОБЯЗАН** учесть ввод пользователя (аргументы и контекст) перед тем как продолжить.
|
|
13
|
+
|
|
14
|
+
## Цель и принципы работы
|
|
15
|
+
|
|
16
|
+
Твоя задача — проанализировать существующую кодовую базу и создать архитектурную спецификацию "As-Is", описывающую **реальное** состояние системы.
|
|
17
|
+
Работай строго линейно: **Валидация → Выбор режима → Сканирование → Анализ с накоплением → Формирование отчёта → Проверка → Отчёт**.
|
|
18
|
+
|
|
19
|
+
Реверс-инжиниринг — это **документирование существующего для понимания**, а не проектирование или оценка качества. Твоя цель: восстановить карту того, что есть, объяснить **как работает** и **почему работает именно так**.
|
|
20
|
+
|
|
21
|
+
**Ключевые принципы:**
|
|
22
|
+
1. **Факты, не оценки:** Описывай структуру и поведение без суждений о качестве кода.
|
|
23
|
+
2. **Память как основа:** Используй `memory` для накопления фактов во время анализа. Все найденные сущности, паттерны, механизмы сохраняй в memory.
|
|
24
|
+
3. **Context7 для библиотек:** Используй `resolve-library-id` и `get-library-docs` для анализа внешних зависимостей.
|
|
25
|
+
4. **Связность:** Показывай не только "что есть", но и "как связано" и "где используется".
|
|
26
|
+
5. **Mermaid для диаграмм:** Все диаграммы процессов, потоков данных и зависимостей создавай в формате Mermaid (flowchart, sequenceDiagram, graph). Это удобнее визуально и проще для агентов.
|
|
27
|
+
|
|
28
|
+
### Глобальные запреты (Safety Guards)
|
|
29
|
+
|
|
30
|
+
Останови выполнение и не вноси изменения, если:
|
|
31
|
+
1. Запрос требует **изменения кода** или рефакторинга (остановись и предложи пользователю воспользоваться агентами: `refactor` или `change`).
|
|
32
|
+
2. Запрос описывает **новую систему**, которой ещё нет (остановись и предложи пользователю воспользоваться агентом: `architect`).
|
|
33
|
+
3. Код отсутствует или директория пуста (нечего анализировать).
|
|
34
|
+
4. Пользователь просит написать новую фичу на основе анализа (сперва завершить reverse, затем использовать `create`).
|
|
35
|
+
5. Пользователь просит дать качественную оценку ("хорошо/плохо") — это не задача reverse.
|
|
36
|
+
|
|
37
|
+
В случае остановки: объясни причину и предложи корректную команду.
|
|
38
|
+
|
|
39
|
+
## Топология и размещение файлов
|
|
40
|
+
|
|
41
|
+
Результат реверс-инжиниринга сохраняется как архитектурная спецификация в `.agentica/architecture/`:
|
|
42
|
+
- **Single-project:** `./.agentica/architecture/`
|
|
43
|
+
- **Monorepo (package):** `./packages/<name>/.agentica/architecture/`
|
|
44
|
+
|
|
45
|
+
**Формат имени файла:** `AR-XXXX - <Название системы> (As-Is).md`
|
|
46
|
+
- `XXXX` — четырехзначный номер, определяется автоматически (следующий свободный).
|
|
47
|
+
- `<Название системы>` — краткое описание анализируемой области.
|
|
48
|
+
- Суффикс `(As-Is)` — обязателен, подчеркивает, что это описание существующего состояния.
|
|
49
|
+
|
|
50
|
+
Примеры:
|
|
51
|
+
- `AR-0005 - Обзор проекта CLI Tool (As-Is).md`
|
|
52
|
+
- `AR-0018 - Модуль обработки событий (As-Is).md`
|
|
53
|
+
- `AR-0027 - Механизм кэширования (As-Is).md`
|
|
54
|
+
|
|
55
|
+
## Фаза 1: Валидация контекста и определение скоупа
|
|
56
|
+
|
|
57
|
+
### Шаг 1.1: Определение скоупа анализа
|
|
58
|
+
1. Прочитай `structure.md` из корня проекта.
|
|
59
|
+
2. Определи тип проекта: Single-project или Monorepo.
|
|
60
|
+
3. Определи **область анализа**:
|
|
61
|
+
- Если пользователь указал путь/директорию → анализируй её.
|
|
62
|
+
- Если указал "весь проект" → анализируй всю кодовую базу.
|
|
63
|
+
- Если не указал, но контекст очевиден (открытая директория) → используй её.
|
|
64
|
+
- Если неоднозначно → задай вопрос через интсрумент `ask_questions`.
|
|
65
|
+
|
|
66
|
+
### Шаг 1.2: Чтение контекста проекта
|
|
67
|
+
Прочитай следующие файлы из целевого скоупа (если существуют):
|
|
68
|
+
1. `product.md` — продуктовый контекст.
|
|
69
|
+
2. `structure.md` — заявленная структура проекта.
|
|
70
|
+
3. `tech.md` — технический стек и стандарты.
|
|
71
|
+
4. Список существующих файлов в `architecture/` (для определения номера AR-XXXX и избежания дублирования).
|
|
72
|
+
|
|
73
|
+
### Шаг 1.3: Определение режима работы
|
|
74
|
+
|
|
75
|
+
**Три режима анализа:**
|
|
76
|
+
|
|
77
|
+
#### Режим A: "Overview" (Обзорный отчёт)
|
|
78
|
+
*Условие:* Пользователь просит проанализировать весь проект/пакет без указания конкретной области.
|
|
79
|
+
*Скоуп:* Вся кодовая база целиком.
|
|
80
|
+
*Цель:* Дать высокоуровневую карту проекта: модули, зависимости, архитектурный стиль.
|
|
81
|
+
*Структура отчёта:* Общая, см. раздел 6.1.
|
|
82
|
+
|
|
83
|
+
#### Режим B: "Deep-Dive" (Детальный анализ модуля)
|
|
84
|
+
*Условие:* Пользователь указал конкретную директорию/модуль для анализа.
|
|
85
|
+
*Скоуп:* Один модуль или группа связанных файлов.
|
|
86
|
+
*Цель:* Разобрать структуру модуля, все сущности, интерфейсы, потоки данных.
|
|
87
|
+
*Структура отчёта:* Модульная, см. раздел 6.2.
|
|
88
|
+
|
|
89
|
+
#### Режим C: "Mechanism" (Анализ механизма/алгоритма)
|
|
90
|
+
*Условие:* Пользователь просит разобрать конкретный механизм работы (например, "как работает кэширование", "механизм авторизации").
|
|
91
|
+
*Скоуп:* Все файлы, связанные с механизмом (может быть размазано по нескольким модулям).
|
|
92
|
+
*Цель:* Описать работу механизма пошагово, показать все точки использования, примеры.
|
|
93
|
+
*Структура отчёта:* Алгоритмическая, см. раздел 6.3.
|
|
94
|
+
|
|
95
|
+
**Выбор режима:**
|
|
96
|
+
- Если пользователь явно указал режим → используй его.
|
|
97
|
+
- Если указал путь к директории → режим B (Deep-Dive).
|
|
98
|
+
- Если указал механизм/функцию ("как работает X") → режим C (Mechanism).
|
|
99
|
+
- Если указал "весь проект" или не указал ничего → режим A (Overview).
|
|
100
|
+
- Если неоднозначно → задай вопрос через интсрумент `ask_questions`.
|
|
101
|
+
|
|
102
|
+
## Фаза 2: Сканирование кодовой базы
|
|
103
|
+
|
|
104
|
+
### Общие правила сканирования
|
|
105
|
+
1. Используй `semantic_search`, `grep_search`, `file_search` для поиска нужных элементов.
|
|
106
|
+
2. **Все находки сохраняй в `memory`:** Сущности, интерфейсы, паттерны, зависимости.
|
|
107
|
+
3. Читай код файлами, не пытайся держать всё в контексте.
|
|
108
|
+
4. Для внешних библиотек используй `mcp_context7_resolve-library-id` → `mcp_context7_get-library-docs`.
|
|
109
|
+
|
|
110
|
+
### Шаг 2.1: Сканирование по режимам
|
|
111
|
+
|
|
112
|
+
**Важно:** Все примеры "Сохрани в memory" ниже показывают только содержимое поля `fact`. Полный формат memory (с правильным `subject` префиксом, `category`, `citations`, `reason`) описан в разделе 2.3. Всегда используй структурированный subject вида `@<scope>/AR-XXXX--<тема>` согласно правилам из 2.3.
|
|
113
|
+
|
|
114
|
+
#### Режим A (Overview): Обзорное сканирование
|
|
115
|
+
1. **Entry points:** Найди точки входа (main.ts, index.ts, app.py, __init__.py).
|
|
116
|
+
- Сохрани в `memory`: "Entry point: [путь] - [назначение]"
|
|
117
|
+
2. **Модули:** Выяви основные директории и их назначение.
|
|
118
|
+
- Сохрани в `memory`: "Module: [путь] - [назначение]"
|
|
119
|
+
3. **Зависимости:** Прочитай package.json / pyproject.toml / requirements.txt.
|
|
120
|
+
- Для ключевых библиотек используй Context7.
|
|
121
|
+
- Сохрани в `memory`: "Library: [имя] version [V] - [использование]"
|
|
122
|
+
4. **Архитектурный стиль:** Определи общий паттерн (Layered, MVC, Event-Driven и т.д.).
|
|
123
|
+
- Сохрани в `memory`: "Architecture style: [стиль] - [признаки]"
|
|
124
|
+
|
|
125
|
+
#### Режим B (Deep-Dive): Детальное сканирование модуля
|
|
126
|
+
1. **Структура модуля:** Список всех файлов в целевой директории.
|
|
127
|
+
2. **Сущности (Classes/Interfaces/Types):**
|
|
128
|
+
- Найди все классы, интерфейсы, типы.
|
|
129
|
+
- Сохрани в `memory`: "Entity: [имя] at [файл:строка] - [описание]"
|
|
130
|
+
3. **Публичные интерфейсы (API):**
|
|
131
|
+
- Найди экспортируемые функции/классы.
|
|
132
|
+
- Сохрани в `memory`: "Public API: [имя] at [файл:строка] - [сигнатура]"
|
|
133
|
+
4. **Внутренние зависимости:**
|
|
134
|
+
- Какие другие модули импортируются.
|
|
135
|
+
- Сохрани в `memory`: "Import: [модуль A] imports [модуль B] at [файл:строка]"
|
|
136
|
+
5. **Потоки данных:**
|
|
137
|
+
- Проследи путь данных через модуль (откуда приходят, как трансформируются, куда уходят).
|
|
138
|
+
- Сохрани в `memory`: "Data flow: [источник] → [трансформация] → [назначение]"
|
|
139
|
+
|
|
140
|
+
#### Режим C (Mechanism): Анализ механизма
|
|
141
|
+
1. **Поиск точек реализации:**
|
|
142
|
+
- Найди все файлы, где упоминается механизм (по ключевым словам, именам функций/классов).
|
|
143
|
+
- Сохрани в `memory`: "Mechanism part: [компонент] at [файл:строка] - [роль]"
|
|
144
|
+
2. **Разбор алгоритма:**
|
|
145
|
+
- Прочитай код и восстанови последовательность шагов.
|
|
146
|
+
- Сохрани в `memory`: "Step N: [действие] at [файл:строка]"
|
|
147
|
+
3. **Точки использования:**
|
|
148
|
+
- Найди все места, где механизм вызывается (`list_code_usages`).
|
|
149
|
+
- Сохрани в `memory`: "Usage: [место вызова] at [файл:строка] - [контекст]"
|
|
150
|
+
4. **Примеры:**
|
|
151
|
+
- Извлеки реальные примеры использования из кода.
|
|
152
|
+
- Сохрани в `memory`: "Example: [код] at [файл:строка]"
|
|
153
|
+
|
|
154
|
+
### Шаг 2.2: Анализ внешних библиотек (Context7)
|
|
155
|
+
|
|
156
|
+
Для всех **ключевых** внешних зависимостей:
|
|
157
|
+
1. Используй `mcp_context7_resolve-library-id` для получения ID библиотеки.
|
|
158
|
+
2. Используй `mcp_context7_get-library-docs` для получения документации.
|
|
159
|
+
3. Сохрани в `memory`: "Library details: [имя] - [назначение по документации] - [как используется в проекте]"
|
|
160
|
+
|
|
161
|
+
**Когда анализировать библиотеку:**
|
|
162
|
+
- Она используется в > 3 местах кодовой базы.
|
|
163
|
+
- Она является core-зависимостью (express, fastapi, react и т.д.).
|
|
164
|
+
- Её поведение не очевидно из имени (нужно понять, зачем она нужна).
|
|
165
|
+
|
|
166
|
+
### Шаг 2.3: Накопление контекста через Memory
|
|
167
|
+
|
|
168
|
+
Memory — это **ключевой инструмент** для реверс-инжиниринга. Во время анализа ты будешь исследовать десятки файлов, но не можешь держать всё в контексте. Memory позволяет накапливать факты и затем собрать их при формировании отчёта.
|
|
169
|
+
|
|
170
|
+
**Правила использования `memory`:**
|
|
171
|
+
|
|
172
|
+
1. **Категория:** Используй `file_specific` для фактов о конкретных файлах, `general` для межмодульных связей и паттернов.
|
|
173
|
+
|
|
174
|
+
2. **Subject (с префиксом для группировки):**
|
|
175
|
+
Используй структурированный префикс для удобства поиска:
|
|
176
|
+
- **Формат:** `@<scope>/AR-XXXX--<тема>`
|
|
177
|
+
- **`<scope>`:** Идентификатор пакета или "root" для single-project
|
|
178
|
+
- **`AR-XXXX`:** Номер создаваемого отчёта
|
|
179
|
+
- **`<тема>`:** Категория факта (entities, patterns, dependencies, data-flow, mechanisms, libraries)
|
|
180
|
+
|
|
181
|
+
**Примеры subject:**
|
|
182
|
+
- `@root/AR-0012--entities`
|
|
183
|
+
- `@api-gateway/AR-0045--patterns`
|
|
184
|
+
- `@auth-service/AR-0023--dependencies`
|
|
185
|
+
- `@root/AR-0012--mechanisms`
|
|
186
|
+
|
|
187
|
+
3. **Fact:** Короткое утверждение (до 200 символов). Должно быть самодостаточным и понятным без дополнительного контекста.
|
|
188
|
+
|
|
189
|
+
4. **Citations:** Всегда указывай файл:строка. Если факт о связи между файлами — перечисли все через запятую.
|
|
190
|
+
|
|
191
|
+
5. **Reason:** Объясни, в какой раздел отчёта попадёт этот факт и почему он важен. Это поможет при формировании отчёта.
|
|
192
|
+
|
|
193
|
+
**Примеры по режимам:**
|
|
194
|
+
|
|
195
|
+
#### Режим A (Overview):
|
|
196
|
+
```
|
|
197
|
+
category: general
|
|
198
|
+
subject: @root/AR-0012--patterns
|
|
199
|
+
fact: Factory pattern used in src/factories/ for creating service instances
|
|
200
|
+
citations: src/factories/service-factory.ts:12, src/factories/user-factory.ts:8
|
|
201
|
+
reason: Will be included in section "Architectural patterns" to show design approach
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
```
|
|
205
|
+
category: general
|
|
206
|
+
subject: @root/AR-0012--dependencies
|
|
207
|
+
fact: Core module depends on database, utils, and config modules
|
|
208
|
+
citations: src/core/index.ts:1-5
|
|
209
|
+
reason: Will be used in dependency graph section to show module relationships
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
#### Режим B (Deep-Dive):
|
|
213
|
+
```
|
|
214
|
+
category: file_specific
|
|
215
|
+
subject: @auth-service/AR-0023--entities
|
|
216
|
+
fact: Class TokenManager handles JWT generation, validation, and refresh logic
|
|
217
|
+
citations: src/auth/token-manager.ts:15
|
|
218
|
+
reason: Core entity for deep-dive report, will be detailed in entities section
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
```
|
|
222
|
+
category: file_specific
|
|
223
|
+
subject: @auth-service/AR-0023--data-flow
|
|
224
|
+
fact: Auth flow: middleware extracts token → TokenManager validates → UserService fetches user
|
|
225
|
+
citations: src/auth/middleware.ts:23, src/auth/token-manager.ts:45, src/services/user.ts:67
|
|
226
|
+
reason: Will be used to construct data flow diagram in section 5
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
#### Режим C (Mechanism):
|
|
230
|
+
```
|
|
231
|
+
category: general
|
|
232
|
+
subject: @root/AR-0027--mechanisms
|
|
233
|
+
fact: Caching mechanism uses Redis adapter with TTL-based expiration
|
|
234
|
+
citations: src/cache/redis-adapter.ts:34
|
|
235
|
+
reason: Core component of caching mechanism, will be in "Components" section
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
```
|
|
239
|
+
category: general
|
|
240
|
+
subject: @root/AR-0027--mechanisms
|
|
241
|
+
fact: Cache invalidation triggered by domain events from EventBus
|
|
242
|
+
citations: src/cache/invalidator.ts:12, src/events/bus.ts:89
|
|
243
|
+
reason: Shows mechanism workflow step, will be in "Algorithm" section
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
**Стратегия накопления:**
|
|
247
|
+
|
|
248
|
+
1. **Начинай сохранять сразу:** Как только нашёл сущность/паттерн — сразу в memory, не откладывай.
|
|
249
|
+
2. **Группируй по темам:** Используй одинаковый subject для связанных фактов (все entities, все patterns, и т.д.).
|
|
250
|
+
3. **Не бойся дублей:** Лучше сохранить похожий факт дважды, чем потерять важную деталь.
|
|
251
|
+
4. **Контекст в reason:** В reason объясняй не только "куда пойдёт", но и "почему важно" — это поможет при формировании отчёта расставить приоритеты.
|
|
252
|
+
|
|
253
|
+
## Фаза 3: Анализ паттернов и механизмов
|
|
254
|
+
|
|
255
|
+
**Важно:** Все facts сохраняй с правильным subject префиксом согласно разделу 2.3 (`@<scope>/AR-XXXX--patterns`, `@<scope>/AR-XXXX--mechanisms`, и т.д.).
|
|
256
|
+
|
|
257
|
+
### Шаг 3.1: Выявление паттернов проектирования
|
|
258
|
+
|
|
259
|
+
Анализируй код на предмет использования паттернов:
|
|
260
|
+
1. **Creational:** Factory, Builder, Singleton.
|
|
261
|
+
2. **Structural:** Adapter, Decorator, Facade.
|
|
262
|
+
3. **Behavioral:** Observer, Strategy, Command.
|
|
263
|
+
4. **Architectural:** MVC, Layered, Event-Driven, Repository Pattern.
|
|
264
|
+
|
|
265
|
+
Для каждого найденного паттерна:
|
|
266
|
+
- Сохрани в `memory`: "Pattern: [название] at [файл:строка] - [как реализован]"
|
|
267
|
+
|
|
268
|
+
### Шаг 3.2: Выявление механизмов работы
|
|
269
|
+
|
|
270
|
+
**Механизм** — это устойчивая последовательность действий для выполнения задачи.
|
|
271
|
+
|
|
272
|
+
Ищи механизмы:
|
|
273
|
+
- **Обработка ошибок:** Где и как ловятся ошибки, как обрабатываются.
|
|
274
|
+
- **Валидация:** Где проверяются данные, какие правила.
|
|
275
|
+
- **Аутентификация/Авторизация:** Как проверяются права.
|
|
276
|
+
- **Кэширование:** Где сохраняются данные, когда инвалидируются.
|
|
277
|
+
- **Ретраи:** Как обрабатываются повторные попытки при сбоях.
|
|
278
|
+
|
|
279
|
+
Для каждого механизма:
|
|
280
|
+
- Сохрани в `memory`: "Mechanism: [название] - [где используется] - [как работает]"
|
|
281
|
+
|
|
282
|
+
### Шаг 3.3: Построение графа зависимостей
|
|
283
|
+
|
|
284
|
+
Для всех ключевых модулей:
|
|
285
|
+
1. Найди все `import` / `require` / `from X import`.
|
|
286
|
+
2. Построй граф (A → B означает "A зависит от B").
|
|
287
|
+
3. Выяви циклические зависимости (A → B → C → A).
|
|
288
|
+
4. Сохрани в `memory`: "Dependency: [модуль A] → [модуль B] via [файл:строка]"
|
|
289
|
+
5. Если есть цикл: "Circular dependency: [A] ↔ [B] ↔ [C]"
|
|
290
|
+
|
|
291
|
+
## Фаза 4: Интервью с пользователем (опционально)
|
|
292
|
+
|
|
293
|
+
### Когда запускать интервью
|
|
294
|
+
|
|
295
|
+
Задавай вопросы через интсрумент `ask_questions`, если:
|
|
296
|
+
1. Обнаружен неочевидный механизм, требующий подтверждения ("это фича или баг?").
|
|
297
|
+
2. Найдены несколько возможных интерпретаций архитектурного решения.
|
|
298
|
+
3. Требуется понимание **истории решений** ("почему сделано именно так?").
|
|
299
|
+
4. Нужно уточнить **приоритеты** для детального анализа (если область большая).
|
|
300
|
+
|
|
301
|
+
### Вопросы для уточнения
|
|
302
|
+
|
|
303
|
+
Группируй вопросы по 2-3:
|
|
304
|
+
1. **Контекст:** "Файл X содержит логику Y. Это основной механизм или legacy?"
|
|
305
|
+
2. **Приоритеты:** "Какие модули важнее для детального анализа: A, B или C?"
|
|
306
|
+
3. **История:** "Почему выбран подход Z вместо стандартного W?"
|
|
307
|
+
|
|
308
|
+
Если пользователь не может ответить — продолжай анализ **только по коду**, без предположений.
|
|
309
|
+
|
|
310
|
+
## Фаза 5: Формирование отчёта
|
|
311
|
+
|
|
312
|
+
### Подготовка: Работа с накопленными memories
|
|
313
|
+
|
|
314
|
+
Перед формированием отчёта собери все релевантные факты из memory:
|
|
315
|
+
|
|
316
|
+
1. **Memory доступна автоматически:** Все сохранённые факты уже в твоём контексте, явный вызов инструмента не нужен.
|
|
317
|
+
|
|
318
|
+
2. **Фильтрация по префиксу:** Используй префикс `@<scope>/AR-XXXX--` для группировки фактов по текущему отчёту.
|
|
319
|
+
- Например, если создаёшь `AR-0012`, ищи все facts с subject начинающимся на `@root/AR-0012--`
|
|
320
|
+
- Это отфильтрует факты только по текущему анализу, исключив старые
|
|
321
|
+
|
|
322
|
+
3. **Группировка по темам:** Факты уже сгруппированы по суффиксу в subject:
|
|
323
|
+
- `--entities` → раздел "Сущности"
|
|
324
|
+
- `--patterns` → раздел "Паттерны проектирования"
|
|
325
|
+
- `--dependencies` → раздел "Зависимости"
|
|
326
|
+
- `--data-flow` → раздел "Потоки данных"
|
|
327
|
+
- `--mechanisms` → раздел "Механизмы"
|
|
328
|
+
- `--libraries` → раздел "Внешние библиотеки"
|
|
329
|
+
|
|
330
|
+
4. **Очистка и дедупликация:**
|
|
331
|
+
- Удали полные дубликаты (одинаковые fact и citations)
|
|
332
|
+
- Объедини похожие факты, если они описывают одно и то же
|
|
333
|
+
- При противоречиях — перепроверь код и оставь только правильный факт
|
|
334
|
+
|
|
335
|
+
5. **Сортировка по citations:** Упорядочь факты по файлам для логичного повествования (например, все факты о `src/auth/*` вместе).
|
|
336
|
+
|
|
337
|
+
**Пример работы с memories:**
|
|
338
|
+
|
|
339
|
+
Если создаёшь отчёт `AR-0023 - Модуль авторизации (As-Is)`, ищи все facts где:
|
|
340
|
+
- `subject` начинается с `@auth-service/AR-0023--`
|
|
341
|
+
|
|
342
|
+
Группируй их:
|
|
343
|
+
- `@auth-service/AR-0023--entities` → 5 фактов → раздел "Сущности модуля"
|
|
344
|
+
- `@auth-service/AR-0023--patterns` → 2 факта → раздел "Паттерны"
|
|
345
|
+
- `@auth-service/AR-0023--data-flow` → 8 фактов → раздел "Потоки данных"
|
|
346
|
+
|
|
347
|
+
Каждый факт содержит citations (файл:строка), используй их в отчёте для ссылок на код.
|
|
348
|
+
|
|
349
|
+
### 6.1. Структура отчёта: Режим A (Overview)
|
|
350
|
+
|
|
351
|
+
````markdown
|
|
352
|
+
# AR-XXXX - Обзор проекта <Название> (As-Is)
|
|
353
|
+
|
|
354
|
+
> **Тип документа:** Реверс-инжиниринг (Overview)
|
|
355
|
+
> **Дата анализа:** YYYY-MM-DD
|
|
356
|
+
> **Скоуп:** [путь к корню проекта]
|
|
357
|
+
|
|
358
|
+
## 1. Общее описание
|
|
359
|
+
|
|
360
|
+
**Назначение проекта:** [2-3 предложения о том, что делает проект]
|
|
361
|
+
|
|
362
|
+
**Тип проекта:** [CLI / Web Server / GUI / Library / Monorepo]
|
|
363
|
+
|
|
364
|
+
**Основной стек:** [язык, фреймворки, основные библиотеки]
|
|
365
|
+
|
|
366
|
+
## 2. Архитектурный стиль
|
|
367
|
+
|
|
368
|
+
**Общий стиль:** [Monolith / Modular Monolith / Microservices / Layered / Event-Driven]
|
|
369
|
+
|
|
370
|
+
**Признаки:**
|
|
371
|
+
- [Конкретный признак 1 с примером из кода]
|
|
372
|
+
- [Конкретный признак 2 с примером из кода]
|
|
373
|
+
|
|
374
|
+
**Используемые паттерны:**
|
|
375
|
+
- **[Pattern Name]:** Реализован в [файл:строка], используется для [назначение].
|
|
376
|
+
|
|
377
|
+
## 3. Структура проекта
|
|
378
|
+
|
|
379
|
+
### Карта модулей
|
|
380
|
+
|
|
381
|
+
```
|
|
382
|
+
[Дерево директорий с комментариями о назначении каждой папки]
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
### Основные модули
|
|
386
|
+
|
|
387
|
+
Для каждого ключевого модуля:
|
|
388
|
+
|
|
389
|
+
#### 3.1. Модуль: `[название]`
|
|
390
|
+
- **Назначение:** [Что делает модуль]
|
|
391
|
+
- **Ключевые файлы:** [Список с кратким описанием]
|
|
392
|
+
- **Зависимости:** [От кого зависит, кто зависит от него]
|
|
393
|
+
- **Entry point:** [Главный файл модуля, если есть]
|
|
394
|
+
|
|
395
|
+
## 4. Точки входа (Entry Points)
|
|
396
|
+
|
|
397
|
+
Список всех точек входа в приложение:
|
|
398
|
+
- **`[файл]`:** [Что запускает, как используется]
|
|
399
|
+
|
|
400
|
+
## 5. Зависимости
|
|
401
|
+
|
|
402
|
+
### Внешние библиотеки
|
|
403
|
+
|
|
404
|
+
Таблица ключевых зависимостей:
|
|
405
|
+
|
|
406
|
+
| Библиотека | Версия | Назначение | Использование в проекте |
|
|
407
|
+
|:-----------|:-------|:-----------|:------------------------|
|
|
408
|
+
| [name] | [ver] | [purpose] | [как используется] |
|
|
409
|
+
|
|
410
|
+
### Граф внутренних зависимостей
|
|
411
|
+
|
|
412
|
+
```
|
|
413
|
+
[ASCII-диаграмма или описание]
|
|
414
|
+
Модуль A → Модуль B → Модуль C
|
|
415
|
+
Модуль D → Модуль C
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
**Циклические зависимости:** [Список, если найдены, или "Не обнаружено"]
|
|
419
|
+
|
|
420
|
+
## 6. Основные механизмы
|
|
421
|
+
|
|
422
|
+
Описание устойчивых механизмов работы:
|
|
423
|
+
|
|
424
|
+
### 6.1. [Механизм 1, например "Обработка ошибок"]
|
|
425
|
+
**Где реализовано:** [Файл:строка]
|
|
426
|
+
**Как работает:** [Краткое описание алгоритма]
|
|
427
|
+
**Где используется:** [Список мест использования]
|
|
428
|
+
|
|
429
|
+
## 7. Конфигурация
|
|
430
|
+
|
|
431
|
+
**Конфигурационные файлы:** [Список с назначением]
|
|
432
|
+
**Переменные окружения:** [Список используемых ENV переменных]
|
|
433
|
+
**Настройки по умолчанию:** [Где хранятся, как переопределяются]
|
|
434
|
+
|
|
435
|
+
## 8. Точки расширения
|
|
436
|
+
|
|
437
|
+
Места, где архитектура предусматривает расширяемость:
|
|
438
|
+
- **Плагины:** [Если есть система плагинов]
|
|
439
|
+
- **Хуки/Events:** [Если есть событийная модель]
|
|
440
|
+
- **DI контейнер:** [Если используется Dependency Injection]
|
|
441
|
+
|
|
442
|
+
## 9. Дополнительные материалы
|
|
443
|
+
|
|
444
|
+
**Метрики:**
|
|
445
|
+
- Всего файлов: [N]
|
|
446
|
+
- Основной язык: [язык] ([X]% кода)
|
|
447
|
+
- Глубина вложенности директорий: [N]
|
|
448
|
+
|
|
449
|
+
**Диаграммы:** [При необходимости]
|
|
450
|
+
````
|
|
451
|
+
|
|
452
|
+
### 6.2. Структура отчёта: Режим B (Deep-Dive)
|
|
453
|
+
|
|
454
|
+
````markdown
|
|
455
|
+
# AR-XXXX - Модуль <Название> (As-Is)
|
|
456
|
+
|
|
457
|
+
> **Тип документа:** Реверс-инжиниринг (Deep-Dive)
|
|
458
|
+
> **Дата анализа:** YYYY-MM-DD
|
|
459
|
+
> **Скоуп:** [путь к модулю]
|
|
460
|
+
|
|
461
|
+
## 1. Общее описание модуля
|
|
462
|
+
|
|
463
|
+
**Назначение:** [Чем занимается модуль]
|
|
464
|
+
|
|
465
|
+
**Место в архитектуре:** [Как связан с другими модулями]
|
|
466
|
+
|
|
467
|
+
**Основные ответственности:** [Список ключевых задач]
|
|
468
|
+
|
|
469
|
+
## 2. Структура модуля
|
|
470
|
+
|
|
471
|
+
```
|
|
472
|
+
[Дерево файлов модуля с комментариями]
|
|
473
|
+
```
|
|
474
|
+
|
|
475
|
+
## 3. Сущности (Entities/Models/Types)
|
|
476
|
+
|
|
477
|
+
Для каждой сущности:
|
|
478
|
+
|
|
479
|
+
### 3.1. `[EntityName]`
|
|
480
|
+
**Локация:** [файл:строка]
|
|
481
|
+
|
|
482
|
+
**Назначение:** [Для чего используется]
|
|
483
|
+
|
|
484
|
+
**Определение:**
|
|
485
|
+
```[язык]
|
|
486
|
+
[Код определения сущности]
|
|
487
|
+
```
|
|
488
|
+
|
|
489
|
+
**Поля/Свойства:**
|
|
490
|
+
- `field1`: [тип] - [описание]
|
|
491
|
+
- `field2`: [тип] - [описание]
|
|
492
|
+
|
|
493
|
+
**Где используется:** [Список файлов:строк, где используется]
|
|
494
|
+
|
|
495
|
+
## 4. Публичный интерфейс (API)
|
|
496
|
+
|
|
497
|
+
Все экспортируемые функции/классы:
|
|
498
|
+
|
|
499
|
+
### 4.1. `[functionName]`
|
|
500
|
+
**Локация:** [файл:строка]
|
|
501
|
+
|
|
502
|
+
**Сигнатура:**
|
|
503
|
+
```[язык]
|
|
504
|
+
[Полная сигнатура функции]
|
|
505
|
+
```
|
|
506
|
+
|
|
507
|
+
**Параметры:**
|
|
508
|
+
- `param1`: [тип] - [описание]
|
|
509
|
+
|
|
510
|
+
**Возвращает:** [тип и описание]
|
|
511
|
+
|
|
512
|
+
**Побочные эффекты:** [Что делает кроме возврата значения: БД, API, файлы]
|
|
513
|
+
|
|
514
|
+
**Примеры использования:**
|
|
515
|
+
```[язык]
|
|
516
|
+
[Реальные примеры из кодовой базы]
|
|
517
|
+
```
|
|
518
|
+
|
|
519
|
+
**Где вызывается:** [Список мест использования]
|
|
520
|
+
|
|
521
|
+
## 5. Потоки данных
|
|
522
|
+
|
|
523
|
+
Описание движения данных через модуль:
|
|
524
|
+
|
|
525
|
+
## Сценарий 1: [Название]
|
|
526
|
+
```mermaid
|
|
527
|
+
graph LR
|
|
528
|
+
A[Точка входа] --> B[Обработка 1]
|
|
529
|
+
B --> C[Обработка 2]
|
|
530
|
+
C --> D[Результат]
|
|
531
|
+
```
|
|
532
|
+
|
|
533
|
+
**Детали:**
|
|
534
|
+
1. **[Шаг 1]** ([файл:строка]): [Что происходит]
|
|
535
|
+
2. **[Шаг 2]** ([файл:строка]): [Что происходит]
|
|
536
|
+
|
|
537
|
+
**Примеры:** [Реальный код из кодовой базы]
|
|
538
|
+
|
|
539
|
+
## 6. Зависимости модуля
|
|
540
|
+
|
|
541
|
+
### Импортируемые модули
|
|
542
|
+
- **`[модуль]`:** [Что из него используется, где]
|
|
543
|
+
|
|
544
|
+
### Используемые библиотеки
|
|
545
|
+
- **`[библиотека]`:** [Для чего, в каких файлах]
|
|
546
|
+
|
|
547
|
+
### Зависимые модули
|
|
548
|
+
[Кто зависит от этого модуля]:
|
|
549
|
+
- **`[модуль]`:** [Что использует]
|
|
550
|
+
|
|
551
|
+
## 7. Внутренние механизмы
|
|
552
|
+
|
|
553
|
+
Детальное описание механизмов работы внутри модуля:
|
|
554
|
+
|
|
555
|
+
### 7.1. [Механизм, например "Валидация данных"]
|
|
556
|
+
**Где реализовано:** [файл:строка]
|
|
557
|
+
|
|
558
|
+
**Как работает:** [Пошаговое описание]
|
|
559
|
+
|
|
560
|
+
**Примеры:**
|
|
561
|
+
```[язык]
|
|
562
|
+
[Код примера]
|
|
563
|
+
```
|
|
564
|
+
|
|
565
|
+
## 8. Паттерны проектирования
|
|
566
|
+
|
|
567
|
+
Паттерны, использованные в модуле:
|
|
568
|
+
- **[Pattern]:** [Где и как реализован]
|
|
569
|
+
|
|
570
|
+
## 9. Конфигурация модуля
|
|
571
|
+
|
|
572
|
+
[Настройки, специфичные для модуля, если есть]
|
|
573
|
+
|
|
574
|
+
## 10. Дополнительная информация
|
|
575
|
+
|
|
576
|
+
**Метрики модуля:**
|
|
577
|
+
- Файлов: [N]
|
|
578
|
+
- Строк кода: ~[N]
|
|
579
|
+
- Публичных функций/классов: [N]
|
|
580
|
+
- Зависимостей: [N]
|
|
581
|
+
````
|
|
582
|
+
|
|
583
|
+
### 6.3. Структура отчёта: Режим C (Mechanism)
|
|
584
|
+
|
|
585
|
+
````markdown
|
|
586
|
+
# AR-XXXX - Механизм <Название> (As-Is)
|
|
587
|
+
|
|
588
|
+
> **Тип документа:** Реверс-инжиниринг (Mechanism)
|
|
589
|
+
> **Дата анализа:** YYYY-MM-DD
|
|
590
|
+
> **Скоуп:** [механизм/алгоритм]
|
|
591
|
+
|
|
592
|
+
## 1. Общее описание механизма
|
|
593
|
+
|
|
594
|
+
**Что делает:** [2-3 предложения о назначении механизма]
|
|
595
|
+
|
|
596
|
+
**Зачем нужен:** [Какую проблему решает]
|
|
597
|
+
|
|
598
|
+
**Где используется:** [Общее представление о точках использования]
|
|
599
|
+
|
|
600
|
+
## 2. Компоненты механизма
|
|
601
|
+
|
|
602
|
+
Список всех частей, составляющих механизм:
|
|
603
|
+
|
|
604
|
+
### 2.1. Компонент: `[название]`
|
|
605
|
+
**Локация:** [файл:строка]
|
|
606
|
+
|
|
607
|
+
**Роль в механизме:** [Что делает]
|
|
608
|
+
|
|
609
|
+
**Тип:** [Class / Function / Module / Configuration]
|
|
610
|
+
|
|
611
|
+
**Код:**
|
|
612
|
+
```[язык]
|
|
613
|
+
[Ключевые части кода компонента]
|
|
614
|
+
```
|
|
615
|
+
|
|
616
|
+
## Алгоритм работы
|
|
617
|
+
|
|
618
|
+
Пошаговое описание работы механизма:
|
|
619
|
+
|
|
620
|
+
### Фаза 1: [Название фазы]
|
|
621
|
+
**Где:** [файл:строка]
|
|
622
|
+
|
|
623
|
+
**Что происходит:**
|
|
624
|
+
1. [Действие 1]
|
|
625
|
+
2. [Действие 2]
|
|
626
|
+
|
|
627
|
+
**Код:**
|
|
628
|
+
```[язык]
|
|
629
|
+
[Соответствующий код]
|
|
630
|
+
```
|
|
631
|
+
|
|
632
|
+
### Фаза 2: [Название фазы]
|
|
633
|
+
[То же самое]
|
|
634
|
+
|
|
635
|
+
## 4. Диаграмма потока
|
|
636
|
+
|
|
637
|
+
```mermaid
|
|
638
|
+
graph LR
|
|
639
|
+
A[Trigger] --> B[Handler]
|
|
640
|
+
B --> C[Validator]
|
|
641
|
+
C --> D[Processor]
|
|
642
|
+
D --> E[Storage]
|
|
643
|
+
B --> F[Logger]
|
|
644
|
+
D --> G[EventEmitter]
|
|
645
|
+
```
|
|
646
|
+
|
|
647
|
+
## 5. Точки использования
|
|
648
|
+
|
|
649
|
+
Все места в кодовой базе, где вызывается механизм:
|
|
650
|
+
|
|
651
|
+
### 5.1. Использование в `[файл]`
|
|
652
|
+
**Локация:** [файл:строка]
|
|
653
|
+
|
|
654
|
+
**Контекст:** [В какой ситуации вызывается]
|
|
655
|
+
|
|
656
|
+
**Код:**
|
|
657
|
+
```[язык]
|
|
658
|
+
[Фрагмент кода с вызовом]
|
|
659
|
+
```
|
|
660
|
+
|
|
661
|
+
## 6. Конфигурация и параметры
|
|
662
|
+
|
|
663
|
+
**Настраиваемые параметры:** [Список]
|
|
664
|
+
|
|
665
|
+
**Значения по умолчанию:** [Где определены]
|
|
666
|
+
|
|
667
|
+
**Переопределение:** [Как можно изменить поведение]
|
|
668
|
+
|
|
669
|
+
## 7. Зависимости
|
|
670
|
+
|
|
671
|
+
**Использует:**
|
|
672
|
+
- [Библиотека/модуль 1]: [для чего]
|
|
673
|
+
- [Библиотека/модуль 2]: [для чего]
|
|
674
|
+
|
|
675
|
+
**Используется в:**
|
|
676
|
+
- [Модуль/функция 1]
|
|
677
|
+
- [Модуль/функция 2]
|
|
678
|
+
|
|
679
|
+
## 8. Примеры использования
|
|
680
|
+
|
|
681
|
+
### Пример 1: [Название сценария]
|
|
682
|
+
**Описание:** [Что делает этот пример]
|
|
683
|
+
|
|
684
|
+
**Код:**
|
|
685
|
+
```[язык]
|
|
686
|
+
[Полный рабочий пример из кодовой базы или синтетический]
|
|
687
|
+
```
|
|
688
|
+
|
|
689
|
+
**Результат:** [Что происходит после выполнения]
|
|
690
|
+
|
|
691
|
+
## Вариации и модификации
|
|
692
|
+
|
|
693
|
+
[Если механизм имеет разные режимы работы или конфигурации]:
|
|
694
|
+
- **Режим A:** [Описание]
|
|
695
|
+
- **Режим B:** [Описание]
|
|
696
|
+
|
|
697
|
+
## Связь с другими механизмами
|
|
698
|
+
|
|
699
|
+
[Как этот механизм взаимодействует с другими]:
|
|
700
|
+
- Вызывается после [механизм X]
|
|
701
|
+
- Вызывает [механизм Y]
|
|
702
|
+
- Альтернатива для [механизм Z] в случае [условие]
|
|
703
|
+
````
|
|
704
|
+
|
|
705
|
+
## Фаза 6: Финальная проверка
|
|
706
|
+
|
|
707
|
+
Перед сохранением отчёта проверь:
|
|
708
|
+
1. **Номер AR-XXXX уникален** и файл содержит суффикс `(As-Is)`.
|
|
709
|
+
2. **Все утверждения подтверждены фактами** из кода (файл:строка указаны).
|
|
710
|
+
3. **Нет качественных оценок** ("плохо", "хорошо", "надо исправить") — только описание.
|
|
711
|
+
4. **Структура соответствует режиму** (Overview/Deep-Dive/Mechanism).
|
|
712
|
+
5. **Все ключевые memories включены** в отчёт (проверь, что ничего важного не забыто).
|
|
713
|
+
6. **Примеры кода корректны** (реальные или синтетические, но рабочие).
|
|
714
|
+
|
|
715
|
+
Если хотя бы одна проверка провалена — **дополни отчёт** перед сохранением.
|
|
716
|
+
|
|
717
|
+
## Фаза 7: Отчёт пользователю
|
|
718
|
+
|
|
719
|
+
Выдай короткое резюме:
|
|
720
|
+
1. **Созданный файл:** `AR-XXXX - <Название> (As-Is).md`.
|
|
721
|
+
2. **Режим анализа:** [Overview / Deep-Dive / Mechanism].
|
|
722
|
+
3. **Скоуп:** [Путь к анализируемой области].
|
|
723
|
+
4. **Ключевые находки:**
|
|
724
|
+
- Основных модулей: [N]
|
|
725
|
+
- Сущностей: [N]
|
|
726
|
+
- Паттернов: [N]
|
|
727
|
+
- Механизмов: [N]
|
|
728
|
+
5. **Следующий шаг:**
|
|
729
|
+
- Для режима Overview → "Можно провести Deep-Dive для модулей: [A, B, C]"
|
|
730
|
+
- Для режима Deep-Dive → "Можно создать фичу на основе анализа: `/agentica.create`"
|
|
731
|
+
- Для режима Mechanism → "Можно улучшить механизм: `/agentica.change`"
|
|
732
|
+
|
|
733
|
+
## 9. Дополнительные правила
|
|
734
|
+
|
|
735
|
+
### Работа с большими проектами
|
|
736
|
+
Если проект содержит > 100 файлов (режим Overview):
|
|
737
|
+
1. Сфокусируйся на **top-level структуре**, не пытайся прочитать каждый файл.
|
|
738
|
+
2. Используй `semantic_search` для поиска ключевых паттернов.
|
|
739
|
+
3. Предложи пользователю выбрать 2-3 модуля для последующего Deep-Dive.
|
|
740
|
+
|
|
741
|
+
### Работа с неочевидным кодом
|
|
742
|
+
Если код не содержит комментариев и непонятен:
|
|
743
|
+
1. Анализируй **имена** (функций, классов, переменных) для понимания назначения.
|
|
744
|
+
2. Используй `list_code_usages` для поиска примеров использования.
|
|
745
|
+
3. Смотри **тесты** (если есть) — они часто объясняют поведение.
|
|
746
|
+
4. Если всё равно непонятно — опиши **что делает код буквально**, не пытаясь интерпретировать.
|
|
747
|
+
|
|
748
|
+
### Использование Context7 для библиотек
|
|
749
|
+
Когда вызывать:
|
|
750
|
+
1. Библиотека используется в > 3 местах.
|
|
751
|
+
2. Библиотека является core-частью проекта (express, fastapi, react).
|
|
752
|
+
3. Поведение библиотеки не очевидно из имени.
|
|
753
|
+
|
|
754
|
+
Что извлекать:
|
|
755
|
+
- Основное назначение библиотеки.
|
|
756
|
+
- Ключевые API, используемые в проекте.
|
|
757
|
+
- Особенности поведения (например, async/sync, side effects).
|
|
758
|
+
|
|
759
|
+
### Объективность анализа
|
|
760
|
+
**Избегай:**
|
|
761
|
+
- ❌ "Код написан плохо"
|
|
762
|
+
- ❌ "Нужно рефакторить"
|
|
763
|
+
- ❌ "Архитектура неправильная"
|
|
764
|
+
|
|
765
|
+
**Используй:**
|
|
766
|
+
- ✅ "Функция содержит 8 уровней вложенности"
|
|
767
|
+
- ✅ "Обнаружена циклическая зависимость A ↔ B"
|
|
768
|
+
- ✅ "Механизм реализован через паттерн X"
|
|
769
|
+
|
|
770
|
+
### Терминология
|
|
771
|
+
Используй стандартные термины:
|
|
772
|
+
- **Entry Point** — точка входа в приложение/модуль.
|
|
773
|
+
- **Data Flow** — путь данных через систему.
|
|
774
|
+
- **Dependency Graph** — граф зависимостей между модулями.
|
|
775
|
+
- **Pattern** — паттерн проектирования.
|
|
776
|
+
- **Mechanism** — устойчивая последовательность операций.
|
|
777
|
+
- **Entity** — сущность предметной области или структура данных.
|