160 lines
6.2 KiB
Org Mode
160 lines
6.2 KiB
Org Mode
#+TITLE: Un agent de dev IA dans Emacs
|
||
#+DATE: 2025-10-27T18:29:56Z
|
||
#+DRAFT: false
|
||
#+AUTHOR: Evrard Van Espen
|
||
#+DESCRIPTION: Présentation et installation d'un assistant de code IA dans Emacs : aider.
|
||
#+SLUG: agent-ia-emacs-bases
|
||
#+TAGS: ai, emacs
|
||
#+HERO: ./aider.jpg
|
||
|
||
* Un agent IA ? Qu'est ce que c'est ?
|
||
|
||
Contrairement à l'utilisation d'un LLM dans une interface web, comme lors de l'utilisation du /chat/ de /Mistral/ qui ne permet qu'une interaction textuelle avec l'utilisateur, l'utilisation d'un agent permet de donner accès à des "outils" au modèle de langage.
|
||
Un *agent IA* peut ainsi interagir avec son environnement d’exécution, par exemple lire des fichiers ou faire des recherches sur le web etc.
|
||
En résumé, le LLM est le "cerveau" qui comprend et génère du langage, tandis que l'agent est un système qui permet d'utiliser ce "cerveau" pour effectuer des actions.
|
||
|
||
|
||
* Le rôle d'un agent de code
|
||
|
||
Un agent de code est un type d'agent IA spécialement conçu pour effectuer des tâches en lien avec du code.
|
||
Il utilise un LLM spécialement entraîné pour comprendre et générer du code en suivant des contraintes.
|
||
|
||
Il peut se limiter à compléter automatiquement le code que le développeur est en train d'écrire mais il peut aller plus loin :
|
||
- Écrire des fonctions entières;
|
||
- Analyser le code existant;
|
||
- Corriger (essayer) les erreurs du code;
|
||
- Automatiser les tâches répétitives, telles que l'écriture des tests.
|
||
|
||
Vous avez sûrement déjà entendu parler de /Cursor/, /Windsurf/ ou de /Jetbrains Junie/, eh bien ce sont des agents de développement.
|
||
|
||
|
||
* La solution mise en place
|
||
|
||
Afin d'ajouter cette fonctionnalité à /Emacs/, j'ai mis en place le paquet =aidermacs=, qui permet de faire l'interface entre =aider= et /Emacs/.
|
||
=aider= est un agent de code destiné à fonctionner en terminal, et qui supporte la majorité des modèles de langage du marché tels que /Claude Code/, /GPT/ ou encode /Mistral Codestral/.
|
||
|
||
** Les différents modes d'=aider=
|
||
|
||
** Installation de =aider=
|
||
|
||
#+BEGIN_NOTE
|
||
Source officielle : [[https://aider.chat/docs/install.html][https://aider.chat/docs/install.html]]
|
||
#+END_NOTE
|
||
|
||
L'installation se fait avec un module /Python/ qui sert d'installateur à l'outil :
|
||
#+BEGIN_SRC bash
|
||
python -m pip install aider-install
|
||
aider-install
|
||
#+END_SRC
|
||
|
||
Une fois terminé, vérifiez que =aider= s'est bien installé :
|
||
#+BEGIN_SRC bash
|
||
> aider --version
|
||
aider 0.86.1
|
||
#+END_SRC
|
||
|
||
|
||
** Installation de =aidermacs=
|
||
|
||
#+BEGIN_NOTE
|
||
Si vous souhaitez utiliser un modèle distant comme par exemple /Claude Code/ ou /Codestral/, il va vous falloir une clef d'/API/.
|
||
Une fois cette clef en votre possession, vous pouvez passer à la suite.
|
||
#+END_NOTE
|
||
|
||
#+BEGIN_NOTE
|
||
J'ai choisi d'utiliser le modèle [[https://mistral.ai/fr/news/codestral-2501][/Codestral/]] de chez [[https://mistral.ai/fr][/Mistral/]].
|
||
D'après la [[https://aider.chat/docs/llms.html][documenation /aider/]], j'ai donc besoin de configurer la variable d'environnement =CODESTRAL_API_KEY= sur mon système.
|
||
J'ai donc ajouté cette configuration à mon fichier =~/.zshrc=.
|
||
#+END_NOTE
|
||
|
||
Ajoutez ce bloc à votre fichier de configuration /Emacs/ :
|
||
#+BEGIN_SRC elisp
|
||
(use-package aidermacs
|
||
:ensure t
|
||
:bind (("C-c a" . aidermacs-transient-menu))
|
||
:config
|
||
(exec-path-from-shell-initialize)
|
||
(setq exec-path-from-shell-variables '("CODESTRAL_API_KEY"))
|
||
(setq aider-args '("--model" "codestral/codestral-latest"
|
||
"--no-auto-accept-architect"
|
||
"--no-auto-commits"))
|
||
(setq aidermacs-program (expand-file-name "~/.local/bin/aider"))
|
||
(setq aidermacs-show-diff-after-change t)
|
||
(setq aidermacs-watch-files t)
|
||
:custom
|
||
(aidermacs-default-chat-mode 'architect)
|
||
(aidermacs-default-model "codestral/codestral-latest")
|
||
)
|
||
#+END_SRC
|
||
|
||
Explications :
|
||
|
||
#+BEGIN_SRC elisp
|
||
(exec-path-from-shell-initialize)
|
||
(setq exec-path-from-shell-variables '("CODESTRAL_API_KEY"))
|
||
#+END_SRC
|
||
|
||
Ces lignes permettent de charger la variable d'environnement =CODESTRAL_API_KEY= dans /Emacs/ afin que ce dernier puisse lire sa valeur.
|
||
|
||
#+BEGIN_SRC elisp
|
||
(setq aider-args '("--model" "codestral/codestral-latest"
|
||
"--no-auto-accept-architect"
|
||
"--no-auto-commits"))
|
||
#+END_SRC
|
||
|
||
Cette ligne indique le modèle à utiliser par défaut.
|
||
|
||
L'option =--no-auto-accept-architect= permet de demander la validation avant d'effectuer des changements dans le mode "architecte".
|
||
|
||
L'option =--no-auto-commits= permet de désactiver les /commits/ automatiques après les changements dans le code.
|
||
|
||
#+BEGIN_SRC elisp
|
||
(setq aidermacs-program (expand-file-name "~/.local/bin/aider"))
|
||
#+END_SRC
|
||
|
||
Cette ligne permet d'indiquer où se situe le binaire de =aider=.
|
||
|
||
#+BEGIN_SRC elisp
|
||
(setq aidermacs-show-diff-after-change t)
|
||
#+END_SRC
|
||
|
||
Cette ligne permet d'afficher automatiquement le /diff/ des fichiers dès qu'ils ont été modifiés.
|
||
|
||
#+BEGIN_SRC elisp
|
||
(aidermacs-default-chat-mode 'architect)
|
||
#+END_SRC
|
||
|
||
Cette ligne permet de sélectionner le mode par défaut de =aider= lors de son lancement.
|
||
|
||
#+BEGIN_SRC elisp
|
||
(aidermacs-default-model "codestral/codestral-latest")
|
||
#+END_SRC
|
||
|
||
Cette ligne permet de choisir le modèle à utiliser par défaut.
|
||
|
||
|
||
Une fois que vous avez ajouté le bloc à votre configuration /Emacs/ et que vous l'avez modifié selon votre besoin, vous pouvez relancer /Emacs/ (ou sélectionner le bloc et faire =M-x= puis =eval-region= afin d'exécuter la sélection).
|
||
|
||
Enfin, faites =C-c a= afin d'ouvrir le menu de =aidermacs=.
|
||
|
||
#+ATTR_HTML: :style width: 100%
|
||
[[./aidermacs-menu.jpg]]
|
||
|
||
|
||
** Démonstration
|
||
|
||
#+ATTR_HTML: :style width: 100% :controls ""
|
||
[[./aidermacs.mp4]]
|
||
|
||
|
||
|
||
* Conclusion
|
||
|
||
Vous aimez l’idée d’un outil comme /Cursor/, mais vous ne voulez pas quitter /Emacs/ ? Aidermacs vous offre le meilleur des deux mondes : une assistance IA avancée, directement intégrée à votre éditeur préféré.
|
||
Grâce à =aider=, vous bénéficiez d’un agent de code capable d’écrire, analyser et corriger votre code, avec la puissance de modèles comme /Codestral/ ou /Claude/, le tout sans quitter /Emacs/.
|
||
|
||
|
||
Avec une configuration simple et un accès rapide via =C-c a=, vous disposez d’un véritable pair-programmeur IA, tout en restant dans l’environnement que vous maîtrisez.
|
||
|
||
Dans le prochain article, nous irons plus en profondeur dans les fonctionnalités d'=aidermacs= et ses différents modes.
|