Qwen Code Core
Основной пакет Qwen Code (packages/core) представляет собой backend-часть Qwen Code, которая отвечает за взаимодействие с API моделей, управление инструментами и обработку запросов, поступающих из packages/cli. Общее описание Qwen Code можно найти на главной странице документации.
Навигация по разделу
- Core tools API: Информация о том, как определяются, регистрируются и используются инструменты в ядре.
- Memory Import Processor: Документация по модульной функции импорта QWEN.md с использованием синтаксиса @file.md.
Роль ядра
Хотя часть packages/cli в Qwen Code отвечает за пользовательский интерфейс, packages/core выполняет следующие функции:
- Взаимодействие с API модели: Безопасная коммуникация с настроенным провайдером модели, отправка пользовательских запросов и получение ответов от модели.
- Работа с промптами: Формирование эффективных промптов для модели, включая потенциально историю разговора, определения инструментов и контекст из контекстных файлов (например,
QWEN.md). - Управление и оркестрация инструментов:
- Регистрация доступных инструментов (например, инструменты файловой системы, выполнение shell-команд).
- Интерпретация запросов на использование инструментов от модели.
- Выполнение запрошенных инструментов с переданными аргументами.
- Возврат результатов выполнения инструментов модели для дальнейшей обработки.
- Управление сессиями и состоянием: Отслеживание состояния разговора, включая историю и любой другой контекст, необходимый для согласованного взаимодействия.
- Конфигурация: Управление настройками ядра, такими как доступ к API-ключам, выбор модели и настройки инструментов.
Вопросы безопасности
Core играет важную роль в обеспечении безопасности:
- Управление API ключами: Core управляет учетными данными провайдеров и гарантирует их безопасное использование при взаимодействии с API.
- Выполнение инструментов: Когда инструменты взаимодействуют с локальной системой (например,
run_shell_command), Core (и реализация инструментов) должны делать это с осторожностью, часто используя механизмы песочницы для предотвращения непреднамеренных изменений.
Сжатие истории чата
Чтобы длинные разговоры не превышали лимит токенов выбранной модели, в Core реализована функция сжатия истории чата.
Когда разговор приближается к лимиту токенов для настроенной модели, Core автоматически сжимает историю разговора перед отправкой в модель. Это сжатие разработано таким образом, чтобы сохранять всю передаваемую информацию, но уменьшать общее количество используемых токенов.
Лимиты токенов для моделей каждого провайдера можно найти в их документации.
Откат модели
Qwen Code включает механизм отката модели, который обеспечивает возможность продолжать использовать CLI, даже если модель по умолчанию ограничена по частоте запросов.
Если вы используете модель “pro” по умолчанию, и CLI обнаруживает, что вы столкнулись с ограничением частоты запросов, он автоматически переключается на модель “flash” для текущей сессии. Это позволяет вам продолжать работу без перерывов.
Сервис обнаружения файлов
Сервис обнаружения файлов отвечает за поиск файлов в проекте, которые соответствуют текущему контексту. Он используется командой @ и другими инструментами, которым необходим доступ к файлам.
Сервис обнаружения контекста (memory discovery service)
Сервис обнаружения контекста отвечает за поиск и загрузку контекстных файлов (по умолчанию: QWEN.md), которые предоставляют моделью дополнительный контекст. Поиск этих файлов осуществляется иерархически: начиная с текущей рабочей директории, далее вверх по дереву до корня проекта и домашней директории пользователя. Также осуществляется поиск в подкаталогах.
Это позволяет использовать глобальные, уровня проекта и уровня компонентов контекстные файлы, которые объединяются для предоставления модели наиболее релевантной информации.
Вы можете использовать /memory команду для show, add и refresh содержимого загруженных контекстных файлов.