aider.el : aider (AI Pair Programming) dans Emacs
Introduction
- Aimez-vous les fonctionnalités d'IA de Cursor AI Code Editor, mais préférez rester dans Emacs ?
- Aider est une très bonne programmation de paires d'IA bien connue dans le terminal.
- aider.el fournit une interface interactive pour communiquer avec Aider dans emacs.
- La plupart du code Elisp de ce référentiel a été généré par aider / aider.el.
Pourquoi utiliser aider.el dans Emacs ?
- Menu contextuel : pas besoin de mémoriser les commandes. (aider-menu-transitoire)
- Sessions d'assistance spécifiques au référentiel Git dans Emacs : identifiez automatiquement le référentiel Git du fichier actuel et créez une nouvelle session d'assistance pour celui-ci. Plusieurs sessions d'assistance peuvent exister pour différents référentiels Git.
- Autres façons d'ajouter des fichiers au tampon d'aide
- Ajouter le fichier tampon actuel : (aider-add-current-file)
- Ajouter tous les tampons dans la fenêtre actuelle : (aider-add-files-in-current-window)
- Ajout par lots de fichiers à partir du tampon Dired (aider-batch-add-dired-marked-files) : ajoutez plusieurs fichiers marqués Dired au tampon Aider.
- Prise en charge d'explication/refactorisation basée sur la région
- Expliquer : (aider-region-explain) : Vous pouvez sélectionner une région (par exemple, un bloc de code) dans un fichier et demander à aider de l'expliquer.
- Refactor : (aider-region-refactor) : demandez à l'aide de le refactoriser en fonction de vos instructions de saisie.
- Et plus encore : ajoutez vos propres fonctions Elisp pour prendre en charge votre cas d'utilisation. Vous pouvez certainement demander à aider / aider.el de le faire.
Installation
Installation d'Emacs vanille
- Aide à l'installation
- Installez la dépendance Transient à l'aide de votre gestionnaire de packages.
- Installez aider.el avec le code suivant :
( 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 ))
Installation et configuration de Doom
- Ajoutez le code suivant à votre doom/packages.el
(package! aider :recipe ( :host github :repo " tninja/aider.el " :files ( " *.el " )))
- Ajustez et ajoutez le code suivant à votre doom/config.el
( use-package aider
:config
( setq aider-args '( " --model " " gpt-4o-mini " )))
Le préfixe d’aide est « A ».
- Démarrez et ouvrez le tampon d'aide :
[SPC] A o
- Ajoutez le fichier actuel avec
[SPC] A ac
Facultatif
- Vous voudrez peut-être essayer aider-helm.el. Ce fichier a ajouté la prise en charge de l'historique des commandes et de l'achèvement depuis la barre.
- Si vous aimez écrire une commande aider dans un fichier séparé et les envoyer à une session d'aide, tout comme travailler sur un script Python ou R et envoyer un bloc de code dans REPL, vous voudrez peut-être essayer le mode aide-minor. Par défaut, il lie Cc Cn pour envoyer la ligne actuelle à la session d'aide, et Cc Cc pour envoyer la région actuelle à la session d'aide.
- Pour activer automatiquement le mode aide-minor sur n'importe quel fichier avec aide dans le nom de fichier
( add-hook 'find-file-hook
( lambda ()
( when ( and ( buffer-file-name )
( string-match-p " aider " ( buffer-file-name )))
(aider-minor-mode 1 ))))
Capture d'écran
- Dans la capture d'écran ci-dessus, il a été demandé à aider de générer une fonction d'aide-aide et d'ajouter l'entrée correspondante au menu (fenêtre en haut à droite).
- aider a reçu la commande et a généré le commit correspondant (en bas à gauche).
Exemple d'application écrite avec aider.el
Autre outil de codage Emacs AI
- Inspiré par et merci à :
- ancilla.el : AI Coding Assistant prend en charge la génération de code / la réécriture de code / la discussion
- chatgpt-shell : shells ChatGPT et DALL-E Emacs + Org Babel
- copilot.el : plugin Emacs pour GitHub Copilot
- copilot-chat.el : Discutez avec GitHub Copilot dans Emacs