Агенты в командной строке

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

[ рис. Четвёртый уровень: агенты, которые живут в терминале, в виде марок. ]
Почему терминал быстрее всего
Окно терминала это примерно сто двадцать колонок текста, и в них весь интерфейс: тут нечего изучать, потому что нет ни панели, ни боковой колонки с одиннадцатью значками, ни проекта, который надо открыть. Ты указываешь агенту папку и пишешь одну фразу, а модель читает папку, а не твоё описание папки.
Разницу эту легко недооценить, пока не почувствуешь, ведь второй и третий уровни всё ещё требуют, чтобы контекст нёс ты, и просят вставить сюда функцию, описать эту ошибку, объяснить, как связаны два файла. На четвёртом ассистент сам запускает команду, сам гоняет тесты, сам читает падение и сам пробует починить, а ты читаешь результат, и копирование из этой работы исчезает, хотя именно оно и было почти всей её стоимостью.
Есть и вторая причина, по которой выигрывает терминал, и она не про скорость: всё, что делает агент в командной строке, оставляет след из команды, файла и строк, а от окна чата остаётся прокрутка. Когда что-то ломается, одно из двух это доказательство, а другое воспоминание о разговоре, и разница между ними чувствуется ровно в тот момент, когда тебе надо что-то починить.
Первый запуск, шаг за шагом
Я каждый день работаю в Claude Code, поэтому разбор будет про него, а остальные в поле устроены в общих чертах так же, и речь о них в следующем разделе.
1. Поставь его и запусти в той папке, где он должен работать, но не на весь диск, а на один проект: команда называется claude и стартует в том каталоге, где ты стоишь, а это весь его контекст.
2. При первом запуске он спрашивает, доверяешь ли ты папке, и этот экран стоит прочитать внимательно, потому что там сказано, что агент сможет здесь делать, ещё до того, как ты что-то напечатал. А если в папке есть файл настроек, он ещё и перечислит поимённо разрешения, которые тот выдаёт заранее, и по этому списку уже видно, насколько далеко ты его пускаешь.
3. Правила для проекта живут в файле настроек (.claude/settings.json), где в списке разрешённого лежат инструменты и шаблоны команд, а режим по умолчанию решает, сколько всего будет спрашивать. У меня заранее разрешены чтение, правка, запись и node, то есть тот же список, который я дал бы новому коллеге в первый день.
4. Дальше ты пишешь задачу, а не запрос, и «добавь в cli.mjs флаг --json» это именно задача, потому что задача тем и отличается от запроса, что её можно проверить: флаг либо появится, либо нет.
5. Читай то, что он говорит, прежде чем он начнёт действовать, если он вообще что-то говорит, ведь часто он сначала называет план, а это самое дешёвое место в сессии, чтобы остановить то, чего ты не хотел.

[ рис. Та же сессия, что и на обложке. Собственная подсказка инструмента стоит в строке ввода приглушённой, и по ней видно, что напечатал её не я. ]
В этой сессии форма всего уровня видна целиком: он прочитал проект, изменил один файл, прогнал тесты и доложил, что прошли три из трёх. А потом отметил то, что я бы пропустил, ведь флаг вытащил наверх float, который текстовый вывод до этого округлял, и одно и то же число стало выглядеть в JSON иначе; сам я об этом не просил и не нашёл бы этого, читая диф, потому что в дифе всё было правильно.
До чего он может дотянуться не спрашивая
Вот эту часть и надо сделать правильно, а сложного тут нет: агент в командной строке спрашивает разрешения в одном из нескольких режимов, и режим это настройка, а не характер.
Понимать надо средний режим, в котором правки файлов перестают спрашивать, а всё остальное продолжает, и именно в нём сделан снимок ниже. В трёх строках этого запроса вся история про безопасность: да, один раз, да, и больше не спрашивай до конца сессии, нет. Второй вариант люди нажимают не читая, и именно он превращает полезного ассистента в программу с твоими ключами.

