Agentic Coding · RUПеревод редакции 7 октября 2026

Современные CLI-инструменты для работы с несколькими агентами

Современные терминалы вместе с CLI-инструментами дают возможности традиционных IDE: ripgrep + fzf для поиска, yazi для просмотра файлов, tmux/Zellij для управления панелями, lazygit для Git. При работе с несколькими агентами этот набор становится важной инфраструктурой: сессии переживают разрыв соединения, между рабочими деревьями можно быстро переключаться, а операции с файлами не прерывают ход работы.

Семь категорий: поиск (ripgrep, fd), редактирование и просмотр текста (micro, bat), навигация по файлам (eza, yazi, fzf, zoxide), управление сессиями (tmux, Zellij), история оболочки (Atuin), операции Git (lazygit) и автоматизация браузера (agent-browser). Они покрывают наиболее частые задачи CLI в работе с несколькими агентами.

Поиск и обнаружение​

ripgrep​

Результаты поиска ripgrep с подсветкой совпадений и номерами строк

ripgrep — инструмент построчного поиска на Rust, сочетающий скорость специализированных решений с гибкостью grep. Один исполняемый файл без зависимостей для разных платформ.

Отличия: по умолчанию в 10–20 раз быстрее grep, что важно при десятках поисков агента на одну задачу. Учитывает .gitignore, .ignore и .hgignore, отфильтровывая node_modules, результаты сборки и зависимости; это сокращает шум и ошибки разбора. Рекурсивный поиск выполняется по умолчанию (rg pattern ищет от текущего каталога вниз), без -r. Движок регулярных выражений Rust с поддержкой Unicode; для сложных Perl-совместимых шаблонов есть PCRE. Многострочный поиск доступен через --multiline-dotall. Совместим с fzf и ripgrep-all (rga) для PDF, архивов и сжатых файлов; выводит JSON, CSV и текст.

Кому подходит: разработчикам, исследующим код параллельно с несколькими агентами, где скорость десятков запросов складывается. Владельцам больших репозиториев (100 тыс. файлов и больше), где grep заметно медленнее. Командам, использующим поиск в скриптах, Makefile и CI/CD, которым полезен учёт .gitignore.

Компромиссы: некоторые продвинутые Perl-шаблоны не работают в движке Rust. Учитываемый по умолчанию .gitignore удивит тех, кто ожидает от grep поиска везде: для исключений нужен --no-ignore. Построчный вывод ограничивает поиск в бинарных файлах и глубоко вложенных структурах без дополнительных флагов или инструментов.

Установка:

# macOS
brew install ripgrep

# Cargo (Rust)
cargo install ripgrep

# Linux package managers
sudo apt install ripgrep # Debian/Ubuntu
sudo pacman -S ripgrep # Arch

fd​

Поиск файлов fd с цветовым различением каталогов и типов

fd — простая и быстрая замена find на Rust. Один исполняемый файл без зависимостей для разных платформ.

Отличия: каталоги, ссылки и исполняемые файлы различаются цветом без дополнительных флагов. По умолчанию учитывает .gitignore и .ignore, скрытые каталоги и исключения; это можно отменить через --no-ignore. Большие деревья обходит параллельно на нескольких ядрах, по умолчанию с четырьмя потоками (--threads). Поиск регулярными выражениями проще сложных условий find -name и -type. Вывод удобно передавать в xargs, parallel и ripgrep. Разумные настройки — регистронезависимый поиск в macOS, исключение скрытых файлов и цвет — не требуют конфигурации.

Кому подходит: инженерам, пишущим скрипты обхода больших рабочих деревьев для нескольких агентов; разработчикам, подающим найденные файлы в ripgrep; пользователям нескольких рабочих деревьев Git, которым нужен быстрый поиск файла без сложного синтаксиса find.

Компромиссы: синтаксис отличается от POSIX find, поэтому переносимые скрипты потребуют изменений. Сложные цепочки действий и условия -exec поддерживаются не полностью; иногда нужен сам find. Цветной вывод может мешать в конвейере, хотя fd обычно отключает его при перенаправлении.

Установка:

# macOS
brew install fd

# Cargo (Rust)
cargo install fd-find

# Linux package managers
sudo apt install fd-find # Debian/Ubuntu
sudo pacman -S fd # Arch

Редактирование и просмотр текста​

micro​

Редактор micro с подсветкой синтаксиса и строкой состояния

micro — терминальный редактор на Go с привычными по графическим приложениям сочетаниями клавиш. Один исполняемый файл без зависимостей для разных платформ.

