Skip to main content

Работа с AIDER

Aider — это Open Source CLI-инструмент (консольная утилита), созданный специально для парного программирования с LLM прямо в вашем терминале.

В отличие от классических плагинов для VS Code, Aider спроектирован вокруг глубокой интеграции с Git и концепции Репозиторной карты (Repository Map).

Как устроено общение с моделью в Aider

Процесс взаимодействия с моделью в Aider строится по схеме «Чат \ Понимание контекста \ Правка файлов \ Git Commit»:

  1. Контекст файлов (In-Chat Files):

    Вы явно добавляете в чат файлы, которые модель должна редактировать или читать, с помощью команды /add path/to/file.cs. Aider держит их содержимое в актуальном состоянии в окне контекста.

  2. Автоматическая карта репозитория (Repo Map):

    Даже если вы добавили в чат всего один файл, Aider сканирует весь ваш Git-репозиторий с помощью парсеров tree-sitter. Он строит компактную карту архитектуры: имена классов, методов, сигнатуры и их взаимосвязи по всему проекту. Эта карта автоматически передается модель в сжатом виде — нейросеть «знает» о существовании остальных сервисов и DTO, не перегружая контекстное окно лишним кодом.

  3. Специальный формат edits (Edit Formats):

    Aider не заставляет модель переписывать 500 строк файла целиком. В зависимости от выбранной модели он заставляет её отвечать в формате SEARCH/REPLACE блоков (показывает, какой кусок кода найти и на что заменить). Это резко снижает рассуждения и экономит токены.

  4. Автоматические Git-коммиты:

    Как только модель присылает правки, Aider сам применяет их к файлам на диске и автоматически делает аккуратный git commit с понятным описанием (например, git commit -m "Add UserDTO mapping"). Если результат вам не понравился, достаточно ввести /undo — и Aider откатит изменения.

Установка AIDER

Установка Aider через pipx — это официальный и наиболее рекомендуемый способ, так как он изолирует зависимости Aider от системного Python и других пакетов в WSL/Linux.

Описанные ниже действия проверялись мной в системе WSL.

Выполните следующие шаги в терминале WSL:

Шаг 1. Установите pipx (если он еще не установлен)

Bash
sudo apt update
sudo apt install -y pipx
pipx ensurepath
(После выполнения pipx ensurepath может потребоваться перезапустить терминал или выполнить source ~/.bashrc, чтобы пути к бинарникам обновились).

Шаг 2. Установите Aider

Выполните команду установки:

Bash
pipx install aider-chat

Шаг 3. Доустановите SOCKS и сетевые зависимости (Обязательно для OpenRouter / WSL)

Чтобы избежать ошибок вида Missing dependencies for SOCKS support при работе через OpenRouter или прокси, сразу внедрите сетевые пакеты в изолированное окружение Aider:

Bash
pipx inject aider-chat PySocks requests[socks] urllib3

Шаг 4. Проверьте установку

Проверьте, что Aider доступен в системе и выводит версию:

Bash
aider --version

Полезные команды для обслуживания pipx в будущем

  • Обновить Aider до последней версии:

    Bash
    pipx upgrade aider-chat
    
  • Переустановить с нуля:
    Bash
    pipx reinstall aider-chat
    

Настройки proxy.

Если вы находитесь в России, то большинство AI моделей не будет работать с вашим регионом, если к ним обращаться напрямую. Ниже описан рабочий вариант при открытом туннеле на внешний VPS для порта 1080, используются SOCKS. Как настроить туннель на внешний VPS описано здесь и здесь.

  • Запустите туннель в отдельном окне терминала WSL на порту 1080
  • Настройте переменные окружения для работы с proxy: 
    export ALL_PROXY=socks5h://127.0.0.1:[ваш порт SOCKS]
    export HTTP_PROXY=socks5h://127.0.0.1:[ваш порт SOCKS]
    export HTTPS_PROXY=socks5h://127.0.0.1:[ваш порт SOCKS]
    Если вы планируете постоянно использовать прокси, то можете прописать эти команды в файл ~/.bashrc
