Skip to main content
Jonathan Andrei
Retour aux billets
Juin 202611 min de lecture

OrbitOnboard : j'ai utilisé les quatre types de requêtes GitLab Orbit pour générer un kit de démarrage en 10 secondes

La moitié des nouveaux contributeurs abandonnent leur première tentative dans une base de code inconnue. Pas parce que le problème est trop dur, mais parce que la carte n'existe pas. OrbitOnboard produit cette carte en exploitant les quatre types de requêtes Orbit dans un seul flux coordonné : fichiers critiques, ordre de lecture, carte des experts, MR passées similaires, issues ouvertes liées, postés directement en commentaire d'issue.

GitLab OrbitKnowledge GraphDeveloper ExperienceGitLab DuoAI CatalogPython

La moitié des nouveaux contributeurs abandonnent leur première tentative de contribuer à un code inconnu. Pas parce que le problème est trop dur, mais parce que la carte n'existe pas. Quels fichiers comptent ? Qui possède ce secteur ? Quel est le bon ordre de lecture ? Ce coût d'orientation est invisible, silencieux et entièrement évitable.

Architecture OrbitOnboard : un seul issue GitLab se répand en cinq requêtes Orbit parallèles (une Aggregation pour les fichiers critiques, un Path Finding pour l'ordre de lecture, une Aggregation pour la carte des experts, deux Traversals pour les MR similaires et les issues liées), puis le Formatter rend un kit de démarrage Markdown qui se poste en commentaire d'issue, dans le fichier SKILL.md et dans le GitLab Duo AI Catalog
Les quatre types de requêtes Orbit dans un seul flux coordonné. Cinq requêtes, en parallèle, en une dizaine de secondes.

Ce qu'il produit

Pour un projet GitLab et un IID d'issue donnés, OrbitOnboard lance cinq requêtes Orbit en parallèle et poste un kit de démarrage Markdown structuré directement sur l'issue. Chaque section est mappée à un type de requête Orbit choisi délibérément pour ce qu'il peut dire à un contributeur débutant.

  • Fichiers critiques (Aggregation) : quels fichiers comptent le plus, classés par historique réel de fusion, pas par analyse statique.
  • Ordre de lecture (Path Finding) : dans quel ordre lire le code, de la base fondationnelle à l'implémentation.
  • Carte des experts (Aggregation sur AUTHORED) : qui consulter, les personnes qui ont livré dans ce secteur, pas seulement commité.
  • MR passées similaires (Traversal avec any_tokens) : comment des problèmes analogues ont été résolus.
  • Issues ouvertes liées (Traversal avec any_tokens) : autres travaux en cours dans la même zone.
Page d'issue GitLab où le commentaire de kit de démarrage d'OrbitOnboard sera posté, montrant le titre et les labels qui alimentent Orbit
L'entrée d'OrbitOnboard est un seul issue. Le titre et les labels deviennent l'ensemble de mots-clés alimentant les cinq requêtes Orbit.

Le différenciateur : les quatre types de requêtes Orbit dans un seul flux

La plupart des outils basés sur Orbit n'utilisent que des requêtes de traversal. OrbitOnboard exerce délibérément les quatre types parce que chacun fait émerger une information qu'aucun autre ne peut produire.

  • Aggregation : comptages dans le graphe des MR pour calculer une centralité basée sur l'activité. Fichiers classés par nombre de MR fusionnés qui les ont touchés. Un score d'importance dynamique, dérivé de l'historique, qu'aucune analyse statique ne peut reproduire.
  • Path finding : parcours du plus court chemin du fichier d'implémentation vers les dépendances fondationnelles. C'est ce qui produit l'ordre de lecture, une capacité propre aux requêtes graph-natives. Aucune recherche par mots-clés ni arborescence de fichiers ne peut générer ça.
  • Traversal : récupération de nœuds filtrée par tokens pour les MR similaires passées et les issues ouvertes liées.
  • Neighbors : inspection immédiate des dépendances comme fallback gracieux quand le path finding ne trouve aucune route dans la limite serveur de 3 sauts.

Utiliser les quatre types dans un seul flux coordonné est la décision architecturale centrale, et c'est ce qui rend la sortie d'OrbitOnboard plus riche que n'importe quelle approche à requête unique.

Capture de démo : la section d'ordre de lecture générée du kit de démarrage, listant les fichiers fondationnels en premier et les fichiers d'implémentation en dernier, dérivée d'un parcours du plus court chemin dans le graphe Orbit
Ordre de lecture issu du path finding : commencer par le bas, code fondationnel d'abord, remonter jusqu'à l'implémentation. C'est le graphe qui a choisi cette séquence, pas moi.

Centralité basée sur l'activité, l'idée propre

Le module de centralité des fichiers classe les fichiers par nombre de touches MR : combien de MR fusionnés ont modifié chaque fichier dans la zone de mots-clés pertinente. C'est une centralité basée sur l'activité, dérivée de la chaîne d'arêtes Orbit AUTHORED -> MergeRequest -> HAS_DIFF -> MergeRequestDiffFile.

Pourquoi ça compte : les outils d'analyse statique classent les fichiers par nombre d'imports ou fréquence d'appel (vue compile-time). Le compte de touches MR d'Orbit est une vue runtime : ça dit quels fichiers l'équipe a trouvés assez importants pour les changer, à répétition, dans le temps. Ce ne sont pas toujours les mêmes fichiers. Le fichier utilitaire le plus importé dans une base de code n'est pas forcément celui qu'un contributeur doit lire en premier. Celui que l'équipe a rouvert 47 fois, oui.

Capture de démo : table des fichiers critiques dans le kit de démarrage généré, classant les fichiers par nombre de MR fusionnés qui les ont touchés
Fichiers critiques classés par nombre de touches MR : une vue runtime de ce que l'équipe change effectivement dans ce secteur.

Ce qui a été difficile

Les arêtes HAS_FILE entre MergeRequestDiff et MergeRequestDiffFile sont rares sur certaines instances GitLab. La première requête Aggregation pour les fichiers critiques renvoyait vide sur les premiers projets de test. La correction a été un fallback vers un traversal token_match sur File.path qui approxime la même réponse sans dépendre de l'arête diff-file rarement peuplée. Les fallbacks partagent le slot du budget d'itérations avec leur primaire échoué, donc la limite de 5 requêtes est toujours respectée.

Le path finding est plafonné côté serveur à 3 sauts. Les chaînes plus profondes que 4 niveaux retombent sur Neighbors, qui inspecte les dépendances immédiates à un niveau. C'est une dégradation gracieuse plutôt qu'une erreur dure : le kit de démarrage produit quand même un ordre de lecture, juste plus court. L'échelle de fallback (Aggregation → Traversal, Path Finding → Neighbors) est documentée dans SKILL.md pour que l'invocation Custom Agent respecte le même budget.

Le budget de cinq requêtes est strict. Chaque échec de validation est compté. Si une requête échoue deux fois, la section est sautée avec une note explicative plutôt qu'omise silencieusement. Ce choix empêche le mode d'échec où un kit de démarrage semble complet mais omet en silence une section.

Capture de démo : section carte des experts du kit de démarrage généré, listant les contributeurs auteurs de MR dans le secteur concerné, avec handle et nombre de MR
Carte des experts : contributeurs classés par paternité de MR fusionnés dans le secteur concerné, pas par nombre de commits brut. Les contributeurs uniquement reviewers ne sont pas inclus, ce qui est une limite documentée.

Publié comme Custom Agent

OrbitOnboard est aussi livré au GitLab AI Catalog comme Custom Agent. Une fois activé dans un projet, un mainteneur peut l'invoquer directement depuis GitLab Duo Chat : « Use OrbitOnboard to generate a starter kit for issue #1234 in project gitlab-org/gitlab ». L'agent exécute les mêmes cinq requêtes Orbit, respecte le budget de 5 itérations et gère les fallbacks automatiquement. Le fichier SKILL.md du dépôt définit ses recettes de requêtes et peut aussi être installé localement avec glab skills install --global orbit-onboard.

Le README du dépôt orbit-onboard rendu sur GitLab, montrant les instructions d'installation, la recette de requêtes et les liens de démo
Le README est le chemin d'installation à la fois pour le CLI et le Custom Agent. Mêmes recettes de requêtes dans les deux cas.

À qui ça sert

  • Nouveaux contributeurs : obtenir la carte immédiatement au lieu de passer des jours à la reconstituer. Réduit le taux d'abandon sur les premières contributions.
  • Mentors et hôtes InnerSource : envoyer aux contributeurs un lien vers un kit de démarrage généré au lieu d'écrire des notes d'orientation à la main. La carte des experts nomme qui présenter ; l'ordre de lecture structure la première semaine.
  • Mainteneurs : le kit de démarrage se poste automatiquement en commentaire d'issue. Aucun effort humain par nouvel assigné.
  • Équipes qui passent InnerSource à l'échelle : la carte des experts rend la contribution inter-équipes lisible. Elle montre qui possède chaque secteur au-delà des frontières organisationnelles, pour que les contributeurs sachent qui contacter avant d'ouvrir une MR.

La suite

  • Inclure les reviewers, pas seulement les auteurs de MR, dans la carte des experts. AUTHORED est un type d'arête ; REVIEWED en est un autre, et les reviewers tiennent souvent la compréhension la plus profonde d'un secteur sans jamais avoir écrit un MR top-N.
  • Path finding plus profond via un walker à budget de sauts qui assemble plusieurs segments de 3 sauts côté client. Le plafond serveur reste respecté par requête ; le budget paie l'assemblage.
  • Personnalisation par organisation de l'étape d'extraction de mots-clés. Différentes organisations étiquettent les issues différemment, et l'ensemble de mots-clés pilote toute la chaîne de requêtes en aval.
  • Kits de démarrage pré-chauffés postés dans le cycle de création d'issue, pas à la demande. Même contenu, latence perçue plus basse.
Cartographier le code en 10 secondes, pas en 10 jours. Cinq requêtes Orbit en parallèle, quatre types de requêtes dans un seul flux, postés directement sur l'issue, avec le Custom Agent GitLab Duo prêt à être invoqué depuis le chat. Le coût d'orientation était toujours évitable ; il fallait juste poser au graphe les quatre bonnes questions.

Si ce projet vous a plu, le projet apparenté sur ce site (Memex) a appliqué le même instinct « savoir d'équipe rendu interrogeable » à la modération Reddit : faire émerger les décisions passées de l'équipe sur le cas limite qu'on s'apprête à trancher, avec le signal de cohérence qui vient de l'historique plutôt que d'une intuition.

Projet associé

OrbitOnboard: Instant Contributor Starter Kits from the GitLab Orbit Knowledge Graph

Voir le projet