Отличия: Ctrl+S сохраняет, Ctrl+Q выходит, Ctrl+F ищет — без модального редактирования. Из коробки подсвечивает более 130 языков. Поддерживает несколько курсоров в стиле Sublime, плагины на Lua, встроенный терминал и мышь.

Кому подходит: разработчикам, которым нужно быстро поправить файл во время работы агента без перехода в IDE; тем, кому режимы Vim избыточны ради одной строки; привыкшим к сочетаниям VS Code, Sublime и других редакторов.

Компромиссы: по сравнению с IDE функций мало: нет LSP, рефакторинг и навигация ограничены. Для сложных операций с несколькими файлами уступает Vim/Neovim. Для больших файлов свыше 1000 строк или глубокого исследования кода IDE удобнее.

Установка:

# macOS
brew install micro

# Linux (binary)
curl https://getmic.ro | bash

# Cross-platform (Go)
go install github.com/zyedidia/micro/cmd/micro@latest

Требований нет: статический исполняемый файл. Для буфера обмена в Linux необязательно можно установить xclip или xsel.

Fresh​

Терминальный редактор Fresh с палитрой команд

Fresh — терминальный редактор на Rust, созданный для быстроты и удобного обнаружения функций. Сочетает привычные клавиши, мышь и палитру команд с интеграцией LSP.

Отличия: немодальное редактирование с Ctrl+S, Ctrl+Z и Ctrl+F без необходимости изучать Vim. Меню и палитра команд помогают находить функции. LSP предоставляет переход к определению, диагностику в тексте, документацию при наведении и действия с кодом. Благодаря ленивой загрузке и структуре piece tree мгновенно работает с файлами более 10 ГБ (около 36 МБ памяти для файла 2 ГБ против примерно 2 ГБ у Neovim). Плагины TypeScript/Deno работают в песочнице; встроены файловый обозреватель и терминал.

Кому подходит: разработчикам, желающим редактировать в терминале с удобством IDE без режимов; работающим с огромными логами или данными; тем, кто хочет простоту micro и возможности LSP. TypeScript-командам, предпочитающим его экосистему Lua и Vimscript.

Компромиссы: молодой проект с небольшими сообществом и набором плагинов. Для разработки плагинов нужен Deno. Для простых правок проверен меньше, чем micro. Сложные макросы и цепочки плагинов Vim/Neovim пока воспроизведены не полностью.

Установка:

# macOS
brew tap sinelaw/fresh && brew install fresh-editor

# Cargo (Rust)
cargo install fresh-editor

# npm (cross-platform)
npm install -g @fresh-editor/fresh-editor

# Linux package managers
yay -S fresh-editor # Arch (AUR)

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

bat​

bat показывает подсветку кода, номера строк и изменения Git

bat — замена cat на Rust с подсветкой синтаксиса и интеграцией Git. Один исполняемый файл для разных платформ, активно поддерживается.

Отличия: подсветка более 100 языков помогает не терять контекст при просмотре фрагментов кода. Интеграция Git отмечает изменённые строки (--diff сравнивает с индексом Git). Номера строк и перенос длинного текста доступны без пейджера less. Внешние определения синтаксиса подключаются через конфигурацию без дублирования. Переменная BAT_CONFIG_PATH управляет темой и стилем; учитываются системные цвета и настройки терминала.

Кому подходит: разработчикам, быстро просматривающим файлы во время работы агента без переключения в IDE; инженерам, проверяющим изменения Git перед их обработкой; пользователям предпросмотра yazi и fzf.

Компромиссы: чуть медленнее cat из-за подсветки, обычно незаметно. Для значков в некоторых настройках нужен совместимый Nerd Font. Определения нестандартных языков добавляются через конфигурацию.

Установка:

# macOS
brew install bat

# Cargo (Rust)
cargo install bat

# Linux package managers
sudo apt install bat # Debian/Ubuntu
sudo pacman -S bat # Arch

Операции Git​

lazygit​

Интерфейс lazygit для добавления изменений, коммитов и отправки

lazygit — текстовый интерфейс Git на Go для визуального управления ветками, интерактивного добавления изменений и просмотра коммитов. Работает на разных платформах и широко настраивается.

Отличия: дерево веток показывает структуру репозитория без запоминания команд. Интерактивный staging позволяет выбирать блоки и отдельные строки. Историю можно просматривать со встроенными diff. Клавиши настраиваются YAML; мышь выбирает элементы и прокручивает коммиты. Понимает несколько рабочих деревьев Git для параллельной разработки.

Кому подходит: разработчикам, которым нужен визуальный контекст веток нескольких рабочих деревьев; выполняющим сложные интерактивные rebase, cherry-pick и merge; желающим находить операции Git через меню.

