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

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

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

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

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

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

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

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

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

2. Core-пакет (packages/core)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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