Потыкал я на досуге один из ИИ-терминалов и делюсь этим опытом. Об установке писать не буду, там все банально и просто: тыкаете мышкой и готово. А вот дальше — все очень занимательно. Экспериментировать я буду на своих реальных задачах, поэтому часть функционала в статье не упомяну. У всех разные задачи и потребности, здесь нет серебряной пули. Поехали!
Статью написал Роман Шубин, CTO и автор телеграм канала Bash Days.
Общие впечатления
Warp преподносит себя как терминал для DevOps-инженеров или аналог нашумевшего Cursor. То есть инструмент, который в 99% будет работать за вас, успевайте только командовать. Но желательно уметь правильно выражать мысли, а то наколдуете вместо золота кусок невнятного «ничего».
После запуска терминал выглядит довольно привычно: нет рюшечек, отсутствует эффект «новогодней елки». Все строго и интуитивно понятно. Вводите команды, получаете результат. По желанию можно и черта кастомизировать, все зависит от предпочтений.

Есть нюанс. Я запустил Warp на Windows, а вся моя основная работа проходит в WSL под дистрибутивом Ubuntu. Как быть? Все решается довольно просто: нажимаем Ctrl+Shift+P и выбираем нужное окружение:

Проверяем и видим, что все прошло как по маслу:

Я внутри WSL. Аналогичное можно провернуть из контекстного меню самого Warp, что даже удобнее:

Для полноценной работы все готово. Почти…
Я привык пользоваться терминалом в quake или dropdown-режиме. В этом режиме вы привязываете открытие терминала на горячую клавишу, по нажатии которой терминал «всплывает» поверх других окон. Нажали второй раз — терминал спрятался. Скорость работы в разы становится выше.
Включается такой режим через Settings → Features → Keys → Global Hotkey → Dedicated hotkey. Я для теста повесил на F2.

Работает! Но в этом режиме работает плохо по сравнению с другими подобными терминалами. После открытия и закрытия в терминал попадают управляющие символы и каждое нажатие клавиш сопровождается звуком колокольчика.
Но сегодня не об этом. В первую очередь я хочу понять, действительно ли с ИИ моя работа станет продуктивнее. Сегодня я делегирую ему часть задач:
- клонировать git репозиторий,
- создать в нем простой Flask-сервер,
- завернуть в Docker-образ,
- создать новую ветку и запушить в нее,
- написать пайплайн для деплоя,
- базово настроить новый сервер,
- поднять Podman,
- выкатить Flask-сервер в продакшен,
- выполнить несколько дополнительных задач.
Посмотрим, справится ли этот Warp с задачами или наоборот создаст мне головняк. Приступим.
Клонируем git-репозиторий
Ввожу промт: «Склонируй репозиторий git@github.com:bashdays/warp_test.git».

Ага, видим команду, которую он хочет выполнить. Спрашивает — Run? Конечно, Run! Если нажать стрелочку в этой кнопке, то можно выбрать Auto-approve, то есть, все команды будут выполняться без вашего участия.

Но настоятельно рекомендую не включать автоматический режим, по крайней мере, на продакшене. Не ровен час получишь окирпичивание сервера.

Супер, видим что репозиторий склонирован и он пустой. Мое первое впечатление — господи, какой же он тормозной! Руками бы клонирование заняло пару секунд, а тут он думал секунд 15. Но опять же, возможно, это зависит от модели, через которую он думает. В эру блокировок непонятно, кто кого замедляет.
Создаем Flask-сервер
Кидаем промт: «в папке с новым репозиторием, создай ветку dev, создай структуру файлов для поднятия простого flask сервера, который будет работать на 8080 порту, порт можно менять через .env файл, дополнительно нужно создать dockerfile для сборки образа и compose файл для поднятия сервера в podman, когда все будет протестировано и готово, запуш проект в репозиторий».

Пошло-поехало, теперь только успевай проверять и апрувить команды и файлы. Основной код сервера написан, выглядит вменяемо:

Файл с зависимостями, вопросов нет.

Создан файл .env с конфигурацией, как раз тот самый порт 8080.

Тут я был удивлен — Warp предложил создать .gitignore, хотя я не просил. Ладно, пусть будет, спасибо.

Dockerfile подъехал, годится, оставляем.

Compose готов, даже переменные подставил, прекрасно.

Опа, а это интересно! Он предлагает протестировать сборку образа, проверяет, установлен ли у меня Podman либо Docker. Соглашаемся.

Супер, образ собран, дальше видим, что оно хочет его запустить и проверить. А давай!


Проверка пройдена, все хорошо, остался последний шаг.


Готово!

Хммм…. Идем в репозиторий и смотрим, что внутри:

Великолепно. Просто магия какая-то. Я потратил около 20 секунд на описание задачи, а все остальное сделал Warp. Да, если бы я включил auto-approve было бы заметнее. Что прикольно, в репозиторий не попал файл .env в чистом виде — это как раз заслуга ИИ, который вовремя вспомнил об этом и предупредил утечку критичных данных.
Что по минусам.
- Скорость работы самого терминала. Господи, какой же он тугой. Нет, не выдача результатов от ИИ, а именно внутренние ощущения, как будто он на какие-то доли секунды подвисает. Это напрягает.
- Ну и возникли проблемы с копипастой. Ctrl+C/Ctrl+V как-то совсем неадекватно работает, приходится пользоваться контекстным меню. Но тут опять же личные предпочтения — я привык к другому терминалу и, наверное, слишком много хочу.
Вот еще несколько статей о терминалах:
Настройка сервера
Да, сначала нужно подготовить новый сервер и только потом писать пайплайн для деплоя. Я создал новую виртуальную машину с внешним IP 155.212.238.11.
Пишем промт: «подключись по ssh серверу 155.212.238.11 с ключом shuba под юзером root, обнови пакеты, установи podman и всё необходимое чтобы задеплоить проект из git репозитория который ты сделал выше, установи mc и htop, деплоить ничего не нужно, нужно подготовить только сервер».

Рассуждает он явно не на русском языке, а очень хотелось бы. Скорее всего, в настройках Warp можно задать контекст и тогда получим русский, но это не точно. Насколько я знаю, если пишете запрос на русском языке, ИИ переводит его на английский и только потом начинает работать.

Ага, ключи нужные нашел, отлично.

А вот собственно и команды, которые он собирается выполнить, поехали!

Процесс пошел. Выглядит страшно. Никакого контроля, вот поэтому не рекомендую повторять такое на продакшене.

Готово. Идем на сервер и проверяем:




С виду все в порядке: все, что просили, Warp успешно сделал.
Пишем пайплайн
Кидаем промт: «напиши пайплайн для этого кода на продакшен, напиши его и запуш в репу, в пайплайне нужно включить автодеплой после любого коммита в ветку dev, деплой происходит с помощью подключения по ssh к серверу, приватный ssh ключ уже прописан в настройках гит репозитория в параметре SSH_PRIVATE_KEY».

Перебирает SSH-ключи, правит локальные конфиги. А вот и готовый пайплайн:

Не указав в запросе имя SSH-ключа, Warp перебрал все доступные в папке ~/.ssh и выбрал подходящий, с которым смог подключиться. Хотя у меня ключ изначально был другой. Ладно.
По итогу все прошло хорошо. Снова идем в репозиторий и смотрим в наш пайплайн:

Супер! Все само куда нужно залетело и запустилось. Не смею вам мешать, дорогой Warp.
Идем в action и смотрим:

Вот это да! Кажись, оно и задеплоилось. Ну правильно, ведь пайплайн будет запускаться при любом коммите в ветку dev. Справедливо. Ладно, идем на сервер:

Ха! Шикарно, оно уже и работает. Посмотрим в браузере:

Работает, собака! Ну что вам сказать, дорогой читатель? Это было волнительно.
Давайте плюсом запихнем туда экспортер для Prometheus и попросим написать bash-скрипт.
Вводим промт: «установи на сервер node_exporter, напиши bash скрипт и положи в /usr/local/sbin который будет через curl получать ответ страницы selectel.ru и создавать prometheus файл с метриками, этот файл должен подхватывать node_exporter, не забудь про крон для скрипта».

Умный! Сразу подцепил текстовый коллектор уже на этапе установки экспортера метрик, молодец.
Проверяем:

Экспортер успешно установлен, проверяем скрипт:

Проверяем, как экспортер подхватил метрики из скрипта:

Проверяем кроны:

Ну что тут сказать: ни единого падения, все мои запросы были обработаны с первого раза. Я потратил время лишь на создание этих запросов. Чувствую себя тимлидом и каким-то начальником, который дал задачу подчиненному. Но в отличие от подчиненного, все задачи были сделаны за минимальный отрезок времени.
Что прикольно, команды можно не писать текстом, а наговаривать в микрофон. Это прям киллер-фича. Надиктовал и пошел кофе пить, а оно вам само инфраструктуру подняло и выкатило ваши поделки.
Ну и самое интересное. Давайте попробуем скомандовать удалить сервер. Как думаете — выполнит?
Командуем: «эй ты, мне больше этот сервер не нужен, сотри все данные на нем».

А не хочет! Попробуем уломать:

Вот так, защита от дурака присутствует, и это хорошо. Но сдается мне, если подключить свою анархическую модель, она даже не спросит и просто уничтожит все по щелчку пальцев.
Кстати, впервые с ИИ в терминале я познакомился, когда писал о SelectOS. На сайте реализован функционал по поиску документации, этакий AI-консультант.

Выглядит это прям хорошо, да и ответы вменяемые. Таких консультантов сейчас много куда встраивают, я активно пользуюсь ими в некоторых приложениях. Порой такой ассистент дает более емкий и быстрый ответ, чем обычный запрос в саппорт через тикет.
Выводы
Да, сам Warp по ощущениям неповоротливый. И на каждый день, я бы его не стал использовать. Но под какие-то рутинные задачи вполне сгодится. Самый большой минус — он платный. Бесплатного периода надолго не хватит, а чтобы оплатить подписку из РФ, нужно очень сильно постараться. Палка о двух концах. Но если есть возможности и деньги, почему нет.
Все эти «умные терминалы» способствуют деградации, проверено на себе. С одной стороны, задача решается быстрее с таким помощником. С другой, вы не задумываетесь о последствиях и мозг теряет бдительность и нейронные связи. Внезапно отключили интернет — и вы как слепой котенок будете сидеть в черном окне, не зная, что делать. Ведь за вас это делал робот.
Я уверен, что на рынке полно таких ИИ-терминалов. Сильно не вникал в эту область, хватило и этого опыта в Warp. Все остальное, думаю, будет похожим.
Это как в меме, когда упал Cloudflare, разработчики полезли в ChatGPT чат за советом, а он не работает, потому что OpenAI проксировался через Cloudflare. Получился замкнутый круг. Как в бородатом анекдоте — unzip.zip.
Даже создание простых алиасов в Shell — это вредная привычка. Попадете вы на голый сервер — и чего? Все ваши короткие алиасы не работают. А тот же Warp — целая языковая модель, которая сама думает и решает за вас: минимум усилий, минимум знаний.
Подобные инструменты хороши, когда вы условный администратор игрового сервера и вам нужно сделать что-то техническое. Сделал это через такой ИИ-терминал и забыл, вам в будущем не нужно связывать эти команды со своей профессией.
А вот если вы метите в IT, то — никаких Warp, только хардкор: через страдания, насмотренность и мышечную память.
Такие дела. Как говорил мой друг — всегда думайте своей головой.