
Когда IDE перестала быть центром разработки
В какой-то момент я поймал себя на мысли: у меня больше нет «основного инструмента разработки».
Есть Xcode, VSCode, терминал, таск-трекер, wiki, Git-клиент — и ещё десяток окон. Любая задача превращается в переключение между ними.
И это казалось нормой. Потому что по-другому просто не было.
Но всё начало меняться, когда в рабочие процессы пришли БЯМ.
Больше года я использую их в работе, и постепенно дошёл до простой мысли:
большинство действий я теперь делаю через агента.
Агенты:
- проводят исследования
- пишут код
- работают с задачами
- взаимодействуют с календарём
- и делают ещё десятки вещей
Раньше под каждую из этих задач был отдельный инструмент.
Теперь — один интерфейс.
И это полностью ломает привычную модель разработки.
Почему одного чата недостаточно
Когда агенты становятся основным инструментом, вскрывается важное ограничение.
Агент — это не «умный IDE». Это система с очень конкретными границами.
Первая проблема — контекст.
Контекстное окно не бесконечное. Более того, его эффективный размер довольно маленький.
Если складывать туда всё подряд, модель быстро начинает деградировать: теряет нить, путается и даёт всё более слабые ответы.
Вторая проблема — артефакты.
Чтобы агент работал эффективно, ему нужно помогать:
- передавать документы
- давать планы
- подсовывать код
- сохранять результаты отдельно
И вот тут происходит важный сдвиг:
работа начинает строиться не вокруг чата, а вокруг набора артефактов + контекста.
Чат — это просто интерфейс. Не источник истины.
Из этого следует простое правило:
под каждую задачу нужен отдельный контекст.
А значит:
- отдельные чаты
- отдельные наборы файлов
- отдельные состояния
Изначально я пытался делать это в VSCode. Там есть всё: чат, файлы, терминал.
Но очень быстро начался хаос:
- десятки вкладок
- непонятно, где какая задача
- какие у агента доступы
- какие подключены «скиллы»
И самое главное — ощущение потери контроля.
Часть задач при этом всё равно уезжала в терминал.
В какой-то момент стало очевидно:
IDE перестала быть центром разработки.
И тогда я решил пойти в самое базовое и универсальное окружение — в терминал.
Ghostty: терминал как основа окружения
Терминал оказался почти идеальным решением: через него можно выполнить любую задачу, запустить любой инструмент и дотянуться до всего.
И даже организовать вкладки под разные задачи.
В качестве терминала я выбрал Ghostty — он быстрый и имеет отличные настройки по умолчанию.
Установка:
brew install --cask ghostty
Дальше — небольшая настройка, чтобы избежать конфликтов хоткеев с мультиплексором:
# config.ghostty
macos-option-as-alt = true
keybind = alt+left=unbind
keybind = alt+right=unbind
keybind = alt+up=unbind
keybind = alt+down=unbind
Без этого часть горячих клавиш в Zellij просто не будет работать.
Zellij: сессии и панели под каждую задачу
Следующий шаг — организация пространства внутри терминала.
Мне нужен был мультиплексор, чтобы не просто выполнять команды, а держать перед глазами сразу несколько источников информации.
Я выбрал Zellij. Да, отчасти потому что он «модный и стильный», но главное — он быстрый и удобный.
Zellij поддерживает панели, плагины, сессии — в общем, всё, что нужно.
Установка:
brew install --cask zellij
Добавляем layout:
# ~/.config/zellij/layouts/dev.kdl
layout {
default_tab_template {
pane size=1 borderless=true {
plugin location="zellij:tab-bar"
}
pane split_direction="vertical" {
pane stacked=true {
pane command="yazi"
pane command="lazygit"
pane
}
pane command="claude" size="30%"
}
pane size=2 borderless=true {
plugin location="zellij:status-bar"
}
}
}
Таких layout’ов можно сделать несколько — под разные типы задач или конкретные сценарии работы.
Добавляем удобную команду запуска:
# .zshrc
dev() {
local title
if [ $# -gt 0 ]; then
title="$*"
else
title="$(basename "$PWD")"
fi
title="${title//\//-}"
zellij options \
--session-name "$title" \
--attach-to-session true \
--default-layout dev
}
Команда создаёт сессию с именем текущей папки или заданным вручную. Так проще не теряться между задачами: можно назвать сессию по проекту, тикету или проблеме, которую сейчас решаешь.
Claude Code и Codex: агенты внутри рабочего окружения
В качестве агентов в терминале я использую Claude Code и Codex.
Тут, пожалуй, нечего особо добавить: в CLI они ощущаются даже удобнее, чем в UI.
Главное отличие в том, что агент перестаёт быть отдельным окном «где-то рядом». Он становится частью рабочего окружения: рядом с файлами, Git, терминалом, логами и всеми артефактами задачи.
Vim: редактор, который не выбивается из потока
Редактором стал Vim.
Конечно, потому что истинные гении инженерной мысли используют Vim.
Но если серьёзно — он хорошо ложится в терминальный workflow. Не нужно переключаться в отдельное приложение, не нужно вываливаться из сессии, не нужно ломать контекст.
Открыл файл, поправил, вернулся к агенту, посмотрел diff, запустил команду — всё в одном пространстве.
Yazi: быстрая навигация по файлам
Для быстрой навигации и просмотра файлов можно было взять MC, но зачем, если есть более современное решение в лице Yazi.
Он быстрый, удобный и поддерживает vim-подобные хоткеи.
Я почти его не настраивал, только добавил функцию, чтобы после выхода оставаться в последней директории:
function y() {
local tmp="$(mktemp -t "yazi-cwd.XXXXXX")"
yazi "$@" --cwd-file="$tmp"
if cwd="$(cat "$tmp")" && [ -n "$cwd" ] && [ "$cwd" != "$PWD" ]; then
cd "$cwd"
fi
rm -f "$tmp"
}
Мелочь, но очень полезная: можно походить по проекту через Yazi, выйти — и сразу оказаться там, где закончил навигацию.
Lazygit: Git без выхода из сессии
Для работы с Git я выбрал lazygit.
Он закрывает почти все повседневные сценарии:
- посмотреть diff
- собрать commit
- переключиться между ветками
- сделать rebase
- быстро понять состояние репозитория
Да, возможно, когда-нибудь я найду ещё более blazing fast альтернативу. Но пока lazygit просто делает свою работу и хорошо вписывается в терминальное окружение.
Как это складывается в единый workflow
Со временем вся эта система начала складываться в единый workflow:
- каждая задача — отдельная сессия
- у каждой сессии — свой контекст
- агент работает не в «чате», а в окружении
- терминал становится точкой сборки всего этого
В итоге терминал оказался не просто альтернативой VSCode.
Он стал чем-то большим —
операционной системой для работы с агентами.
IDE строились вокруг кода.
Терминал — вокруг процессов.
А в эпоху агентов именно процессы становятся главным.
Как выглядит один мой рабочий цикл
У меня есть три типовых сценария работы:
- изменения в коде (основные проекты, утилиты, инфраструктура)
- ресёрч, проектирование и документация
- быстрые вопросы и навигация по знаниям
1. Работа с кодом
Цель — внести конкретные изменения в проект.
Обычно здесь не требуется много артефактов: максимум — файл с планом.
Я открываю терминал, перехожу в папку проекта и запускаю zellij с dev-layout, называя сессию по задаче.
Дальше:
- при необходимости смотрю структуру проекта через Yazi
- проверяю состояние репозитория через Lazygit
- основное взаимодействие — с агентом
Я передаю агенту задачу и контекст.
Если плана нет — прошу его сформировать и сохранить в plan.md.
План я быстро просматриваю через Yazi или Vim, после чего отдаю задачу на выполнение.
Агент занимает фиксированное место на экране, а вторую панель я переключаю между Lazygit и файловым менеджером — для проверки изменений и навигации.
2. Ресёрч и документация
Здесь я работаю не с кодом, а с идеями, структурами и текстами.
У меня есть отдельная директория с проектами: от небольших заметок до больших ресёрчей.
Я выбираю нужный проект и так же поднимаю сессию в zellij.
Внутри — в основном .md файлы.
Связка Yazi + Vim позволяет:
- быстро перемещаться по материалам
- редактировать вручную
- или делегировать задачи агенту
При этом агент работает не только с локальными файлами.
Он даёт доступ к корпоративным системам — wiki, таск-трекеру и другим источникам.
Причём в обе стороны:
- может находить и подтягивать оттуда информацию
- и может обновлять данные — писать документацию, заводить или менять задачи
Агент здесь особенно полезен: он помогает структурировать мысли, дополнять материалы и связывает локальный контекст с внешними системами.
3. Быстрые вопросы
Это самый лёгкий сценарий.
Отдельная вкладка терминала, где открыт только агент.
Без сессий, без сложной структуры — просто задать вопрос:
- как что работает
- где что лежит
- кто за что отвечает
- какие задачи актуальны
Как это ощущается в целом
Одновременно у меня может быть открыто больше десятка таких сессий.
Но я не теряюсь: по названию сразу понятно, какая сессия за что отвечает.
Внутри каждой — полный набор инструментов:
агент, Git, редактор, файловая навигация и терминал.
Если нужно — я добавляю панели под конкретную задачу, не выходя из контекста.
Вся работа оказывается собрана в одном месте:
без переключений между приложениями, без потери состояния.
Терминал в итоге становится не просто интерфейсом,
а средой, в которой каждая задача живёт своей изолированной жизнью —
и при этом остаётся под полным контролем.
Добавить комментарий