Skip to Content
РазработкаАрхитектура

Обзор архитектуры Qwen Code

Этот документ предоставляет общий обзор архитектуры Qwen Code.

Основные компоненты

Qwen Code состоит в основном из двух основных пакетов, а также набора инструментов, которые система может использовать при обработке командной строки:

  1. Пакет CLI (packages/cli):

  2. Основной пакет (packages/core):

    • Назначение: Выступает в роли бэкенда для Qwen Code. Получает запросы от packages/cli, координирует взаимодействие с настроенным API модели и управляет выполнением доступных инструментов.
    • Основные функции пакета:
      • Клиент API для связи с Google Gemini API
      • Формирование и управление prompt’ами
      • Логика регистрации и выполнения инструментов
      • Управление состоянием бесед или сессий
      • Конфигурация на стороне сервера
  3. Инструменты (packages/core/src/tools/):

    • Назначение: Это отдельные модули, расширяющие возможности модели Gemini, позволяя ей взаимодействовать с локальной средой (например, файловая система, shell-команды, загрузка данных из интернета).
    • Взаимодействие: packages/core вызывает эти инструменты по запросу от модели Gemini.

Поток взаимодействия

Типичное взаимодействие с Qwen Code происходит по следующему сценарию:

  1. Ввод пользователя: Пользователь вводит prompt или команду в терминале, который управляется через packages/cli.
  2. Запрос к ядру: packages/cli отправляет пользовательский ввод в packages/core.
  3. Обработка запроса: Ядро (core) выполняет следующие действия:
    • Формирует подходящий prompt для настроенного model API, при необходимости добавляя историю разговора и доступные определения инструментов.
    • Отправляет prompt в model API.
  4. Ответ от Model API: Model API обрабатывает prompt и возвращает ответ. Ответ может быть прямым ответом или запросом на использование одного из доступных инструментов.
  5. Выполнение инструмента (если применимо):
    • Если model API запрашивает инструмент, ядро подготавливается к его выполнению.
    • Если запрошенный инструмент может изменять файловую систему или выполнять shell-команды, пользователю сначала показываются детали инструмента и его аргументы, после чего требуется подтверждение на выполнение.
    • Операции только для чтения, такие как чтение файлов, могут не требовать явного подтверждения от пользователя.
    • После подтверждения (или если оно не требуется), ядро выполняет соответствующее действие внутри нужного инструмента, и результат отправляется обратно в model API через ядро.
    • Model API обрабатывает результат работы инструмента и формирует финальный ответ.
  6. Ответ в CLI: Ядро отправляет финальный ответ обратно в пакет CLI.
  7. Отображение пользователю: Пакет CLI форматирует и отображает ответ пользователю в терминале.

Ключевые принципы проектирования

  • Модульность: Разделение CLI (фронтенд) и Core (бэкенд) позволяет разрабатывать их независимо и добавлять новые возможности в будущем (например, различные фронтенды для одного бэкенда).
  • Расширяемость: Система инструментов спроектирована с учетом расширяемости, что позволяет добавлять новые функции.
  • User experience: CLI ориентирован на предоставление богатого и интерактивного терминального интерфейса.
Last updated on