aider.el: aider (парное программирование AI) внутри Emacs
Введение
- Вам нравятся возможности искусственного интеллекта в редакторе кода Cursor AI, но вы предпочитаете оставаться в Emacs?
- Aider — хорошо известное, действительно хорошее парное программирование ИИ в терминале.
- aider.el предоставляет интерактивный интерфейс для общения с Aider в emacs.
- Большая часть кода Elisp в этом репозитории была создана aider/aider.el.
Зачем использовать aider.el в Emacs?
- Всплывающее меню: нет необходимости запоминать команды. (помощник-переходное-меню)
- Сеансы помощника для конкретного репозитория Git в Emacs: автоматически определяет репозиторий Git текущего файла и создает для него новый сеанс помощника. Для разных репозиториев Git может существовать несколько сеансов помощника.
- Дополнительные способы добавления файлов в буфер помощника
- Добавить текущий файл буфера: (aider-add-current-file)
- Добавить все буферы в текущем окне: (aider-add-files-in-current-window)
- Пакетное добавление файлов из буфера Dired (aider-batch-add-dired-marked-files): добавьте несколько отмеченных Dired файлов в буфер Aider.
- Региональное объяснение/поддержка рефакторинга
- Объяснение: (aider-region-explain): Вы можете выбрать регион (например, блок кода) в файле и попросить помощника объяснить его.
- Рефакторинг: (aider-region-refactor): попросите помощника провести рефакторинг с учетом введенной вами инструкции.
- И еще: добавьте свои собственные функции Elisp для поддержки вашего варианта использования. Вы, конечно, можете попросить aider/aider.el сделать это.
Установка
Ванильная установка Emacs
- Установить помощник
- Установите Transient зависимости с помощью менеджера пакетов.
- Установите aider.el с помощью следующего кода:
( use-package aider
:straight ( :host github :repo " tninja/aider.el " :files ( " aider.el " ))
:config
; ; Use claude-3-5-sonnet cause it is best in aider benchmark
( setq aider-args '( " --model " " anthropic/claude-3-5-sonnet-20241022 " ))
( setenv " ANTHROPIC_API_KEY " anthropic-api-key)
; ; Or use chatgpt model since it is most well known
; ; (setq aider-args '("--model" "gpt-4o-mini"))
; ; (setenv "OPENAI_API_KEY" <your-openai-api-key>)
; ; ;;
Optional: Set a key binding for the transient menu
( global-set-key ( kbd " C-c a " ) 'aider-transient-menu ))
Установка и настройка Doom
- Добавьте следующий код в ваш doom/packages.el
(package! aider :recipe ( :host github :repo " tninja/aider.el " :files ( " *.el " )))
- Отрегулируйте и добавьте следующий код в ваш doom/config.el
( use-package aider
:config
( setq aider-args '( " --model " " gpt-4o-mini " )))
Префикс помощника — «А».
- Запустите и откройте буфер помощника:
[SPC] A o
- Добавьте текущий файл с помощью
[SPC] A ac
Необязательный
- Возможно, вы захотите попробовать aider-helm.el. В этом файле добавлена поддержка истории команд и завершения из Helm.
- Если вам нравится писать команды помощника в отдельном файле и отправлять их в сеанс помощника, точно так же, как вы работаете над сценарием Python или R и отправляете блок кода в REPL, вы можете попробовать режим помощника-минора. По умолчанию он связывает Cc Cn для отправки текущей строки в сеанс помощника и Cc Cc для отправки текущего региона в сеанс помощника.
- Чтобы автоматически включить минорный режим Aider для любого файла с Aider внутри имени файла.
( add-hook 'find-file-hook
( lambda ()
( when ( and ( buffer-file-name )
( string-match-p " aider " ( buffer-file-name )))
(aider-minor-mode 1 ))))
Скриншот
- На приведенном выше снимке экрана пользователю aider было предложено создать функцию aider-help и добавить соответствующую запись в меню (верхнее правое окно).
- aider получил команду и сгенерировал для нее фиксацию (внизу слева).
Пример приложения, написанного с помощью aider.el
Другой инструмент кодирования AI Emacs
- Вдохновлено и благодаря:
- ancilla.el: AI Coding Assistant поддерживает генерацию кода/переписывание кода/обсуждение
- chatgpt-shell: оболочки ChatGPT и DALL-E Emacs + Org Babel
- copilot.el: плагин Emacs для GitHub Copilot
- copilot-chat.el: чат с GitHub Copilot в Emacs.