🤖 Mettre en place un agent IA autonome (Opencode) en environnement isolé sur ArchLinux
L’objectif de ce guide est de mettre en place un agent autonome opencode/GLM-4.6 dans un environnement isolĂ© (jailed) sur un système ArchLinux (ici, Manjaro). L’utilisation d’un jail avec systemd-nspawn garantit une segmentation stricte entre l’agent et le système hĂ´te, une pratique essentielle pour la sĂ©curitĂ©. Nous ne voulons pas laisser Skynet prendre le contrĂ´le !
🕵️‍♂️ Prérequis
Avant de commencer, assurons-nous que l’environnement de base est prĂŞt et que les outils nĂ©cessaires sont disponibles.
- Matériel Hôte : Ordinateur portable Aspire, 4GB RAM, Xeon E3-1200.
 - Système d’exploitation : Manjaro Linux Ă jour.
 
VĂ©rifions que systemd-nspawn, l’outil clĂ© pour crĂ©er notre conteneur, est bien prĂ©sent sur le système hĂ´te.
whereis systemd-nspawn        
systemd-nspawn: /usr/bin/systemd-nspawn
đź§± CrĂ©ation de l’environnement isolĂ© (Jail)
Nous allons maintenant prĂ©parer la structure de base : un groupe et un utilisateur dĂ©diĂ©s sur l’hĂ´te, puis le rĂ©pertoire racine de notre jail.
CrĂ©er le groupe et l’utilisateur sur l’hĂ´te Ceux-ci serviront Ă gĂ©rer les permissions du rĂ©pertoire de la jail. L’utilisateur est créé sans shell valide (
nologin) pour des raisons de sécurité.sudo groupadd ai-agents sudo useradd -m -g ai-agents -s /usr/bin/nologin opencodeCréer et sécuriser le répertoire de la jail Ce répertoire
/home/opencode/labdeviendra le/de notre système isolé.sudo mkdir -p /home/opencode/lab sudo chown root:root /home/opencode/lab sudo chmod 755 /home/opencode/labInstaller un système de base dans la jail Nous utilisons
pacstrappour installer un système ArchLinux minimal ainsi que les outils de dĂ©veloppement essentiels dans notre rĂ©pertoire/home/opencode/lab. Sipacstrapn’est pas installĂ© (courant sur Manjaro), il faut d’abord installerarch-install-scripts.pamac install arch-install-scriptsEnsuite, nous peuplons la jail avec les paquets nĂ©cessaires.
sudo pacstrap -c /home/opencode/lab base linux base-devel \ git make go python zsh gcc cmake vim \ nodejs npm tree jq yq man-db unzip \ logrotate iproute2 net-tools pacman
👤 Configuration de l’utilisateur dans la Jail
Le système isolĂ© est prĂŞt, mais il nous faut y crĂ©er l’utilisateur opencode qui exĂ©cutera l’agent. Cette opĂ©ration se fait en lançant une commande directement dans la jail.
Note : Il n’est peut-ĂŞtre pas strictement nĂ©cessaire de crĂ©er l’utilisateur sur l’hĂ´te au prĂ©alable, mais cela aide Ă maintenir la cohĂ©rence des permissions.
sudo systemd-nspawn -D /home/opencode/lab /bin/sh -c 'groupadd --gid 1001 ai-agents; useradd --uid 1001 --gid ai-agents -d /home/opencode -m -s /usr/bin/zsh opencode;'
🤖 Installation et DĂ©pannage d’Opencode
Entrons maintenant dans notre environnement isolĂ© pour la première fois et tentons d’installer l’agent.
AccĂ©der Ă la jail Nous nous connectons en tant qu’utilisateur
opencodeaveczshcomme shell.sudo systemd-nspawn -D /home/opencode/lab -u opencode /usr/bin/zshPremière tentative d’installation (et premier Ă©chec) L’invite de commande
lab%indique que nous sommes bien dans la jail. Tentons l’installation via le scriptcurl.lab% curl -fsSL [https://opencode.ai/install](https://opencode.ai/install) | zshCela Ă©choue avec une erreur liĂ©e au shell :
Downloading opencode version: 0.15.8 ... ######################################################################## 100.0% zsh: SHELL: parameter not setTentatives de correction L’erreur suggère que la variable d’environnement
SHELLn’est pas dĂ©finie. Essayons de la positionner manuellement et de crĂ©er un fichier de configuration Zsh minimal.lab% export SHELL=/usr/bin/zsh lab% mkdir -p /home/opencode/.config/zsh lab% touch /home/opencode/.config/zsh/.zshrcMalgrĂ© ces ajustements, l’installation via le script
curlne fonctionnait toujours pas.Plan B : Installation via Go Puisque nous avons installĂ© Go, nous pouvons compiler et installer l’outil directement depuis la source.
lab% go install [github.com/opencode-ai/opencode@latest](https://github.com/opencode-ai/opencode@latest)
✅ Analyse Post-Installation et Résolution
Après investigation, la vĂ©ritable cause du problème avec le script d’installation curl a Ă©tĂ© identifiĂ©e. Il ne s’agissait pas de la configuration de Zsh, mais du fait que le rĂ©pertoire d’installation d’Opencode n’Ă©tait pas dans le PATH.
Le script installe le binaire dans $HOME/.opencode/bin. Pour que le shell le trouve, il faut mettre Ă  jour la variable PATH.
lab% export PATH="$HOME/.opencode/bin:$PATH"
En ajoutant cette ligne Ă  votre .zshrc, la commande opencode sera disponible Ă  chaque connexion.
🚀 Configuration et Première Utilisation
Maintenant que l’outil est correctement installĂ© et accessible, nous pouvons finaliser la configuration.
Authentification Connectez votre client
opencodeĂ votre compte en ajoutant vos clĂ©s API.lab% opencode auth loginLancer une tâche Utilisons l’agent
BUILDavec le modèleGLM-4.6(de Z.AI) pour lui demander de construire ses propres commandes.lab% opencode "/theme etc..."
đź‘€ Observations Initiales
Une première observation intĂ©ressante : lorsqu’on lui demande de crĂ©er des outils, l’agent gĂ©nère du code Python, ce qui n’Ă©tait pas forcĂ©ment l’attendu. Cela souligne l’importance de formuler des prompts prĂ©cis pour guider le comportement de l’agent.
📝 Annexe et Prochaines Étapes
Quelques points à considérer pour améliorer et fiabiliser cet environnement.
- Polices d’Ă©criture : Installer des polices comme 
noto-fonts-emoji, car les LLM modernes les utilisent frĂ©quemment, apparemment pour amĂ©liorer l’ancrage contextuel. - Timeouts : Des 
TIMEOUTont Ă©tĂ© observĂ©s. Une investigation est nĂ©cessaire pour en dĂ©terminer la cause (rĂ©seau dans la jail, limitations des API, etc.). - Utilisation de Tmux : Pour gĂ©rer plusieurs shells simultanĂ©ment au sein de l’environnement 
nspawn, l’installation et l’utilisation detmuxsont fortement recommandĂ©es.