Эти действия необходимо выполнить перед запуском оболочки AIDER, чтобы она подхватила эти переменные. 

Настройка AI моделей.

Aider работает с 3 моделями:
  • weak-model - слабая / вспомогательная модель, используется для экономии денег и токенов
  • editor-model - модель-редактор) отвечает за непосредственное применение изменений к файлам вашего проекта
  • model - главная модель выполняет «тяжелую» умственную работу: пишет код, строит архитектуру и анализирует сложные взаимосвязи.

weak-model

В Aider концепция weak-model (слабая / вспомогательная модель) используется для экономии денег и токенов.

Главная модель (--model) выполняет «тяжелую» умственную работу: пишет код, строит архитектуру и анализирует сложные взаимосвязи. weak-model берет на себя рутинные служебные задачи, которые не требуют высокой экспертизы или сложного Reasoning.

Основные функции weak-model:
  1. Генерация сообщений для Git-коммитов (Commit Messages)

    • Когда Aider вносит изменения в файлы, он автоматически создает commit в вашем Git-репозитории.

    • weak-model смотрит на git diff и формирует короткое понятное описание изменений (например: feat: add FluentValidation for LoginRequest).

  2. Сжатие и саммаризация истории чата (Chat Summarization)

    • Когда диалог становится слишком длинным и подбирается к лимиту контекста, Aider автоматически сжимает старые сообщения.

    • weak-model пересказывает старую часть переписки краткой выжимкой, чтобы освободить место для нового кода.

  3. Оценка и фильтрация Repo Map (Карты репозитория)

    • При сборке дерева файлов проекта weak-model помогает отсеивать нерелевантные куски кода, не перегружая контекст основной модели.

  4. Простые вспомогательные проверки

    • Форматирование служебных ответов и обработка системных вызовов CLI.

Почему важно правильно настроить weak-model?
  • Экономия средств: Если ваша главная модель — дорогая (например, Claude 3.5 Sonnet или GPT-4o), использование её же для написания строчки git commit — это пустая трата денег.

  • Скорость: Легкие модели (вроде gemini-2.0-flash, deepseek-chat или ox-alpha) генерируют коммиты и сжимают контекст за доли секунды, не заставляя вас ждать.

editor-model


В Aider концепция editor-model (модель-редактор) отвечает за непосредственное применение изменений к файлам вашего проекта.

В то время как главная модель (--model) придумывает что и как изменить в коде, editor-model занимается рутинной «хирургической» работой — она берет предложенный код и аккуратно вставляет его в нужные места исходных файлов.

Основные функции editor-model:
  1. Форматирование diff'ов и замена кода (Editing / Search-Replace)

    • Модель принимает инструкции от главной модели и переводит их в точный формат правок Aider (обычно блоки <<<<<<< SEARCH ... ======= ... >>>>>>> REPLACE).

    • Она находит нужные строки в файле и перезаписывает их, сохраняя форматирование, отступы и структуру вокруг.

  2. Работа в режиме Architect (/architect)

    • Это главный сценарий, где выделение editor-model раскрывает себя на 100%.

    • В режиме Архитектора Main model (например, deepseek-r1 или claude-3-5-sonnet) выступает в роли «мозга»: пишет план, проектирует архитектуру и описывает изменения на верхнем уровне.

    • Затем Editor model (более быстрая и дешевая модель) берет этот план и превращает его в реальные правки в файлах на диске.

  3. Исправление ошибок синтаксиса при записи

    • Если при применении изменений произошел сбой (например, не совпал фрагмент кода для поиска), editor-model пытается скорректировать замену, чтобы не сломать файл.

Зачем разделять Main Model и Editor Model?
  • Экономия ресурсов и денег: Вы можете использовать супер-интеллектуальную (и дорогую) модель для рассуждений как Main Model, а для утилитарной задачи «найти строку X и заменить на Y» назначить гораздо более дешевую или бесплатную модель.

  • Повышение надежности: Не все «рассуждающие» модели (Reasoning Models, такие как deepseek-r1) хорошо умеют строго следовать синтаксису блоков замены файлов Aider. Назначение отдельной editor-model (например, deepseek-chat или gemini-2.0-flash) гарантирует, что файлы будут отредактированы без синтаксических сбоев.

