Skip to Content
Обзор Архитектуры

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

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

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

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

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

    • Назначение: Содержит пользовательскую часть Qwen Code, такую как обработка начального ввода пользователя, отображение финального вывода и управление общим пользовательским опытом.
    • Основные функции пакета:
  2. Основной пакет (packages/core):

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

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

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

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

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

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

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