Travailler avec des agents IA
Laissez les agents de programmation déléguer et coordonner le travail entre les volets Zshell tout en gardant la main.
L'automatisation de Zshell s'adresse principalement aux agents de programmation IA. Elle leur permet de manipuler les volets et de coordonner d'autres agents de manière sûre, sans vous imposer un nouveau langage de commandes.
L'intégration IA est activée par défaut. Parlez normalement à votre agent : il peut créer un volet en arrière-plan, démarrer un autre agent, exécuter une commande, attendre son résultat et vous le rapporter sans prendre le focus du volet que vous utilisez.
Attendre le résultat d’une commande
Pour une commande qui se termine, comme des tests ou une compilation, votre agent peut attendre son code de sortie et sa durée, puis lire la sortie récente du terminal enregistrée. Si le délai expire, la commande continue et la même tâche peut être attendue à nouveau, sans prendre le focus. Une invite vide dans le zsh local initial lancé par Zshell est nécessaire ; les shells imbriqués, SSH et les programmes de démarrage personnalisés ne sont pas pris en charge. La sortie récente est limitée et peut contenir d’anciennes commandes ou invites. Demandez à l’agent d’enregistrer la sortie complète dans un fichier si nécessaire.
Les commandes directes exit, logout et exec sont refusées, car elles terminent ou remplacent le shell d’origine ; utilisez /bin/sh -c pour les exécuter dans un sous-processus.
Configuration
Vérifiez Réglages → Automatisation → IA. L'option est activée par défaut. Si vous l'aviez désactivée, réactivez-la, puis ouvrez un nouveau terminal ou redémarrez l'agent déjà en cours d'exécution.
Zshell prend en charge Codex, Claude Code, Gemini CLI, Grok Build, OpenCode, Cursor Agent, Aider, Amp et Pi. Si une configuration existante d'agent entre en conflit avec cette fonction, Zshell la conserve, rétablit l'état précédent du contrôle et affiche l'erreur dans Réglages.
Demander en langage naturel
Indiquez à votre agent le résultat attendu. Par exemple :
Exécute les tests concernés dans un volet en arrière-plan et indique-moi ceux qui échouent.
Confie ce bug à un autre agent Codex, puis vérifie son résultat.
Demande à l'agent chargé de l'API si le schéma est prêt, puis transmets la réponse à celui qui exécute les tests.
Démarre le serveur de développement à côté, attends qu'il soit prêt et donne-moi son URL.
Vérifie si l'agent en arrière-plan a terminé. S'il est bloqué, indique-moi ce dont il a besoin.
L'agent utilise lui-même l'interface d'automatisation de Zshell. Vous n'avez aucune commande d'automatisation à saisir ou à mémoriser.
Coordonner les agents entre les volets
Vous pouvez répartir des travaux liés dans plusieurs volets Zshell et demander à l'agent principal de les coordonner. Un agent peut modifier une API pendant qu'un autre met les tests à jour. Le coordinateur peut demander les résultats d'un agent précis, lui envoyer des précisions, transmettre une information utile à un autre et vous rapporter une réponse regroupée. Les agents peuvent utiliser différents outils de programmation compatibles.
Vous n'avez plus à copier le contexte d'un travail parallèle à l'autre. Chaque agent conserve sa conversation dans son volet, et le coordinateur ne transmet que la question, l'information ou le résultat dont un autre a besoin.
L'envoi d'un message complémentaire ne signifie pas que le travail est terminé. Le coordinateur attend encore l'agent, lit son résultat et le vérifie. Un message d'un autre agent ne constitue jamais votre autorisation. Les décisions relatives aux permissions, aux identifiants, à la confiance et aux actions destructrices vous reviennent.
Continuer à travailler pendant l'exécution
Les volets délégués restent en arrière-plan, sauf si vous demandez à les voir. Lorsqu'une intégration native du fournisseur rapporte un état de cycle de vie, Zshell l'affiche sur le volet et l'onglet de l'agent :
| État | Signification |
|---|---|
| En cours | L'agent traite activement la tâche. |
| Bloqué | Il attend une information, une autorisation ou une décision de votre part. |
| Terminé | Il a terminé en arrière-plan et vous n'avez pas encore consulté son volet. |
Zshell privilégie les événements natifs de Codex, Claude Code, Pi, OpenCode et Grok, puis les rapports explicites des programmes. Survolez le badge ou ouvrez Agents pour voir la source, le motif d’attente, le pourcentage et les sous-tâches. Les hooks Codex doivent d’abord être examinés et approuvés dans /hooks ; Zshell ne contourne pas cette étape.
Sans rapport natif, seul le bas de l’écran actif d’un processus d’agent reconnu est analysé, dans une limite fixe. La déduction à partir de l’écran est signalée, ne rapporte jamais une fin, n’envoie aucune notification et ne satisfait pas zshell +agent wait. Elle n’accorde aucune autorisation. Vérifiez le volet et le résultat réel.
Les programmes utilisent zshell +agent report pour signaler leur progression et zshell +agent clear pour effacer leur propre rapport. Celui-ci expire après 120 secondes sans mise à jour ou à la fin du processus propriétaire.
Lorsqu'une intégration signale la fin d'un agent ou une demande d'intervention, Zshell peut aussi envoyer une notification. Cmd+Shift+A rejoint le prochain agent signalé comme nécessitant votre attention.
Utilisation et limites du compte
Réglages → Automatisation → Utilisation du compte affiche les limites disponibles pour Claude Code et Codex : pourcentage utilisé, heure de réinitialisation lorsqu'elle est fournie et heure de la dernière actualisation. Actualiser l'utilisation recharge les dernières données disponibles.
Codex nécessite une CLI installée, connectée et capable de rapporter les limites du compte. L'utilisation de Claude Code apparaît lorsque Zshell reçoit un rapport d'utilisation de sa ligne d'état. Cette section n'est visible que si des données sont disponibles ; les périodes présentées dépendent du fournisseur et du compte. Il s'agit des limites du compte, pas du total de tokens de la session active.
Déroulement habituel
- Démarrez votre agent de programmation habituel dans un terminal Zshell.
- Demandez-lui de déléguer une tâche bien délimitée, d'exécuter une commande en arrière-plan ou de coordonner un autre agent.
- Continuez à travailler dans votre volet ; le travail délégué reste visible dans la disposition du projet.
- Suivez les badges En cours, Bloqué ou Terminé lorsque le fournisseur les rapporte. Sinon, ouvrez le volet pour lire la conversation ou la sortie du terminal.
- Examinez les fichiers et le diff dans le panneau Git, puis décidez des changements à conserver.
Vous gardez la main
- L'automatisation des agents reste limitée au projet Zshell actuel ; elle ne peut pas atteindre les volets d'un autre projet ou d'une autre fenêtre.
- Le travail en arrière-plan ne prend pas le focus sans votre demande explicite.
- Zshell ne répond pas à votre place aux demandes de permission, d'identifiants, de confiance ou d'action destructrice. Un état Bloqué rapporté par le fournisseur vous rend la décision.
- La fin rapportée d'une tâche indique qu'il est temps d'en examiner le résultat ; elle n'approuve pas automatiquement les changements de l'agent.
Si un agent n'utilise pas Zshell
- Vérifiez que Réglages → Automatisation → IA est activé.
- Ouvrez un nouveau terminal Zshell si le terminal actuel existait avant l'activation.
- Redémarrez l'agent s'il était déjà en cours d'exécution.
- Vérifiez si une erreur de configuration apparaît dans Réglages.
- Demandez explicitement un « volet Zshell en arrière-plan » ou un « agent Zshell délégué » pour utiliser ce fonctionnement dans votre tâche.
Reprendre la conversation d’origine
Avec Reprendre les conversations des agents, un volet dont le PTY d’origine est indisponible reprend sa conversation enregistrée de Claude Code, Codex, Pi ou OpenCode. Plusieurs volets dans le même répertoire conservent chacun leur propre conversation.
Zshell installe des hooks SessionStart pour Claude Code et Codex, une extension Pi et un plugin TUI OpenCode dans la configuration existante. Les autres hooks, plugins, réglages et commentaires JSONC sont conservés. À la demande du fournisseur, activez les hooks dans la confirmation de confiance de Claude Code et approuvez ceux de Codex dans /hooks. Redémarrez les agents déjà lancés avant l’installation.
Seules les conversations racines vérifiées signalées par ces intégrations sont reprises. Les sessions app-server Codex partagées sont prises en charge quand un identifiant de conversation vérifié correspond au panneau ; les correspondances ambiguës restent sans association. Pour les conversations sur un hôte distant, consultez les sessions distantes partagées. OpenCode exige l’API de plugins TUI ; les anciennes versions, sessions serveur sans interface et opencode attach ne sont pas pris en charge. Un agent enfant ne remplace pas la conversation du volet parent. Pi nécessite son fichier de session enregistré.
Sans identité vérifiée, répertoire d’origine ou fichier Pi, le volet ouvre un nouveau shell. Un CLI introuvable ramène aussi au shell. Zshell ne rejoue aucune commande de démarrage arbitraire et ne choisit pas une conversation récente. Le CLI affiche les erreurs du fournisseur, par exemple une conversation supprimée.
Retrouver et reprendre les conversations enregistrées
Ouvrez Agents → Historique des conversations des agents, cliquez sur l’horloge en haut de la barre latérale des projets. Recherchez parmi les projets par titre, fournisseur, projet, ID de conversation ou répertoire de travail ou de configuration. Zshell conserve les 200 conversations locales vérifiées les plus récentes après la fermeture des agents et des volets, ainsi qu’après un redémarrage. Récentes affiche 20 résultats non archivés ; Toutes inclut les archives ; Archivées les affiche seules.
Choisissez Afficher la conversation si elle est ouverte ou Reprendre la conversation si elle est enregistrée. Zshell réutilise un volet ouvert, reconnecte un PTY encore actif ou reprend la conversation exacte du fournisseur avec son répertoire et sa configuration d’origine. La reprise manuelle exige l’intégration IA, même si la restauration automatique est désactivée. Un répertoire manquant ou un fichier Pi absent ou ne correspondant pas à la conversation produit une erreur avant la création d’un volet.
Archiver masque l’entrée dans Récentes ; Désarchiver la rétablit. Supprimer… retire uniquement l’entrée Zshell et conserve les fichiers du fournisseur.
Dans un volet Zshell, zshell +agent history --all et zshell +agent resume --id HISTORY_UUID concernent son projet. Depuis un terminal externe ordinaire, gardez Zshell ouvert, trouvez l’UUID du projet et sélectionnez-le explicitement :
zshell +agent history projects
zshell +agent history --project PROJECT_UUID --all
zshell +agent resume --project PROJECT_UUID --id HISTORY_UUID --focusLa reprise CLI reste en arrière-plan sans --focus. Pour un projet ouvert dans plusieurs fenêtres, choisissez --window WINDOW_UUID fourni par history projects. Si plusieurs instances tournent, utilisez --connection PATH avec le chemin absolu du fichier de connexion privé indiqué par le CLI. Ces cibles sont réservées aux terminaux externes ; les processus des volets gardent leur projet d’origine.
Suivre les événements du projet
Dans un terminal Zshell, zshell +events suit en NDJSON les changements futurs du projet et de la fenêtre du terminal, sans interrogation périodique. Options : --pane UUID, --event NAME répétable, --once et --timeout MS (0 attend indéfiniment).
Le flux signale les créations et fermetures de sessions et volets, le focus, la progression, l’attention et la fin des agents, et la fin des commandes. stream.ready commence à sequence 0 ; chaque événement correspondant incrémente la séquence. Chaque ligne contient version, event, stream_id, sequence, time en millisecondes Unix, project_id et data. Aucun historique n’est rejoué. Lisez les résultats avec +pane wait --task UUID.
Limites : 32 abonnements, 256 trames et 1 MiB par file, 64 KiB par trame. Un lecteur lent reçoit si possible stream.lagged puis est déconnecté ; une écriture bloquée 2 secondes ferme aussi la connexion. Retard, déconnexion inattendue ou séquence invalide terminent avec un code non nul. Réabonnez-vous et relisez l’état actuel. Fermeture du terminal, renouvellement du jeton ou transfert vers un autre projet ou fenêtre terminent l’abonnement. Aucun contrôle externe ni --project ; supprimer les variables ne donne pas plus de droits. Un délai sans correspondance avec --once retourne 124 ; sinon 0.
zshell +events --event command.task.finished --once --timeout 30000pane.updated: data.from → data (tab_id, pane_id, terminal_id, content).