[ рис. Запрос разрешения, снятый вживую. Средний вариант стоит перечитать дважды. ]
Правила, которые я держу, собирались по одному, и каждое из них когда-то себя оправдало:
1. Начинай в режиме, где он спрашивает, и ослабляй его для конкретного проекта. Папке, которой я доверяю, достаётся файл настроек, а папке, которую я разглядываю, остаётся режим по умолчанию, и менять это правило стоит только тогда, когда ты уже понимаешь, чего именно в нём не хватает.
2. Читай внимательно, под какие команды на самом деле подходит твоё разрешение. Разрешение выдаётся на целую команду, поэтому правило для python3 не покрывает ls && python3 something.py, и вторая команда всё равно остановится и спросит, а составные команды это как раз то место, где аккуратный с виду список тихо течёт.
3. Сделай коммит, прежде чем отпустить его работать по всему проекту. Это не про недоверие, а про разницу между ответом на вопрос «что изменилось» командой и ответом по памяти, который звучит точно так же уверенно и стоит ровно ничего.
4. Проси по одному делу за раз, а не весь список сразу. Маленький диф, который ты правда прочитал, лучше большого, который ты одобрил, потому что он выглядит правдоподобно, и разница тут не в размере, а в том, сколько из него ты способен проверить.
5. Читай диф, а не пересказ того, что в нём написано. Пересказ написан тем, кто внёс изменение, а диф и есть изменение, и это единственное из двух, что можно проверить построчно.
Остальные игроки
Пять инструментов стоит знать по именам, и различаются они не столько возможностями, сколько тем, где именно идёт работа и кто может её остановить.
Claude Code от Anthropic, и он же тот, из которого написан этот текст, потому что в нём я работаю каждый день. Для кого: тем, чья работа живёт в файлах и кто уже не верит, что окно чата это правильная форма для неё. Сколько стоит: входит в подписку на Claude, а платить по токенам через API-ключ это альтернатива; в начале сессии он сам пишет, на каком варианте ты сидишь, и это настройка, которую стоит проверить один раз и запомнить. Чего не умеет: небрежно обходиться с разрешениями, и он не видит проект, в котором ты его ни разу не открывал. Зачем мне это: работа, которую можно описать одной фразой и которую мне лень печатать, а ещё чтение чужого кода, в котором я оказался впервые.
Codex от OpenAI, и это самый ясный пример того, куда движется уровень: один агент, несколько мест, где его можно запустить. В семействе главный именно вариант для командной строки, а приложение вокруг него делает выбор явным, и под строкой ввода там стоят три слова, которые и есть продуктовое решение: local, worktree, cloud. Local работает с твоей копией проекта. Worktree значит, что агент работает с отдельной копией репозитория, поэтому плохое изменение не тронет то, на что ты смотришь. Cloud значит, что запуск идёт вообще не на твоей машине, и тогда твои локальные команды ему недоступны.