Компромиссы: на огромных репозиториях производительность падает (ядро Linux: 57 секунд загрузки и 2,6 ГБ ОЗУ). Некоторые операции быстрее в обычном CLI; сочетания клавиш придётся освоить, хотя есть встроенная справка.

Установка:

# macOS
brew install lazygit

# Go
go install github.com/jesseduffield/lazygit@latest

# Windows
scoop install lazygit

# Linux package managers
sudo apt install lazygit # Debian/Ubuntu
sudo pacman -S lazygit # Arch

Требуется git. Дополнительно можно создать ~/.config/lazygit/config.yml.

Навигация по файлам​

eza​

Список файлов eza с иконками, цветом и метаданными

eza — замена ls на Rust, активно поддерживаемый форк заброшенного exa. Быстрый, многофункциональный инструмент с более удобными настройками по умолчанию.

Отличия: цвета типов файлов и разрешений включены сразу. Git показывает состояние файла (--git) или репозитория в каталоге (--git-repos). Размеры в длинном формате читаемы без флагов. Есть дерево (--tree), значки (--icons) и гиперссылки для терминалов. Исправлена ошибка сеточной раскладки exa.

Кому подходит: разработчикам нескольких рабочих деревьев Git, желающим сразу видеть состояние файлов; тем, кому нужны более удобные настройки ls без сложной конфигурации; пользователям современных Rust-инструментов.

Компромиссы: больше зависимостей, чем у ls; значкам нужны подходящие Nerd Fonts. Некоторые функции требуют настройки. Продвинутые параметры осваиваются дольше, но базовые работают сразу.

Установка:

# macOS
brew install eza

# Cargo (Rust)
cargo install eza

# Linux package managers
sudo apt install eza # Debian/Ubuntu
sudo pacman -S eza # Arch

yazi​

Файловый менеджер yazi с несколькими панелями и предпросмотром

yazi — терминальный файловый менеджер на Rust с полностью асинхронным вводом-выводом и распределением задач CPU между потоками. Находится в публичной бете, но пригоден для ежедневной работы.

Отличия: асинхронность сохраняет отзывчивость интерфейса на больших каталогах и удалённых файловых системах. Богатый предпросмотр изображений через Kitty, Sixel, iTerm2 и WezTerm, а также видео, PDF, архивов и кода с подсветкой. Плагины на Lua и менеджер пакетов. Клавиши в стиле Vim, визуальный режим, несколько вкладок, автодополнение. Клиент-серверная архитектура с pub-sub обеспечивает связь между экземплярами. Интегрируется с ripgrep, fd, fzf и zoxide.

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

Компромиссы: публичная бета быстро развивается. Сложнее небольшого nnn, почти не требующего настройки. После обычных файловых менеджеров придётся учить клавиши Vim. Нет функции отмены, которая есть в Vifm.

Установка:

# macOS
brew install yazi

# Cargo (Rust)
cargo install --locked yazi-fm yazi-cli

# Linux package managers
sudo pacman -S yazi # Arch

fzf​

Нечёткий поиск fzf с предпросмотром файла

fzf — нечёткий поиск на Go, мгновенно обрабатывающий миллионы элементов. Один исполняемый файл; зрелый проект с 2013 года, ставший стандартом среди CLI-инструментов такого типа.

Отличия: интеграция с оболочкой даёт Ctrl+R для истории, Ctrl+T для файлов, Alt+C для каталогов и **<TAB> для нечёткого автодополнения любой команды. Плагины fzf.vim и fzf-lua для Vim/Neovim; fzf-tmux открывает всплывающие окна tmux. В окне предпросмотра показываются файлы и diff Git. Настраивается переменными FZF_DEFAULT_OPTS и FZF_DEFAULT_COMMAND, принимает вывод любой команды через конвейер.

Кому подходит: разработчикам больших кодовых баз, желающим находить файлы и символы без IDE; активным пользователям оболочки для поиска в истории и выбора в скриптах; тем, кому нужен нечёткий выбор веток Git, контейнеров Docker, подов Kubernetes и процессов.

Установка:

# macOS
brew install fzf
$(brew --prefix)/opt/fzf/install # Shell integration

# Git clone
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install

# Linux package managers
sudo apt install fzf # Debian/Ubuntu
sudo pacman -S fzf # Arch
Интеграция fzf с оболочкой

Чтобы использовать все возможности fzf, после установки запусти соответствующий вариант настройки оболочки:

$(brew --prefix)/opt/fzf/install  # macOS Homebrew
~/.fzf/install # Git installation

