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