Issue Sessions
Comment fonctionnent les issue sessions pilotées par l'IA - de la configuration de l'Issue Agent au lancement d'un scan, en passant par le suivi de la progression, l'extraction des issues et le lancement d'answering sessions pour clarifier les questions avant l'implémentation.
Une issue session est un processus de scan piloté par l’IA qui analyse votre codebase et découvre automatiquement des problèmes, des bugs, des améliorations et des tâches. La session s’exécute dans une sandbox cloud, donnant à l’agent IA un accès complet au code de votre repository, et produit une liste JSON structurée d’issues qui sont importées dans CodeCourier pour le suivi et la résolution. En plus des issues, les sessions génèrent des questions et des hypothèses - des artefacts structurés qui capturent ce dont l’agent n’était pas certain pendant le scan et ce qu’il a supposé en l’absence de directives explicites.
Qu’est-ce qu’une Issue Session ?
Imaginez une issue session comme une revue de code automatisée avec un focus spécifique. Vous fournissez un prompt de découverte - par exemple, “scanne les vulnérabilités de sécurité et les problèmes de performance” - et CodeCourier provisionne une sandbox, clone votre repository, et exécute un agent IA qui examine la codebase selon vos instructions. L’agent produit ses résultats sous forme de liste structurée d’issues, chacune avec un titre, une description, une priorité et une correction suggérée. Il enregistre également les questions auxquelles il n’a pas pu répondre à partir de la seule codebase, ainsi que les hypothèses qu’il a formulées en poursuivant sans réponses.
Traitement en arrière-plan
Configurer l’Issue Agent
Avant de lancer une session, vous configurez l’Issue Agent depuis la page Issues Setup à l’adresse /p/{projectId}/issues-setup. Cette configuration s’applique à toutes les issue sessions du projet. La page de configuration vous permet de spécifier :
| Paramètre | Description |
|---|---|
| Outil CLI | Quel agent de codage IA utiliser pour la session de scan (Claude Code, OpenCode, Codex, etc.). |
| Modèle | Modèle LLM spécifique pour l’Issue Agent. Opus est recommandé pour une analyse approfondie de la codebase. |
| Effort de réflexion | Profondeur de raisonnement de l’Issue Agent. Un effort plus élevé produit une découverte d’issues plus nuancée mais augmente le coût et la durée de la session. |
| Contexte lié | Liez éventuellement un document de contexte à l’Issue Agent. La version active du contexte est injectée dans la sandbox aux côtés du system prompt de l’agent, apportant des connaissances architecturales de fond. |
| Skills | Packages de connaissances métier disponibles pour l’Issue Agent pendant le scan. |
| Commands | Commandes shell et alias injectés dans la sandbox pour l’usage de l’Issue Agent. |
| Scripts | Scripts exécutables injectés dans la sandbox. |
Configuration de l'Issue Agent
Lancer une session
Pour lancer une issue session, accédez à la page Issues et cliquez sur Nouvelle session. Vous devez fournir :
- Prompt de découverte(requis) - Instructions pour l’agent IA décrivant ce qu’il doit rechercher. Soyez aussi spécifique que possible pour de meilleurs résultats.
- Configuration de sandbox (optionnelle) - Remplacez les paramètres de sandbox par défaut, notamment le template, la mémoire, le nombre de CPU et le timeout.
Exemples de prompts de découverte :
# Security-focused scan
"Analyze the codebase for security vulnerabilities including XSS, SQL injection,
authentication bypasses, and insecure defaults. Focus on API routes and user input handling."
# Performance scan
"Identify performance bottlenecks, memory leaks, N+1 queries, unnecessary re-renders,
and large bundle size contributors."
# General code quality
"Find bugs, error handling gaps, untested edge cases, and code that doesn't follow
the project's established patterns and conventions."
# Architecture review
"Identify architectural inconsistencies, missing abstractions, leaky abstractions,
and components that have grown beyond a single responsibility."Clés API requises
Cycle de vie d’une session
Chaque issue session traverse une série de phases :
1. Initiation
Lorsque vous soumettez la session, CodeCourier valide votre authentification et vos clés API, crée un enregistrement de session avec le statut active, et envoie une tâche en arrière-plan Trigger.dev pour gérer le travail de scan.
2. Exécution en sandbox
La tâche en arrière-plan provisionne une sandbox E2B avec la configuration d’environnement de votre projet. Si une URL de repository GitHub est configurée, le repository est cloné dans la sandbox. L’agent IA s’exécute ensuite avec votre prompt de découverte, analysant les fichiers, traçant les chemins de code et identifiant les issues. L’agent écrit ses résultats dans /home/user/issues.json et ses questions dans /home/user/questions.json au sein de la sandbox.
La progression de la session est suivie via deux compteurs sur l’enregistrement de session :
currentIteration- Le nombre d’itérations actuel de l’agent, mis à jour en temps réel au fur et à mesure de la progression de la session. Cela reflète combien de passes de scan ou de cycles de raisonnement l’agent a effectués.maxIterations- La limite supérieure configurée pour les itérations. Une fois quecurrentIterationatteintmaxIterations, l’agent conclut et écrit sa sortie finale. Augmenter cette limite permet un scan plus profond et plus approfondi, au prix d’un temps d’exécution et de tokens supplémentaires.
3. Extraction des issues
Lorsque la session se termine (ou est arrêtée manuellement), CodeCourier lit la sortie issues.jsondepuis la sandbox. Le parseur d’extraction gère plusieurs formats JSON :
- Tableaux encapsulés :
{ "issues": [...] }ou{ "results": [...] } - Tableaux directs :
[{ "title": "...", "description": "..." }, ...] - Noms de champs alternatifs :
namemappé surtitle,goalmappé surdescription - JSON partiel avec extraction par regex de secours en cas de sortie malformée
4. Extraction des questions et hypothèses
En plus des issues, la session extrait les questions et hypothèses de questions.json. Elles sont stockées dans les champs questionsJson et assumptionsJson de l’enregistrement de session. Chaque question capture ce dont l’agent n’était pas certain, et chaque hypothèse capture la manière dont l’agent a procédé en l’absence de réponse explicite.
Ces questions et hypothèses constituent l’entrée d’une Answering Session optionnelle qui s’exécute après la fin de l’Issue Session.
5. Création des enregistrements d’issue
Chaque issue extraite est validée (le titre et la description doivent être présents) et créée comme un enregistrement d’issue individuel lié à la session. La priorité est normalisée vers l’un des quatre niveaux pris en charge, avec medium par défaut si non spécifiée ou non reconnue. Toutes les issues démarrent avec le statut new.
La session déclenche également l’envoi de learnings et active tous les hooks de revue configurés pour le projet, permettant aux rôles Judge et Evaluator de participer à l’évaluation de la session avant que les issues ne soient traitées.
Statuts de session
| Statut | Description |
|---|---|
active | L’agent IA est en train de scanner la codebase dans la sandbox. |
completed | La session s’est terminée avec succès et les issues, questions et hypothèses ont été extraites. |
reviewing | La sortie de la session est en cours d’évaluation par un Judge ou un Evaluator avant d’être libérée pour action. |
archived | La session a été archivée par l’utilisateur. |
killed | La session a été arrêtée manuellement. CodeCourier tente de récupérer toute sortie issues.json partielle avant le nettoyage. |
cancelled | La session a été annulée avant que la sandbox ne puisse démarrer. |
Configurer les paramètres de session
Lors du lancement d’une session, vous pouvez personnaliser la configuration de sandbox :
| Paramètre | Par défaut | Description |
|---|---|---|
templateId | base | Le template de sandbox E2B à utiliser |
memoryMb | 1024 | Allocation de mémoire en mégaoctets |
cpuCount | 2 | Nombre de cœurs CPU virtuels |
timeoutMs | 3600000 (1 heure) | Durée maximale de session en millisecondes |
maxIterations | Configuré dans Issues Setup | Limite supérieure des itérations de scan de l’agent. Des valeurs plus élevées permettent une analyse plus approfondie. |
Lancer une Answering Session
Une fois qu’une Issue Session est terminée et que les questions/hypothèses ont été extraites, vous pouvez optionnellement lancer une Answering Session directement depuis la page de détail de l’Issue Session. Cliquez sur le bouton Démarrer une Answering Session pour lancer le flux.
L’Answering Session utilise un Answering Agent distinct (configuré dans la page answering-setup) pour examiner les questions et produire des hypothèses affinées et exploitables. Vous examinez ensuite chaque hypothèse individuellement - en l’approuvant, la refusant ou la corrigeant. Les hypothèses approuvées sont stockées comme contexte structuré pouvant être injecté dans les workflow runs lors de l’exécution des issues résultantes.
Consultez la documentation Answering Sessions pour un guide complet de ce flux.
Exécuter des issues individuelles
Une fois les issues extraites d’une session (ou créées manuellement), vous pouvez exécuter chacune individuellement :
- Cliquez sur Exécuter l’issue sur la carte d’issue
- Sélectionnez un blueprint de workflow à utiliser pour l’exécution
- Configurez optionnellement une URL de repository GitHub et un nom de branche
- Soumettez pour lancer le workflow run
Le run utilise le suggestedPromptde l’issue s’il est disponible, sinon il se rabat sur la descriptioncomme prompt. Lorsqu’une Answering Session a été complétée pour cette Issue Session, les hypothèses approuvées sont disponibles comme contexte supplémentaire pour le run. Le statut de l’issue passe à running et est automatiquement synchronisé avec le résultat du run.
Gérer les sessions
Depuis la liste des sessions, vous pouvez :
- Renommer - Donner à la session un nom descriptif
- Arrêter (Kill) - Terminer une session active (les résultats partiels sont récupérés)
- Archiver - Retirer les sessions terminées de la liste active
- Supprimer - Suppression douce d’une session
- Suppression en masse - Supprimer plusieurs sessions à la fois
- Démarrer une Answering Session - Lancer une Answering Session pour une session terminée disposant de questions/hypothèses
Prochaines étapes
Answering Sessions
Résolvez des questions et validez des hypothèses après un scan avec une Answering Session.
Work Chains
Exécutez plusieurs issues en séquence par lot avec les work chains.
Exécuter des workflows
Découvrez l'exécution des workflows et la gestion des runs.
Vue d'ensemble des Issues
Retournez à la vue d'ensemble des Issues pour le cycle de vie complet de découverte et de résolution.