Это включит Ctrl+R для истории, Ctrl+T для файлов, Alt+C для перехода по каталогам и **<TAB> для дополнения.

zoxide​

Переход zoxide в каталог по части имени

zoxide — замена cd на Rust, которая запоминает привычные переходы по каталогам. Один исполняемый файл без зависимостей для разных платформ.

Отличия: алгоритм frecency учитывает частоту и давность посещений. В каталог можно перейти по части имени: z proj найдёт /path/to/project. zi предлагает интерактивный выбор. Может служить прямой заменой cd через alias. Интеграции с файловыми менеджерами yazi и lf и с fzf упрощают поиск. После обучения переходы между каталогами ускоряются на 60–80%.

Кому подходит: инженерам, переключающимся между рабочими деревьями и проектами; разработчикам с глубокой структурой каталогов; командам с монорепозиториями и микросервисами, часто переходящим между сервисами.

Компромиссы: статистика маршрутов стабилизируется за несколько дней. Частичное совпадение иногда ведёт в неожиданный каталог; zi помогает выбрать явно. Для полной замены cd нужно настроить оболочку и освоить новые команды, хотя к z быстро привыкаешь.

Установка:

# macOS
brew install zoxide

# Cargo (Rust)
cargo install zoxide

# Linux package managers
sudo apt install zoxide # Debian/Ubuntu
sudo pacman -S zoxide # Arch

В конфигурации оболочки (~/.bashrc, ~/.zshrc или ~/.config/fish/config.fish) добавь eval "$(zoxide init bash)" или эквивалент для своей оболочки. Для интерактивного zi необязательно установить fzf.

Управление сессиями​

Критично для параллельной работы агентов: одновременный запуск четырёх–шести экземпляров Claude Code требует терминального мультиплексора. Ниже инструменты для такой разработки. Предполагается знакомство с перечисленными выше средствами навигации.

tmux​

tmux: две панели с разными терминальными сессиями

tmux — терминальный мультиплексор на C: сохраняет сессии, делит окна и запускает панели параллельно на локальных и удалённых серверах. Проверен в работе с 2007 года; рекомендуется для удалённых серверов и критичных процессов, где потеря терминала недопустима.

Отличия: отключаемые сессии переживают разрыв SSH: можно отключиться и подключиться из другого места, сохранив состояние. Клиент-серверная архитектура оставляет процессы на сервере после закрытия клиента. Горизонтальные и вертикальные панели показывают несколько агентов рядом, вкладки-окна организуют процессы с независимыми раскладками. Конфигурация ~/.tmux.conf программирует клавиши и плагины. tmux-resurrect сохраняет сессии при перезагрузке: после восстановления машины команда tmux-resurrect restore возвращает рабочие деревья и состояние редактора. Клавиши в стиле Vim настраиваются.

Кому подходит: разработчикам с четырьмя–шестью экземплярами Claude Code, каждому из которых можно выделить окно или панель; работающим на удалённых серверах при нестабильном SSH; DevOps/SRE, наблюдающим за длительными процессами; предпочитающим полностью клавиатурную разработку с vim или micro.

Компромиссы: панели, окна и модель сессий требуют около одной–двух недель освоения. Плагины, клавиши и темы могут усложнить конфигурацию. Для диагностики «застрявшей» сессии нужно понимать серверную архитектуру; иногда приходится завершить сервер и потерять сессии.

По сравнению со вкладками терминала: вкладки живут на клиенте и исчезают при разрыве соединения. Сессии tmux живут на сервере; сетевой сбой или сон ноутбука их не завершает. Перезагрузку самого сервера они без восстановления не переживают. Цена — более сложная модель, тогда как вкладки проще для одной машины.

По сравнению с Zellij: Zellij современнее и проще осваивается; tmux предлагает более чем 15 лет эксплуатации, меньший размер и доступность на удалённых серверах, где установить Zellij нельзя.

Установка:

# macOS
brew install tmux

# Linux
sudo apt install tmux # Debian/Ubuntu
sudo pacman -S tmux # Arch
sudo yum install tmux # RedHat/CentOS

# Build from source
git clone https://github.com/tmux/tmux.git
cd tmux
sh autogen.sh && ./configure && make
sudo make install

