Introduction
Github Copilot CLI est un outil qui aide les développeurs à écrire du code de manière plus efficace. Cependant, sans un serveur de langage, il doit utiliser des méthodes de recherche de texte pour comprendre le code. Dans cet article, nous allons voir comment le protocole de serveur de langage (LSP) peut améliorer la compréhension du code par Copilot CLI.
Contexte Technique
Le protocole de serveur de langage (LSP) est un standard qui permet aux éditeurs de code comme VS Code de fournir des fonctionnalités telles que la définition, la recherche de références et la résolution de types. Le LSP peut également être utilisé dans le terminal. Le skill LSP Setup automatisé l'installation et la configuration des serveurs LSP pour Copilot CLI, ce qui permet à l'agent de obtenir des réponses précises et structurées sur le code.
Le problème avec les méthodes de recherche de texte est qu'elles ne peuvent pas comprendre réellement le code. Par exemple, pour un projet Java, l'agent doit extraire les fichiers JAR, les décompresser et rechercher les méthodes à l'aide de la commande grep. Cela peut fonctionner pour les cas simples, mais cela ne peut pas comprendre les génériques, les surcharges et les types transitifs.
Analyse et Implications
Un serveur de langage peut résoudre ce problème en fournissant des réponses structurées et précises sur le code. Lorsque l'agent envoie une requête de définition de symbole, le serveur de langage retourne l'emplacement exact de la source, le type résolu et la signature.
Le skill LSP Setup fonctionne en sept étapes : sélection de la langue, détection du système d'exploitation, recherche du serveur de langage, configuration de la portée, installation, configuration et vérification. Le skill prend en charge 14 langages et peut être configuré pour fonctionner à l'échelle de l'utilisateur ou du référentiel.
Perspective
Une fois que le serveur de langage est configuré, l'agent peut résoudre les types à travers les dépendances, sauter à la définition dans les bibliothèques tierces, trouver toutes les références à un symbole et lire la documentation de survol pour n'importe quelle fonction, classe ou type. Cela signifie que l'agent passe moins de temps sur les appels d'outils et produit plus de code précis à la première passe.