Contents
- 1 Faire tourner Pi Coding Agent avec un LLM local Bonsai dans WSL
- 2 1. Mon setup
- 3 2. Lancer Bonsai avec llama.cpp
- 4 3. Attention à la fenêtre de contexte
- 5 4. Installer Pi Coding Agent
- 6 5. Configurer Bonsai dans Pi
- 7 6. Pourquoi Pi plutôt qu’Aider dans mon cas
- 8 7. Le script que j’utilise
- 9 8. Workflow final
- 10 Conclusion
Faire tourner Pi Coding Agent avec un LLM local Bonsai dans WSL
Je voulais utiliser un LLM local pour coder dans WSL, avec un vrai agent capable de lire les fichiers, lancer des commandes et travailler directement sur un projet.
J’ai d’abord testé Aider, mais pour mon besoin, Pi Coding Agent s’est révélé plus adapté grâce à son approche orientée outils.
Voici la configuration qui a fonctionné.
1. Mon setup
J’utilise :
- WSL
- un modèle local Bonsai 27B au format GGUF
- llama.cpp comme serveur local
- Pi Coding Agent comme agent de code
Mon modèle :
/home/yvonh/Bonsai-demo/models/bonsai2-gguf/27B/Ternary-Bonsai-2-27B-PQ2_0.gguf
Mon binaire llama.cpp :
/home/yvonh/Bonsai-demo/bin/cuda/llama-server
2. Lancer Bonsai avec llama.cpp
Attention c’est le llma.cpp propre à Bonsai, ce n’est pas le llam.cpp que vous voyez habituellement.
La commande fonctionnelle est :
/home/yvonh/Bonsai-demo/bin/cuda/llama-server -m /home/yvonh/Bonsai-demo/models/bonsai2-gguf/27B/Ternary-Bonsai-2-27B-PQ2_0.gguf --ctx-size 32768 --port 8081
Le serveur expose ensuite une API compatible OpenAI sur :
http://localhost:8081/v1
Pour vérifier que le modèle est bien exposé :
curl http://localhost:8081/v1/models
3. Attention à la fenêtre de contexte
Au départ, le serveur tournait avec une fenêtre de contexte de :
16384 tokens
Pi envoyait une requête d’environ 17 852 tokens, ce qui provoquait l’erreur :
400 request exceeds the available context size
La solution a été d’augmenter le contexte de llama.cpp :
--ctx-size 32768
Il faut aussi déclarer la même taille côté Pi.
Par exemple dans :
~/.pi/agent/models.json
j’utilise notamment :
{
"contextWindow": 32768,
"maxTokens": 4096
}
Il est important de comprendre que modifier uniquement contextWindow dans Pi ne suffit pas.
La vraie limite est définie côté llama.cpp.
4. Installer Pi Coding Agent
Dans WSL :
npm install -g @mariozechner/pi-coding-agent
Puis :
pi --version
Et dans un projet :
cd ~/mon-projet pi
5. Configurer Bonsai dans Pi
Pi peut utiliser un provider compatible OpenAI.
Le fichier se trouve ici :
~/.pi/agent/models.json
Exemple de configuration :
{
"providers": {
"bonsai": {
"baseUrl": "http://localhost:8081/v1",
"api": "openai-completions",
"apiKey": "dummy",
"models": [
{
"id": "/home/yvonh/Bonsai-demo/models/bonsai2-gguf/27B/Ternary-Bonsai-2-27B-PQ2_0.gguf",
"name": "Bonsai 2 27B Local",
"reasoning": false,
"contextWindow": 32768,
"maxTokens": 4096,
"cost": {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
}
}
]
}
}
}
Ensuite, dans Pi :
/model
et il suffit de sélectionner :
Bonsai 2 27B Local
6. Pourquoi Pi plutôt qu’Aider dans mon cas
Aider fonctionne très bien pour modifier du code, mais son fonctionnement repose surtout sur un protocole d’édition.
Pi correspond davantage à ce que je cherchais : un agent capable d’utiliser des outils.
Il peut notamment :
- lire les fichiers
- inspecter le projet
- lancer des commandes shell
- utiliser git
- lancer des tests
- modifier des fichiers
- observer le résultat
- continuer son travail
Le fonctionnement ressemble davantage à :
LLM ↓ appel d’un outil ↓ résultat ↓ nouvelle décision ↓ nouvel appel d’outil
C’est beaucoup plus proche de l’expérience Codex CLI ou Claude Code.
7. Le script que j’utilise
Pour éviter de retaper toute la commande llama.cpp, j’ai créé :
~/start-bonsai.sh
avec ce contenu :
#!/bin/bash
LLAMA_SERVER="/home/yvonh/Bonsai-demo/bin/cuda/llama-server"
MODEL="/home/yvonh/Bonsai-demo/models/bonsai2-gguf/27B/Ternary-Bonsai-2-27B-PQ2_0.gguf"
CTX_SIZE=32768
while [[ $# -gt 0 ]]; do
case "$1" in
--ctx)
CTX_SIZE="$2"
shift 2
;;
*)
echo "Option inconnue : $1"
echo "Usage: $0 [--ctx taille]"
exit 1
;;
esac
done
"$LLAMA_SERVER" \
-m "$MODEL" \
--ctx-size "$CTX_SIZE" \
--port 8081
Puis :
chmod +x ~/start-bonsai.sh
Je peux maintenant lancer Bonsai simplement :
~/start-bonsai.sh
avec 32768 tokens par défaut.
Ou choisir une autre taille :
~/start-bonsai.sh --ctx 65536
8. Workflow final
Mon workflow est maintenant très simple.
Premier terminal :
~/start-bonsai.sh --ctx 32768
Deuxième terminal :
cd ~/mon-projet pi
Puis je sélectionne Bonsai dans :
/model
J’obtiens ainsi un agent de code local fonctionnant avec un modèle GGUF, llama.cpp et Pi directement dans WSL.
Conclusion
La combinaison qui fonctionne bien pour moi est :
Bonsai 27B GGUF
↓
llama.cpp
↓
API OpenAI compatible
↓
Pi Coding Agent
↓
fichiers / shell / git / tests
Le point le plus important à retenir concerne la fenêtre de contexte.
Si Pi annonce 32k mais que llama.cpp tourne encore avec 16k, les requêtes échoueront dès que le contexte devient trop gros.
Il faut donc garder les deux configurations cohérentes :
llama.cpp : --ctx-size 32768 Pi : contextWindow 32768 Pi : maxTokens 4096
Avec cette configuration, j’ai pu utiliser mon Bonsai local comme véritable agent de développement dans WSL.
