docs: add article on AI agent integration with Emacs
This commit is contained in:
committed by
Evrard Van Espen (aider)
parent
fdccf7d0ac
commit
5ea2bd364f
143
posts/ai-boosted-emacs.org
Normal file
143
posts/ai-boosted-emacs.org
Normal file
@@ -0,0 +1,143 @@
|
||||
#+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
|
||||
#+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)
|
||||
: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
|
||||
|
||||
|
||||
|
||||
* Conclusion
|
||||
BIN
posts/aider.jpg
Normal file
BIN
posts/aider.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 390 KiB |
BIN
posts/aidermacs-menu.jpg
Normal file
BIN
posts/aidermacs-menu.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 176 KiB |
9
posts/test.org
Normal file
9
posts/test.org
Normal file
@@ -0,0 +1,9 @@
|
||||
#+TITLE: TEST
|
||||
#+DATE: 2025-10-29T18:29:56Z
|
||||
#+DRAFT: false
|
||||
#+AUTHOR: Evrard Van Espen
|
||||
#+DESCRIPTION: There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form
|
||||
#+SLUG: test
|
||||
#+TAGS: test, ai
|
||||
|
||||
There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text. All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as necessary, making this the first true generator on the Internet. It uses a dictionary of over 200 Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc.
|
||||
Reference in New Issue
Block a user