Журнал сеньора вайбкодера уроки из опыта, заметки и инсайты

Личный публичный архив мыслей: оформленные как уроки наблюдения, рефлексия, идеи и недельные сводки.

RSS
← Назад к ленте

Почему я всё чаще запускаю агентов в терминале

Человек в очках, в которых отражается терминал

Есть штука, которую я сначала списывал на ощущения.

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

Потом открываешь терминал. Один агент. Второй агент. Иногда несколько сессий параллельно. И внезапно всё ощущается легче.

Не потому что терминал магический. И не потому что приложения плохие. Просто у терминала меньше лишнего.

Модель считает не на моём ноутбуке

Первое, что тут важно не перепутать: большая модель обычно не крутится локально. Claude, Codex, OpenCode и похожие инструменты в большинстве рабочих сценариев отправляют запросы наружу, а ответ приходит из облака.

То есть ноутбук не «думает» всей моделью. Он делает другое: читает файлы, запускает команды, показывает ответы, держит состояние проекта, иногда индексирует код, вызывает сборку и тесты.

И вот тут начинается разница.

Если агент живёт в терминале, у него довольно узкая работа: получить задачу, прочитать проект, изменить файлы, выполнить команды, показать текст. Например, Claude Code прямо описывает терминальный режим как полноценный способ работать с проектом: редактировать файлы, запускать команды и управлять кодом из командной строки. Codex CLI тоже описан как агент, который запускается локально из терминала, читает, меняет и выполняет код в выбранной папке. OpenCode формулирует себя как агент для терминала, редактора и настольного приложения.

То есть терминал в этой схеме — не «бедная версия». Это нормальная рабочая поверхность.

Просто без витрины.

Красивое окно тоже работает

Когда мы говорим «приложение», легко представить себе просто окно. Ну да, кнопки, панели, вкладки. Какая разница?

Разница в том, что современное настольное приложение часто тащит за собой целую среду. Особенно если оно построено на Electron или вокруг редактора вроде VS Code.

Electron в своей документации прямо пишет, что наследует многопроцессную архитектуру Chromium: есть главный процесс, отдельные процессы отрисовки, окна и взаимодействие между ними. Это почти как маленький браузер, который живёт внутри приложения. Не как оскорбление, а как факт архитектуры. Подробно это описано в модели процессов Electron.

И у такой архитектуры есть цена. В документации Electron по производительности прямо говорится о снижении потребления памяти, процессора и диска, потому что эти расходы у приложений реальны, а не придуманы пользователями с тёплыми коленками и умирающей батареей. См. раздел Electron performance.

Поэтому, когда агент переезжает из терминала в красивую оболочку, к самому агенту добавляется ещё один слой: отрисовка, панели, дерево файлов, подсветка, вкладки, фоновые службы, состояние окна, интеграции.

Иногда это удобно. Иногда это просто лишний вес.

Редактор не бывает пустым

С редакторами история ещё интереснее.

Мы редко запускаем «чистый редактор». Обычно там уже живут расширения: подсветка, анализ языка, подсказки, Git, форматирование, проверка ошибок, поиск по проекту, встроенный терминал, панели ИИ.

VS Code сам признаёт эту реальность. В официальной странице про проблемы производительности сказано, что высокая нагрузка на процессор часто бывает связана с расширениями, а расширения выполняются в отдельном процессе Extension Host. Там же советуют открывать обозреватель процессов, отключать расширения и искать виновника через Extension Bisect. Это не форумная магия, а нормальная документация: VS Code Performance Issues.

Отдельно у VS Code есть документация про Extension Host: расширения живут в отдельной среде, иногда таких сред несколько, локально или удалённо.

И вот представим обычный рабочий день. У тебя открыт проект, редактор, расширения, агентская панель, встроенный чат, индексатор, терминал, Git, вкладки, предпросмотр. Потом ты просишь агента что-то сделать. И кажется, что «агент грузит ноутбук».

Но часть нагрузки может быть вообще не от агента. Она от города вокруг него.

Терминал в этом смысле похож на мастерскую без торгового центра вокруг. Стол, инструмент, лампа. Всё.

Несколько терминалов и одно большое приложение

Меня больше всего зацепило именно это ощущение: можно держать несколько терминальных агентов, и ноутбук не превращается в печку так быстро, как от одного тяжёлого приложения с агентским режимом.

Это не универсальный закон. Если агент в терминале начнёт гонять тесты, собирать проект, пересобирать фронтенд, запускать контейнеры и читать гигантскую папку, ноутбук тоже завоет. Терминал не отменяет физику.

Но терминал не добавляет лишнюю физику сверху.

Он не обязан постоянно отрисовывать сложную оболочку. Не обязан держать десятки визуальных элементов. Не обязан жить внутри редактора с расширениями. Не обязан быть ещё одним браузером в маске приложения.

И в долгой работе это чувствуется.

Особенно на ноутбуке. На рабочей станции с питанием от розетки можно махнуть рукой. А на ноутбуке всё честнее: лишний процессор, лишняя память, лишний фон — всё превращается в батарею, тепло и шум.

Мне не нужен красивый агент для каждой задачи

Я не хочу сказать, что приложения не нужны. Нужны.

Когда надо смотреть большой набор изменений глазами, удобно прыгать по файлам, сравнивать правки, править интерфейс, принимать мелкие подсказки прямо в коде — редактор выигрывает. Там визуальный слой не лишний, он помогает.

Но когда я хочу дать агенту задачу и оставить его работать, терминал часто оказывается честнее.

Попросить разобраться в баге. Запустить проверку. Переписать модуль. Собрать план. Пройтись по проекту. Параллельно открыть ещё одну сессию на другой задаче.

Для этого не всегда нужен большой интерфейс. Иногда он даже мешает, потому что создаёт ощущение, что я «работаю в приложении», хотя на деле мне нужен процесс, который делает работу.

А процессу не обязательно быть красивым.

Интерфейс — это тоже цена

Мы привыкли считать цену ИИ в токенах. Сколько запросов, какая модель, какой лимит, сколько стоит подписка.

Но на ноутбуке есть другая цена: интерфейс.

Красивое окно может быть удобным. Может быть приятным. Может снижать порог входа. Но оно не бесплатное. Оно живёт в памяти, ест процессор, держит фоновые задачи и иногда забирает внимание.

Терминал выглядит бедно, зато он почти ничего не обещает лишнего. Он просто даёт канал к агенту.

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

Мне не всегда нужен «умный редактор». Часто мне нужен умный работник, которому можно дать папку, задачу и немного свободы.

А для этого терминала хватает.