Skip to main content

Работа с AIDER

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

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

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

Процесс взаимодействия с моделью в Aider строится по схеме «Чат $\rightarrow$ Понимание контекста $\rightarrow$ Правка файлов $\rightarrow$ 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, то лучше запустить его сразу с указанием всех трех моделей