aider.el: aider (programação de par de IA) dentro do Emacs
Introdução
- Você gosta dos recursos de IA do Cursor AI Code Editor, mas prefere permanecer no Emacs?
- Aider é uma programação de pares de IA muito conhecida e muito boa no terminal.
- aider.el fornece uma interface interativa para se comunicar com o Aider no emacs.
- A maior parte do código Elisp neste repositório foi gerado por aider/aider.el.
Por que usar aider.el no Emacs?
- Menu pop-up: Não há necessidade de lembrar comandos. (menu auxiliar-transitório)
- Sessões auxiliares específicas do repositório Git no Emacs: identifique automaticamente o repositório Git do arquivo atual e crie uma nova sessão auxiliar para ele. Podem existir várias sessões auxiliares para diferentes repositórios Git.
- Mais maneiras de adicionar arquivos ao buffer auxiliar
- Adicionar arquivo de buffer atual: (aider-add-current-file)
- Adicione todos os buffers na janela atual: (aider-add-files-in-current-window)
- Adicionar arquivos em lote do buffer dired (aider-batch-add-dired-marked-files): Adicione vários arquivos marcados pelo Dired ao buffer Aider.
- Suporte para explicação/refatoração baseado em região
- Explicar: (aider-region-explain): Você pode selecionar uma região (por exemplo, um bloco de código) em um arquivo e pedir ao ajudante para explicá-la.
- Refatorar: (aider-region-refactor): peça ao ajudante para refatorá-lo de acordo com suas instruções de entrada
- E mais: adicione suas próprias funções Elisp para dar suporte ao seu caso de uso. Você certamente pode pedir a aider/aider.el para fazer isso.
Instalação
Instalação do Vanilla Emacs
- Auxiliar de instalação
- Instale a dependência Transient usando seu gerenciador de pacotes.
- Instale aider.el com o seguinte código:
( 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 ))
Instalação e configuração do Doom
- Adicione o seguinte código ao seu doom/packages.el
(package! aider :recipe ( :host github :repo " tninja/aider.el " :files ( " *.el " )))
- Ajuste e adicione o seguinte código ao seu doom/config.el
( use-package aider
:config
( setq aider-args '( " --model " " gpt-4o-mini " )))
O prefixo auxiliar é “A”.
- Inicie e abra o buffer auxiliar:
[SPC] A o
- Adicione o arquivo atual com
[SPC] A ac
Opcional
- Você pode querer tentar aider-helm.el. Esse arquivo adicionou suporte ao histórico de comandos e conclusão do leme.
- Se você gosta de escrever comandos auxiliares em um arquivo separado e enviá-los para a sessão auxiliar, assim como trabalhar em python ou script R e enviar bloco de código para REPL, você pode tentar o modo auxiliar secundário. Por padrão, ele vincula Cc Cn para enviar a linha atual para a sessão do auxiliar e Cc Cc para enviar a região atual para a sessão do auxiliar.
- Para ativar automaticamente o modo auxiliar-minor para qualquer arquivo com auxiliar dentro do nome do arquivo
( add-hook 'find-file-hook
( lambda ()
( when ( and ( buffer-file-name )
( string-match-p " aider " ( buffer-file-name )))
(aider-minor-mode 1 ))))
Captura de tela
- Na captura de tela acima, o Aider foi solicitado a gerar uma função Aider-Help e adicionar a entrada correspondente ao menu (janela superior direita).
- aider recebeu o comando e gerou o commit para ele (canto inferior esquerdo).
Exemplo de aplicativo escrito com aider.el
Outra ferramenta de codificação Emacs AI
- Inspirado e obrigado por:
- ancilla.el: AI Coding Assistant suporta geração de código/reescrita de código/discussão
- chatgpt-shell: shells ChatGPT e DALL-E Emacs + Org Babel
- copilot.el: plugin Emacs para GitHub Copilot
- copilot-chat.el: Converse com GitHub Copilot no Emacs