Требуются libevent и ncurses (обычно уже установлены). Дополнительно: tmux-resurrect для восстановления сессий (git clone https://github.com/tmux-plugins/tmux-resurrect ~/.tmux/plugins/tmux-resurrect) и менеджер плагинов tpm.

Zellij​

Рабочее пространство Zellij с панелями и плавающими окнами

Zellij — терминальный мультиплексор на Rust с современным интерфейсом, удобными настройками из коробки и плагинами WASM. Активно развивается и подходит на каждый день, но быстро меняется. Для удалённых серверов и критичной работы рассмотри tmux.

Отличия: готовые мозаичные, плавающие и стековые раскладки полезны сразу без настройки. Автоматические вкладки позволяют делить панели без ручного управления окнами. Плагины WASM можно писать на разных языках через соответствующие привязки. Визуальное меню режимов и клавиш помогает находить возможности. Сочетания по умолчанию, например Ctrl+стрелка, понятнее префикса tmux. Поиск по истории вывода встроен. Мышь выбирает, меняет размер и прокручивает панели.

Кому подходит: прежде всего локальной разработке на одной машине; инженерам, которым нужны современные настройки без глубокой конфигурации tmux; работе нескольких агентов с частыми переключениями; пользователям, готовым адаптироваться к изменениям клавиш.

Компромиссы: клавиши ещё меняются и после обновлений могут сбивать привычку. Работа на удалённых серверах экспериментальна, устойчивость сессий SSH проверена хуже, чем у tmux. Экосистема плагинов заметно меньше; для долгой производственной работы по SSH рекомендован tmux. Для конфигурации нужно освоить YAML/KDL.

По сравнению с tmux: удобнее из коробки и проще для локальной разработки; tmux вознаграждает глубокую настройку. Zellij уступает для удалённой работы, имеет меньше плагинов и меняющиеся клавиши.

По сравнению с панелями iTerm2 и WezTerm: разделение окна обычного терминала не сохраняется при разрыве SSH. Отсоединяемые сессии обеспечивают мультиплексоры: панели GUI живут на клиенте, сессии tmux и Zellij — на сервере или самой машине.

Установка:

# macOS
brew install zellij

# Cargo (Rust)
cargo install zellij

# Linux package managers
sudo pacman -S zellij # Arch
# Others: check https://zellij.dev/documentation/installation

Автоматизация браузера​

agent-browser​

agent-browser — CLI на Rust для автоматизации браузера специально ИИ-агентами. Нативный исполняемый файл для разных платформ; работает с любым агентом, выполняющим команды оболочки.

Отличия: дерево доступности возвращает компактные снимки с постоянными ссылками на элементы (@e1, @e2): агент нажимает по ссылке вместо хрупкого CSS-селектора или XPath. Экономный вывод — 200–400 токенов на снимок вместо 5000–15 000 для полного DOM — сохраняет контекст агента. Более 50 команд покрывают навигацию, формы, снимки экрана, изучение сети и хранилища. Сессии позволяют вести несколько изолированных браузеров с отдельным состоянием входа. Нативный CLI на Rust быстро разбирает команды без накладных расходов среды Node.js или Python во время работы.

Кому подходит: агентам, взаимодействующим с веб-интерфейсом: проверка изменений в браузере, заполнение форм, извлечение данных и проверка развёртываний. Пользователям CLI-агентов Claude Code, Cursor CLI и Copilot CLI, которым нужна автоматизация без настройки MCP-сервера. Разработчикам, предпочитающим детерминированный выбор элементов визуальному распознаванию скриншотов и хрупким селекторам.

Компромиссы: перед действием нужен снимок дерева — минимум две команды. Дерево доступности может не содержать динамических элементов без надлежащей ARIA-разметки; целевому приложению нужна семантическая разметка.

Пример работы:

agent-browser open example.com
agent-browser snapshot -i # Returns refs: [ref=@e1] "Example Domain", [ref=@e2] "More information..."
agent-browser click @e2 # Click by ref—deterministic, no selector fragility
agent-browser screenshot page.png
agent-browser close

Установка:

# npm (recommended)
npm install -g agent-browser

# Verify installation
agent-browser --version

Требуется Node.js 18+ для установки через npm и браузер на основе Chromium — встроенный или системный Chrome.

Почему ссылки на элементы работают лучше

Подход agent-browser со ссылками @e1 и @e2 даёт детерминированный выбор элементов, более надёжный, чем селекторы. Снимок дерева доступности отражает семантическую структуру, а не визуальную раскладку: агент понимает, что это за элемент, а не только где он расположен. Автоматизация устойчивее к изменениям интерфейса.


Связанные материалы курса:

  • Рычаги надёжности — процессы с несколькими рабочими деревьями и этими CLI-инструментами.
  • Терминалы — терминалы для эффективного использования CLI.
  • MCP-серверы — исследование кода и поиск подтверждений в интернете для CLI-агентов.