Эта глава раскроет, почему спор «CLI против IDE» — ложная дилемма, и вы обнаружите, как профессиональные команды собирают полиинструментальный рабочий день: Qt Creator для сборки и отладки, Gemini CLI для автоматизации и SSH, Cursor — для глубокого понимания Qt-архитектуры.
Будет показан рефакторинг реального проекта из одного main.cpp в модульную структуру, где один инструмент доводит задачу до результата за ~10 минут, а другой — за ~5 минут. Плюс — 3 режима Cursor (Agent/Ask/Plan), управление контекстом через @/#, и короткий разбор экосистемы CLI/IDE-игроков.
Если сейчас ИИ используется “по настроению”, эту главу лучше не пропускать — иначе вы продолжите платить временем там, где уже давно платят правильной настройкой процесса.
И в конце — самое практичное: по ссылке ниже можно скачать архив со всеми исходниками примеров, готовыми для компиляции, и 16 бесплатных глав книги.
Самопроверка по главе
Чем фундаментально отличаются CLI-инструменты от ИИ-IDE в контексте Qt-разработки?Ответ
Правильный ответ: CLI блистают в скриптах, автоматизации и SSH-сессиях на серверах, тогда как ИИ-IDE предоставляют визуальную среду с глубокой интеграцией, где ИИ понимает всю архитектуру проекта, включая сигналы/слоты, классы и зависимости Qt.
Почему параллельное использование Qt Creator вместе с Cursor или CLI-утилитами стало признанной индустриальной практикой?Ответ
Правильный ответ: Это позволяет эффективно распределить функциональные задачи: Qt Creator выступает центральной платформой для сборки, отладки и управления жизненным циклом проекта, а специализированные редакторы обеспечивают расширенные возможности навигации, рефакторинга и взаимодействия с ИИ-ассистентами.
Что такое MCP (Model Context Protocol) и какие возможности он открывает для Qt-разработчиков?Ответ
Правильный ответ: MCP — открытый протокол от Anthropic, позволяющий ИИ-моделям взаимодействовать с внешними инструментами и данными. Для Qt это означает возможность читать структуру проекта, выполнять команды сборки (qmake, cmake), работать с базами данных, читать макеты Figma и даже анализировать консольные логи при отладке.
Почему Gemini CLI необходимо запускать именно из корня проекта?Ответ
Правильный ответ: Чтобы Gemini CLI мог видеть всю структуру и файлы проекта, его необходимо запускать из корневой директории, откуда он сможет получить доступ ко всем файлам через символы @ и правильно понять архитектуру Qt-приложения.
В чем заключается ключевое отличие трех режимов работы Cursor: Agent, Ask и Plan?Ответ
Правильный ответ: Agent режим автоматически выполняет многошаговые задачи с изменениями в нескольких файлах; Ask режим только анализирует и отвечает на вопросы без изменения кода; Plan режим создает детальный пошаговый план разработки перед выполнением крупных задач.
Зачем в Cursor настраивать правила проекта (Project Rules), и как они влияют на качество генерируемого кода?Ответ
Правильный ответ: Правила проекта обучают ИИ вашему стилю кодирования, соглашениям об именах, архитектурным паттернам и специфике Qt-проекта, благодаря чему сгенерированный код выглядит согласованным, соответствует внутренним стандартам команды и не нарушает архитектуру приложения.
В каких практических сценариях CLI-инструменты предпочтительнее полноценных ИИ-IDE?Ответ
Правильный ответ: CLI идеальны для работы на удаленных серверах через SSH, автоматизации сборки в CI/CD-пайплайнах, написания скриптов для рутинных операций и ситуаций, где нужна максимальная скорость запуска без графического интерфейса.
Почему итеративная разработка с ИИ эффективнее попыток получить идеальный код за один запрос?Ответ
Правильный ответ: Поэтапный подход позволяет начать с минимальной рабочей реализации, убедиться в компиляции, затем последовательно улучшать код короткими конкретными промптами (обработка ошибок, потокобезопасность, логирование), сохраняя полный контроль и не ломая архитектуру.
Какие Qt-специфичные аспекты критически важно проверять после генерации кода ИИ?Ответ
Правильный ответ: Необходимо проверять: корректность parent ownership (каждый QObject имеет родителя или удаляется через deleteLater), правильность работы с потоками (moveToThread, Qt::QueuedConnection), использование современного синтаксиса сигналов/слотов и наличие макроса Q_OBJECT во всех классах с мета-объектной системой.
Как символы @, # и / используются в Cursor для управления контекстом?Ответ
Правильный ответ: @ используется для обращения к элементам кода (классам) и веб-ссылкам; # для добавления конкретных файлов проекта в контекст; / для вызова встроенных команд (например, /test для генерации unit-тестов).
Какой режим Cursor следует использовать для добавления крупной функциональности типа интеграции с новым API или миграции на Qt6?Ответ
Правильный ответ: Режим Plan, который превращает идею в структурированный пошаговый план разработки, позволяя экономить время и снижать риск сломать проект при добавлении масштабных изменений.
Почему использование скриншотов и визуальных ссылок эффективнее текстовых описаний при создании UI с помощью ИИ?Ответ
Правильный ответ: ИИ-модели понимают изображения и могут генерировать QML или QtWidgets-разметку непосредственно по визуальной ссылке, автоматически определяя цвета, размеры, отступы и компоновку элементов, что точнее и быстрее многословных текстовых описаний.
Чем Cursor превзошел Gemini CLI в практическом сравнении рефакторинга аудиоплеера?Ответ
Правильный ответ: Cursor продемонстрировал лучшее понимание структуры Qt-проектов, предложил более детальное разбиение на логически независимые классы и завершил задачу быстрее (за 5 минут против 10 минут) благодаря более тесной интеграции с исходниками и контекстом проекта.
Какие потенциальные риски безопасности связаны с использованием MCP-серверов, и как их минимизировать?Ответ
Правильный ответ: MCP-серверы получают прямой доступ к файлам и командам системы. Риски минимизируются использованием только проверенных модулей, запретом доступа к продакшн-секретам (пароли, токены, ключи) и предварительным согласованием списка серверов с отделом безопасности для корпоративных проектов.
Практические задания
Простой уровень
Настройка Gemini CLI и первый рефакторинг
Установите Gemini CLI на свой компьютер, пройдите авторизацию и создайте простое Qt-приложение с одним файлом main.cpp, содержащим класс с QLabel и QPushButton. Используйте Gemini CLI для разделения кода на отдельные файлы заголовков и реализации (.h и .cpp).
Подсказки: Установите через npm install -g @google/gemini-cli. Запускайте gemini из корня проекта. Используйте символ @ для добавления main.cpp в контекст. Сформулируйте промпт по образцу листинга 69.1 с указанием версии Qt и C++, целью рефакторинга и требованиями к структуре файлов.
Средний уровень
Cursor: создание SettingsManager с правилами проекта
Установите Cursor и настройте правила проекта для Qt/C++-разработки (используя примеры из листингов 69.2 и 69.3). Затем в режиме Agent создайте класс SettingsManager с сохранением настроек в JSON, сигналами об изменениях и thread-safe реализацией. Проверьте, что сгенерированный код соответствует заданным правилам стиля.
Подсказки: Откройте Cursor Settings через Ctrl+Shift+J. Внесите общие правила в User Rules и правила C++ в Project Rules. Используйте режим Agent (Ctrl+.) для многошаговой задачи. Проверьте наличие Q_OBJECT, корректность parent ownership, современный синтаксис сигналов. Используйте итеративный подход: сначала базовая реализация, затем уточнения.
Сложный уровень
Интеграция MCP-сервера и визуальный рефакторинг UI
Подключите к Cursor MCP-сервер для работы с файловой системой или Git. Создайте Qt Widgets приложение с несколькими окнами. Затем нарисуйте на бумаге или в графическом редакторе улучшенный макет интерфейса одного из окон, загрузите скриншот в Cursor и попросите ИИ провести рефакторинг UI согласно визуальной ссылке. Убедитесь, что MCP-сервер используется для автоматической фиксации изменений в Git.
Подсказки: Изучите каталог MCP-серверов на mcpservers.org. Настройте MCP в Cursor Settings. Используйте символ @ для прикрепления изображения макета и # для указания конкретных .ui или .cpp файлов. В промпте укажите: “Рефактори UI согласно макету, сохрани функциональность, обнови layout и стили”. Используйте режим Plan для создания плана, затем Agent для выполнения. Не забудьте проверить безопасность MCP-сервера перед использованием.
💬 Присоединяйтесь к обсуждению!
Попробовали Gemini CLI или Cursor в своих Qt-проектах? Обнаружили интересные кейсы использования MCP-серверов?
Может быть, у вас возникли вопросы о выборе между CLI и ИИ-IDE, настройке правил проекта или интеграции ИИ-ассистентов в рабочий процесс команды?
Поделитесь своим опытом автоматизации рефакторинга, расскажите о неожиданных результатах работы с агентными режимами или помогите другим читателям разобраться с практическими аспектами ИИ-разработки на Qt!