[ рис. Скриншот: приложение Codex, снял Alisher. Самое интересное в нём это три слова под строкой ввода. ]
Для кого: тем, кто уже платит OpenAI за подписку, потому что она это покрывает, а ещё тем, кому нужен облачный вариант, потому что их ноутбук закрывается в самый неподходящий момент. Сколько стоит: входит в тариф ChatGPT или считается по токенам с API-ключом, и второй вариант дороже ровно настолько, насколько ты им пользуешься. Чего не умеет: запускать твои локальные команды, если работу отправили в их облако; звучит очевидно, а людей это удивляет ровно один раз. Зачем мне это: как второе мнение, потому что два агента, которые не согласны насчёт одного дифа, полезнее любого из них по отдельности.
Gemini CLI от Google, и он просит меньше всего, чтобы его попробовать: он с открытым кодом, входит по аккаунту Google с бесплатным тарифом, которого хватает на то, чтобы составить мнение, и отказывается работать в папке, которой ему не разрешили доверять. Для этого уровня такой первый рефлекс правильный. Для кого: тем, кто хочет дельного агента, но не готов сегодня решать насчёт подписки. Сколько стоит: начать не стоит ничего, а за бесплатными лимитами идут API-ключ или платный тариф, так что попробовать можно прежде, чем что-то решать. Чего не умеет: тягаться с окружением вокруг Claude Code, где skills, hooks и подключения собирались дольше и потому успели обрасти чужими примерами. Зачем мне это: прочитать папку с документами и ответить на один вопрос по ним, то есть как раз та работа, с которой бесплатный тариф справляется честно.
Antigravity CLI это командная строка менеджера агентов из прошлого текста, и вызывается он как agy. У Google история с разрешениями самая явная из пяти, потому что у режимов есть имена, от strict через request-review до always-proceed, а рядом с ними живут режим proceed-in-sandbox и флаг --sandbox. Доверенные папки и список разрешённого лежат в настройках, плагины умеют собрать в одну установку навыки, правила и MCP-серверы, а режим печати выполняет один запрос и выходит, ничего не оставляя после себя. Для кого: тем, кто хочет, чтобы песочница была настройкой, которую он выбрал сам, а не обещанием со страницы продукта. Сколько стоит: входит в продукт Antigravity, а точную цену смотри на странице тарифов в тот день, когда читаешь: этот угол меняется быстро. Чего не умеет: рассказать всю правду одной командой, потому что справка внешней оболочки не перечисляет команды, которые существуют только внутри запущенной сессии. Зачем мне это: в основном наблюдаю за ним, потому что он самый новый из пяти и самый настойчивый в том, как агентами надо управлять.
opencode это вариант с открытым кодом, и назвать его стоит потому, что он снимает ограничение в виде аккаунта: он работает в терминале, берёт того провайдера, на которого ты его направишь, и ничего в нём не требует подписки у компании, которая заодно делает модель. Для кого: тем, кто хочет, чтобы агент был программой, которую можно прочитать и изменить по своему усмотрению. Сколько стоит: сам инструмент бесплатный, а за токены ты платишь тому, кто их отдаёт, и это может быть и не та компания, чью модель ты выбрал. Чего не умеет: дать полировку продукта, за которым стоит финансирование, и острые края там настоящие, а не косметические. Зачем мне это: пока никак, и честнее сказать это, чем делать вид, что наоборот.
А редакторы из прошлого текста обзавелись своими командными строками, включая Cursor, так что один и тот же агент может работать и с закрытым редактором. Для кого: тем, кто уже платит за редактор, потому что агент входит в тот же счёт и отдельно за него не просят. Сколько стоит: входит в подписку на редактор, а если она у тебя уже есть, то это ничего не добавляет к расходу. Чего не умеет: быть причиной менять редактор, и этого не заявляет даже его маркетинг. Зачем мне это: те же задачи, что и в терминале, на машине, где редактор уже стоит и настроен.
Как читать изменение
Привычка, которая держит этот уровень безопасным, укладывается в одно предложение: читай изменение, а не утверждение об изменении.
На практике это значит диф целиком, прежде чем двигаться дальше, и память о том, что сессия, где выполнились четыре команды и изменились два файла, покажет всё это, а кусает как раз то, что ты пропустил. Это значит ещё и замечать, откуда взялась подсказка в строке ввода: на снимке выше фразу там написал инструмент, а не я, и подсказка хорошая, но она всё равно не твоя мысль, а разница становится важной ровно тогда, когда за изменение отвечаешь ты.
Где это окупается вне программирования
В названии уровня есть программирование, и полезная половина тут совсем не про него, потому что упирается она в файлы, а не в код.
Папка заметок, в которой шесть коротких записей копились почти два месяца. Файлы с датами собираются в один журнал, даты сохраняются, оригиналы остаются на месте, и вся эта работа занимает две минуты, а руками такое вечером во вторник не делает никто.
Файлы, к которым надо применить одно и то же правило по имени. Тридцать фотографий с тремя разными соглашениями в именах или выгрузки, где дата стоит в середине имени: задача на одну фразу с настоящим дифом в конце.
Документы, которые и так надо прочитать, и вопрос по ним всего один. Папка отчётов и вопрос, что изменилось в цифрах за этот квартал, а в ответе будут названы файлы, которые он прочитал, и по ним же его можно проверить.
Дело, которое должно происходить по расписанию и без твоего участия. Та же команда в задании по расписанию делает всё без тебя, и это тема следующего уровня, а не этого, а работает здесь потому, что инструмент это команда, которая запускается и завершается.

[ рис. Не программистская половина уровня: шесть заметок прочитаны, один файл написан, ничего не удалено. ]
Итог, если честно
Уровни ниже просят думать про формулировки, а этот просит думать про доступ, потому что модель больше не отвечает по памяти, а действует в твоей папке. Именно поэтому режим разрешений и список разрешённого стоят десяти минут внимания до первой настоящей задачи, и поэтому пять минут на чтение дифа потом дешевле любой альтернативы.
Начни с одного проекта, в режиме со вопросами и с чего-нибудь маленького и проверяемого, добавляй правила для того, что ты уже дважды одобрил, и держи дифы короткими. Если уровень всё ещё кажется прыжком, то он и есть прыжок: больше ничто в этой лестнице не меняет того, что программа может сделать с твоей машиной, и ничто не меняет твоего суждения о ней.
Всё в этой серии складывается под тегом The AI ladder. Дальше: запуск модели у себя на компьютере, а потом второй мозг, который читает сам себя.