model

Основная модель (Main Model / --model) — это главный «мозг» Aider. Она отвечает за весь высокий интеллект, понимание логики проекта и принятие архитектурных решений.

Все ваши запросы, вопросы по коду и задачи по рефакторингу в первую очередь поступают именно в неё.

Основные функции основной модели:
  1. Глубокий анализ и понимание кода

    • Разбирает структуру репозитория через карту Repo Map и контекст добавленных файлов.

    • Находит взаимосвязи между классами, методами, контроллерами и базой данных.

    • Диагностирует баги, утечки памяти, проблемы с производительностью и уязвимости.

  2. Проектирование и планирование (Reasoning & Architecture)

    • Составляет пошаговые планы рефакторинга и внедрения новых фич.

    • Принимает решения, какие именно файлы нужно изменить и какую архитектуру (SOLID, Clean Architecture и т.д.) использовать.

  3. Генерация нового кода и алгоритмов

    • Пишет сложную бизнес-логику, запросы к БД, обработчики ошибок и тесты.

  4. Управление другими моделями (в режиме /architect)

    • Выступает в роли Senior-разработчика: формирует детальную инструкцию по правке файлов и передаёт её модели-редактору (editor-model) для физического применения.

Сводная матрица всех трех ролей в Aider
Чтобы окончательно свести картину воедино:
Роль Главная задача Важные качества Пример модели
Main Model (--model) Придумывает что и как делать, проектирует код. Максимальный интеллект, логика (Reasoning), понимание контекста. deepseek-chat (V3), deepseek-r1, claude-3-5-sonnet, gemini-2.0-flash
Editor Model (--editor-model) Вставляет придуманный код в конкретные строки файлов. Строгое следование формату SEARCH/REPLACE, точность. deepseek-chat, gemini-2.0-flash
Weak Model (--weak-model) Пишет git commit, сжимает историю чата, фильтрует карту. Высокая скорость, минимальная стоимость / бесплатность. gemini-2.0-flash-exp:free, ox-alpha

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

Подключение моделей.

Ниже описан способ подключения моделей, который был мною протестирован. У каждой модели есть провайдер, одинаковые модели могут работать у разных провайдеров. Изначально я использовал провайдера OpenRouter, там у меня был небольшой баланс и он предлагал достаточно большой выбор моделей. Затем я немного изучил рынок и решил попробовать DeepSeek. DeepSeek был выбран потому что в России он работает без VPN и существуют вполне официальные способы пополнения баланса для аккаунтов на этой платформе, недорогие модели DeepSeek сопоставимы по эффективности с моделями флагманов индустрии.

Оба провайдера используют протокол обмена от OpenAI и aider не требует дополнительных настроек для его использования.

Подключение провайдеров производится через указание ключей в переменных окружения сессии:

export OPENROUTER_API_KEY="ваш_ключ_для_openrouter"

export DEEPSEEK_API_KEY="ваш_ключ_для_deepseek"

вы можете прописать эти команды в файл ~/.bashrc

Если вы определились с моделями и не собираетесь их менять в интерфейсе aider-a, то лучше запустить его сразу с указанием всех трех моделей

aider --model deepseek/deepseek-chat \
      --editor-model openrouter/google/gemini-2.0-flash \
      --weak-model openrouter/poolside/laguna-s-2.1:free 

Модель openrouter/poolside/laguna-s-2.1:free бесплатная и на момент написания статьи работает, остальные модели даны для примера.

Работа с интерфейсом aider

После запуска приложения в терминале вы увидите символ приглашения ">", внутренние команды вводятся через слэш, например "/exit", после ввода слэша вам будет предложено выпадающее меню из доступных команд, после набора первых букв команды количество команд будет уменьшатся в соответствии с первыми введенными буквами.

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

Если вы сначала хотите провести анализ проекта, то лучше отключить модель для редактирования, это можно сделать двумя способами:

  • команда /ask
  • команда /editor-model none

