Ниже обновленная версия с учетом гибридной модели интент роутера. --- ## 1. Концепция агента Агент проектируется как intent-driven система для работы с кодом и документацией, где пользовательский запрос сначала нормализуется и интерпретируется, затем по нему извлекается релевантный контекст из многослойного RAG, после чего специализированный task workflow выполняет целевую задачу. Агент не является единым “умным чатом”: логика разделена на маршрутизацию, retrieval и специализированные execution workflows. Проверка evidence, вызовы LLM и правила сборки ответа находятся внутри task workflows и зависят от типа задачи. --- ## 2. Компонентная модель ```mermaid flowchart LR IDE[IDE Plugin / Client] --> API[API Layer] API --> IR[IntentRouter V3] IR --> RAG[Retrieval RAG] RAG --> TW1[Task Workflow: Documentation Explain] RAG --> TW2[Task Workflow: OpenAPI Generation] RAG --> TW3[Task Workflow: Documentation Generation] RAG --> TWN[Other Specialized Task Workflows] TW1 --> OUT[Response / Artifact] TW2 --> OUT TW3 --> OUT TWN --> OUT ``` --- ## 3. Основной flow процесса ### Основной процесс 1. Пользователь отправляет запрос через IDE plugin или другой клиент. 2. `API Layer` принимает запрос и передает его в агент. 3. `IntentRouter V3`: * нормализует запрос; * детерминированно извлекает ключевые артефакты; * с помощью LLM определяет тип задачи и параметры обработки; * формирует параметры retrieval. 4. Выполняется извлечение данных из `Retrieval RAG`. 5. Извлеченный контекст передается в соответствующий `Task Workflow`. 6. Внутри workflow выполняется: * подготовка контекста; * evidence-проверки; * вызовы LLM; * формирование результата. 7. Результат возвращается пользователю. ### Sequence diagram ```mermaid sequenceDiagram participant User as User / IDE Plugin participant API as API Layer participant Router as IntentRouter V3 participant RAG as Retrieval RAG participant WF as Task Workflow User->>API: request API->>Router: agent call Router->>Router: normalize + extract artifacts Router->>Router: LLM routing (task / intent) Router->>RAG: retrieval request RAG-->>Router: retrieved context Router->>WF: route result + context WF->>WF: evidence logic + LLM calls WF-->>API: final result API-->>User: response ``` --- ## 4. Описание компонентов ### 4.1. IDE Plugin / Client **Задача** Точка входа пользователя в агент. **Как устроен** Любой внешний клиент (IDE plugin, web UI и др.), который отправляет запрос и получает результат. **Почему так** Агент изначально проектируется как backend-система, независимая от интерфейса. --- ### 4.2. API Layer **Задача** Обеспечивает внешний интерфейс взаимодействия с агентом. **Как устроен** Принимает запрос, валидирует его и передает во внутренний pipeline, затем возвращает результат. **Почему так** Позволяет изолировать транспортный слой от логики агента. --- ### 4.3. IntentRouter V3 **Задача** Определяет, как должен обрабатываться пользовательский запрос и какой сценарий выполнения применить. **Как устроен** Гибридная модель из двух частей: #### 1. Детерминированный слой Выполняет: * нормализацию запроса; * извлечение ключевых артефактов: * домены; * типы сущностей (API, entity, component и т.д.); * явные ссылки (endpoint, путь, имя); * выделение базовых сигналов (например: explain / list / generate). Этот слой задает **жесткие рамки интерпретации запроса**. #### 2. LLM-роутинг Использует: * нормализованный запрос; * извлеченные артефакты; * описание доступных типов задач; и определяет: * тип задачи; * общий сценарий обработки; * параметры retrieval; * ожидаемую форму ответа. #### Итог Router формирует: * параметры retrieval; * тип task workflow; * контекст для дальнейшего выполнения. **Почему решение такое** Ранее использовался более детерминированный подход с фиксированными сценариями, который хорошо работал в узком наборе задач, но плохо масштабируется. Полностью LLM-based роутинг, наоборот, дает гибкость, но теряет предсказуемость и управляемость. Поэтому выбран гибридный подход: * детерминированный слой фиксирует ключевые артефакты и ограничения; * LLM выполняет гибкую интерпретацию задачи. Это позволяет: * сохранить управляемость и стабильность; * избежать взрывного роста количества сценариев; * поддерживать сложные и нетиповые запросы. --- ### 4.4. Retrieval RAG **Задача** Извлечь релевантный контекст для выполнения задачи. **Как устроен** Многослойная система хранения знаний (код, документация, факты, связи), из которой извлекается структурированный контекст в зависимости от параметров, заданных роутером. **Почему так** Разные задачи требуют разных типов данных, поэтому используется слойная модель вместо плоского поиска. --- ### 4.5. Task Workflows **Задача** Реализуют прикладную логику выполнения конкретного типа задачи. **Как устроены** Набор специализированных workflows, например: * объяснение по документации; * генерация OpenAPI; * генерация документации; * другие сценарии. Внутри workflow находятся: * обработка контекста; * evidence-проверки; * вызовы LLM; * сборка результата. **Почему так** Логика проверки данных и генерации сильно зависит от задачи, поэтому она инкапсулируется в отдельных workflows, а не в одном универсальном слое. --- ### 4.6. Output / Artifact **Задача** Вернуть результат пользователю. **Как устроен** Может быть: * текстовый ответ; * структурированный список; * OpenAPI спецификация; * документация; * иной артефакт. **Почему так** Агент должен поддерживать не только ответы, но и генерацию инженерных артефактов. --- ## Итог Обновленная архитектура строится на следующем принципе: * **детерминированное извлечение ключевых артефактов** задает рамки; * **LLM выполняет гибкий роутинг внутри этих рамок**; * **retrieval обеспечивает данные**; * **task workflows реализуют прикладную логику и контроль качества**. Это позволяет одновременно сохранить управляемость системы и обеспечить масштабируемость под новые типы задач.