Principe des sessions d'agents
Le GitHub Copilot app introduit la notion de session d'agent : chaque tâche confiée à Copilot est encapsulée du moment de la requête jusqu'à la génération du résultat. L'interface sessions view affiche un tableau de cartes, chacune indiquant le titre de la session et son pourcentage d’avancement. Cette granularité permet de lancer, suivre ou interrompre chaque session indépendamment des autres.
Isolation via Git worktree
Chaque session s'exécute sur un worktree Git distinct. Un worktree crée un répertoire de travail supplémentaire lié au même dépôt, partageant les objets du référentiel tout en conservant un arbre de travail isolé. Cette architecture évite les conflits de fichiers et garantit que les modifications générées par un agent n’interfèrent pas avec celles d’un autre. Exemple d’initialisation d’un worktree pour une fonctionnalité :
git worktree add -b feature/funded-sort ./worktrees/funded-sortLe processus de création du worktree est rapide car il réutilise les objets déjà présents dans le .git, limitant l'empreinte disque.
Gestion de la concurrence
Les sessions parallèles utilisent les mêmes ressources serveur que les appels API de Copilot. Le nombre maximal de sessions simultanées dépend donc des quotas d’appels OpenAI et de la capacité CPU/RAM du client local. En pratique, le blog indique que trois sessions (tri financé, audit d’accessibilité, exécution de tests) fonctionnent sans saturation, mais il n’expose pas de métriques précises. Chaque session conserve son propre contexte, ce qui supprime le besoin de re‑définir le prompt lorsqu’on revient sur une tâche interrompue.
Implications et limites
L’isolation via worktree simplifie la gestion des branches temporaires, mais introduit une charge de nettoyage : chaque worktree doit être supprimé après usage pour éviter l’accumulation de répertoires inutiles. De plus, la parallélisation augmente la consommation de bande passante API, ce qui peut entraîner des dépassements de quota ou des latences accrues. Sur le plan sécurité, chaque worktree possède son propre répertoire .git, exposant potentiellement des tokens d’accès si les permissions du système de fichiers ne sont pas correctement restreintes. Enfin, la synchronisation des résultats nécessite une étape manuelle de merge ou de rebase, car les modifications restent séparées tant que l’utilisateur ne les intègre pas dans la branche principale.