Обзор архитектуры Qwen Code
Этот документ предоставляет общий обзор архитектуры Qwen Code.
Основные компоненты
Qwen Code состоит в основном из двух основных пакетов, а также набора инструментов, которые система может использовать при обработке командной строки:
-
Пакет CLI (
packages/cli
):- Назначение: Содержит пользовательскую часть Qwen Code, такую как обработка начального ввода пользователя, отображение финального вывода и управление общим пользовательским опытом.
- Основные функции пакета:
- Обработка ввода
- Управление историей
- Рендеринг отображения
- Настройка тем и UI
- Параметры конфигурации CLI
-
Основной пакет (
packages/core
):- Назначение: Выступает в роли бэкенда для Qwen Code. Получает запросы от
packages/cli
, управляет взаимодействием с настроенным model API и контролирует выполнение доступных инструментов. - Основные функции пакета:
- API клиент для взаимодействия с Google Gemini API
- Формирование и управление prompt’ами
- Логика регистрации и выполнения инструментов
- Управление состоянием для диалогов или сессий
- Серверная конфигурация
- Назначение: Выступает в роли бэкенда для Qwen Code. Получает запросы от
-
Инструменты (
packages/core/src/tools/
):- Назначение: Это отдельные модули, расширяющие возможности модели Gemini, позволяя ей взаимодействовать с локальной средой (например, файловая система, shell команды, загрузка данных из web).
- Взаимодействие:
packages/core
вызывает эти инструменты по запросу от модели Gemini.
Поток взаимодействия
Типичное взаимодействие с Qwen Code происходит по следующему сценарию:
- Ввод пользователя: Пользователь вводит prompt или команду в терминале, который управляется через
packages/cli
. - Запрос в core:
packages/cli
отправляет ввод пользователя вpackages/core
. - Обработка запроса: Основной пакет (
core
):- Формирует подходящий prompt для настроенного model API, при необходимости включая историю разговора и доступные определения инструментов.
- Отправляет prompt в model API.
- Ответ от Model API: Model API обрабатывает prompt и возвращает ответ. Ответом может быть прямой ответ или запрос на использование одного из доступных инструментов.
- Выполнение инструмента (если применимо):
- Когда model API запрашивает инструмент, core-пакет подготавливается к его выполнению.
- Если запрашиваемый инструмент может изменять файловую систему или выполнять shell-команды, пользователю сначала отображаются детали инструмента и его аргументы, и пользователь должен подтвердить выполнение.
- Операции только для чтения, такие как чтение файлов, могут не требовать явного подтверждения от пользователя.
- После подтверждения, либо если подтверждение не требуется, core-пакет выполняет соответствующее действие в рамках нужного инструмента, и результат отправляется обратно в model API через core-пакет.
- Model API обрабатывает результат работы инструмента и формирует финальный ответ.
- Ответ в CLI: Core-пакет отправляет финальный ответ обратно в CLI-пакет.
- Отображение пользователю: CLI-пакет форматирует и отображает ответ пользователю в терминале.
Ключевые принципы проектирования
- Модульность: Разделение CLI (фронтенд) и Core (бэкенд) позволяет разрабатывать их независимо и добавлять новые возможности в будущем (например, различные фронтенды для одного бэкенда).
- Расширяемость: Система инструментов спроектирована с учетом расширяемости, что позволяет добавлять новые функции.
- User experience: CLI ориентирован на предоставление богатого и интерактивного терминального интерфейса.
Last updated on