Такое отключение я нахожу необходимым, потому что у меня не получалось дать команду главной модели просто сделать анализ и не делать правок, видимо это баг aider, сразу после анализа включается все равно редактирование и вы можете испортить проект, потратить деньги на редактирование и потом откатывать изменения в Git.

Основные режимы работы aider

Различие между тремя режимами заключается в степени предоставленных прав на изменение файлов, формате ответа модели и распределении ролей (Main/Editor model).

Сравнительная таблица
Характеристика /ask (Запрос / Консультация) /architect (Архитектор) /code (Редактирование)
Редактирование файлов ❌ Строго запрещено ✅ Запрашивает подтверждение перед записью ✅ Автоматически при согласии
Режим работы Текстовый диалог (Read-only) Двухэтапный (План $\rightarrow$ Правки) Прямой (Код $\rightarrow$ Файлы)
Используемые модели Только Main Model Main Model + Editor Model Main Model
Идеально для... Аудита, поиска багов, вопросов по коду Сложного рефакторинга, архитектурных фич Точечных правок, быстрых багфиксов
1. Режим /ask (Только чтение / Консультация)
В этом режиме Aider физически отключает механизмы записи в файлы. Модель видит ваш проект через карту репозитория Repo Map и добавленные файлы, но не генерирует инструкции редактирования (SEARCH/REPLACE).

  • Что делает: Отвечает на вопросы, объясняет логику работы кода, проводит статический аудит и поиск ошибок.

  • Главный плюс: Абсолютная безопасность. Вы гарантированы от того, что модель случайно изменит или испортит код.

  • Пример использования:

    Plaintext
    /ask Как устроена авторизация в этом проекте и где слабые места в защите?
    
2. Режим /architect (Проектирование + Применение)
Режим разделяет процесс написания кода на два независимых этапа и подключает две разные модели:

  1. Этап 1 (Планирование): Основная модель (--model, например, DeepSeek-R1 или Claude 3.5 Sonnet) анализирует задачу, проводит глубокие рассуждения и пишет подробный текстовый план решения.

  2. Этап 2 (Реализация): Модель-редактор (--editor-model, например, DeepSeek-Chat) берет предложенный план и переводит его в точечные блоки правок кода.

  3. Подтверждение: Aider показывает вам предложенный план и спрашивает: "Применить эти изменения в файлы?"

  • Главный плюс: Высокое качество кода при сложных задачах. Умная модель не отвлекается на синтаксис файлов, а модель-редактор гарантирует точное нанесение правок.

  • Пример использования:

    Plaintext
    /architect Переведи авторизацию с JWT-токенов в localStorage на httpOnly Cookie с защитой от CSRF.
    
3. Режим /code (Стандартный / Прямое редактирование)
Основной рабочий режим Aider по умолчанию.

  • Что делает: Основная модель сразу пытается сгенерировать готовые блоки кода (SEARCH/REPLACE) и записать их в файлы.

  • Главный плюс: Максимальная скорость при простых и понятных задачах.

  • Пример использования:

    Plaintext
    /code Добавь проверку на null в контроллере LoginRequest и верни BadRequest 400.
    
Рекомендуемый workflow при работе с проектом
  1. Анализ: Запустите /ask для безопасного аудита и составления списка проблем.

  2. Проектирование: Переключитесь в /architect для реализации сложных архитектурных изменений.

  3. Исправления: Используйте /code для быстрых точечных правок и написания валидаторов/тестов.

Общие сведения о командах aider

Все встроенные команды Aider начинаются с символа /. Их можно разделить на четыре группы по уровню критичности для повседневной работы.

1. Управление файлами и контекстом (Самый высокий приоритет)

