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

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

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

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

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

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

Назначение: Содержит пользовательскую часть Qwen Code, такую как обработка начального ввода пользователя, отображение финального вывода и управление общим пользовательским опытом.

Основные функции:

  • Обработка ввода: Обрабатывает пользовательский ввод различными способами, включая прямой текстовый ввод, слэш-команды (например, /help, /clear, /model), команды с символом @ (@file для включения содержимого файла) и команды со знаком восклицания (!command для выполнения в shell).
  • Управление историей: Сохраняет историю разговоров и обеспечивает функции, подобные возобновлению сессии.
  • Отображение рендеринга: Форматирует и отображает ответы пользователю в терминале с подсветкой синтаксиса и надлежащим форматированием.
  • Настройка тем и интерфейса: Поддерживает настраиваемые темы и элементы интерфейса для персонализированного опыта.
  • Параметры конфигурации: Управляет различными параметрами конфигурации через JSON-файлы настроек, переменные окружения и аргументы командной строки.

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

Назначение: Этот пакет служит в качестве бэкенда для Qwen Code. Он получает запросы, отправленные из packages/cli, координирует взаимодействие с настроенным API модели и управляет выполнением доступных инструментов.

Основные функции:

  • Клиент API: Обеспечивает связь с API модели Qwen для отправки запросов и получения ответов.
  • Формирование запросов: Создает подходящие запросы для модели, включая историю разговора и определения доступных инструментов.
  • Регистрация и выполнение инструментов: Управляет регистрацией доступных инструментов и выполняет их по запросу модели.
  • Управление состоянием: Сохраняет информацию о состоянии разговора и сессии.
  • Серверная конфигурация: Обрабатывает серверные настройки и параметры конфигурации.

3. Инструменты (packages/core/src/tools/)

Назначение: Это отдельные модули, которые расширяют возможности модели Qwen, позволяя ей взаимодействовать с локальной средой (например, файловой системой, командами оболочки, веб-запросами).

Взаимодействие: packages/core вызывает эти инструменты на основе запросов от модели Qwen.

Общие инструменты включают:

  • Файловые операции: Чтение, запись и редактирование файлов
  • Команды оболочки: Выполнение системных команд с одобрения пользователя для потенциально опасных операций
  • Поисковые инструменты: Поиск файлов и поиск содержимого в проекте
  • Веб-инструменты: Получение контента из интернета
  • Интеграция MCP: Подключение к серверам протокола контекста модели для расширения возможностей

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

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

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

Параметры конфигурации

Qwen Code предлагает несколько способов настройки своего поведения:

Уровни конфигурации (в порядке приоритета)

  1. Аргументы командной строки
  2. Переменные окружения
  3. Файл настроек проекта (.qwen/settings.json)
  4. Файл пользовательских настроек (~/.qwen/settings.json)
  5. Системные файлы настроек
  6. Значения по умолчанию

Основные категории конфигурации

  • Общие настройки: режим vim, предпочитаемый редактор, настройки автообновления
  • Настройки интерфейса: Настройка тем, видимость баннера, отображение нижнего колонтитула
  • Настройки модели: Выбор модели, ограничения по количеству ходов в сессии, настройки сжатия
  • Настройки контекста: Имена файлов контекста, включение каталогов, фильтрация файлов
  • Настройки инструментов: Режимы одобрения, песочница, ограничения инструментов
  • Настройки конфиденциальности: Сбор статистики использования
  • Расширенные настройки: Параметры отладки, пользовательские команды для отправки отчетов об ошибках

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

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