Главный навык работы с Aider — точечное управление контекстом. Не перегружайте модель лишними файлами.

  • /add <files> — добавляет файлы в контекст. Модель видит их содержимое целиком. Работает по автодополнению (Tab) и маскам (/add src/*.cs).
  • /drop <files> — удаляет конкретный файл из контекста. Без параметров (/drop) очищает весь список файлов.
  • /ls — выводит список всех файлов, которые находятся в контексте прямо сейчас.

2. Режимы работы (Архитектура и Безопасность)

Определяют, как именно модель будет реагировать на ваши промпты.

  • /code — стандартный режим прямого редактирования. Модель сразу создает правки в виде блоков SEARCH/REPLACE и записывает их в файлы.
  • /architect — двухэтапный режим. Модель сначала пишет подробный текстовый план решения, а затем переводит его в код. Идеально для сложного рефакторинга.
  • /ask — режим консультации и аудита (Read-Only). Запрещает модели изменять файлы. Безопасен для анализа базы кода.

3. Контроль изменений и история (Управление сессией)

Позволяют исправлять ошибки модели и следить за состоянием Git.

  • /undo — отменяет последний коммит и все изменения файлов, сделанные Aider за предыдущий шаг.
  • /diff — показывает разницу между текущим состоянием файлов и последним коммитом Git.
  • /clear — очищает историю текстового диалога, сохраняя при этом добавленные файлы в контексте. Помогает, когда чат переполняется.

4. Настройка моделей и системные вызовы (Конфигурация)

Управление LLM-провайдерами и терминалом без выхода из Aider.

  • /model <name> — меняет основную модель (например, /model openrouter/deepseek/deepseek-chat).
  • /editor-model <name> — меняет модель для редактирования и внесения правок в файлы
  • /weak-model <name> — назначает легкую модель для служебных задач (генерация коммитов, сжатие контекста).
  • /run <command> (или !<command>) — выполняет bash-команду в системе прямо из чата (например, /run dotnet build или /run npm test).
  • /exit — завершает работу Aider.

Полезная информация.

При работе с aider в терминале VS Code начинает теряться история.

Проблема с потерей истории в терминале VS Code при использовании Aider — классическая ситуация. Обычно она связана с тем, что встроенный терминал VS Code имеет ограниченный размер буфера прокрутки (scrollback buffer) или сбрасывает состояние при перезапуске сессии, в то время как Aider выводит много текста ( diff-ы, логов, ответы моделей).
Вот основные способы решить эту проблему и сделать работу с историей комфортной:
1. Увеличить размер буфера терминала в VS Code
По умолчанию VS Code сохраняет в истории терминала ограниченное число строк. Если вывод Aider превышает этот лимит, старые сообщения «улетают» вверх и стираются.

  1. Откройте настройки VS Code (Ctrl + , на Windows/Linux или Cmd + , на macOS).

  2. В поисковой строке введите: terminal.integrated.scrollback.

  3. Увеличьте значение (по умолчанию обычно стоит 1000 или 10000). Установите, например, 50000 или 100000 строк.

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

  • Файлы истории: Aider по умолчанию сохраняет логи сессий в скрытой папке .aider.chat.history.md (в корне вашего проекта или в домашней директории). Вы можете открыть этот файл и посмотреть весь текст прошлых сессий.

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

3. Запускать Aider во внешнем терминале (или tmux)
Если встроенный терминал VS Code продолжает сбоить или сбрасывать сессию при переключении вкладок:

  • Попробуйте запускать Aider в отдельном окне терминала (например, в системном PowerShell / Windows Terminal на Windows или во внешнем терминале на Linux/macOS). У внешних терминалов буфер прокрутки часто работает стабильнее.

  • Если вы работаете в WSL Ubuntu, отлично помогает связка с tmux. Запустив сессию tmux внутри WSL перед вызовом Aider, вы гарантируете, что история сохранится даже при случайном закрытии вкладки или обрыве связи с терминалом.

4. Использовать режим /clear или /undo
Иногда история в самом Aider «засоряется» старым контекстом, из-за чего модель начинает путаться.

  • Вместо бесконечной прокрутки вниз используйте команды внутри Aider:

    • /undo — отменить последние изменения в коде и в диалоге.

    • /clear — очистит текущий контекст чата (при этом файлы на диске останутся измененными), начав чистый лист, но сохранив историю в файл логов.