Home
Login

Serena est une boîte à outils d'agent de codage puissante qui transforme les grands modèles de langage (LLM) en un agent entièrement fonctionnel, travaillant directement sur votre base de code.

MITPython 1.2koraios Last Updated: 2025-06-13

Présentation détaillée du projet Serena

Aperçu du projet

Serena est une boîte à outils puissante d'agent intelligent de programmation, capable de transformer les grands modèles de langage (LLM) en agents intelligents de programmation entièrement fonctionnels, travaillant directement sur votre base de code. Ce projet est développé par Oraios AI et contribué en open source à la communauté des développeurs.

Caractéristiques principales

🚀 Capacités essentielles

  • Fonctionnalités de recherche et d'édition de code sémantique : Fournit des capacités similaires à un IDE, extrayant les entités de code au niveau des symboles et exploitant les structures relationnelles.
  • Entièrement open source et gratuit : Améliore les capacités de votre LLM existant sans frais supplémentaires.
  • Plusieurs méthodes d'intégration : Prend en charge l'intégration avec le serveur MCP, le framework Agno et les frameworks d'agents intelligents personnalisés.

🔧 Avantages techniques

  • Basé sur le protocole Language Server Protocol (LSP) : Fournit de nombreuses fonctionnalités de requête et d'édition de code via le LSP largement implémenté.
  • Compréhension au niveau des symboles : Effectue la découverte et l'édition basées sur la compréhension symbolique du code, comme un développeur expérimenté utilisant un IDE.
  • Efficace et précis : Trouve efficacement le contexte correct et exécute les opérations correctes, même dans des projets vastes et complexes.

Langages de programmation pris en charge

Prise en charge directe (prêt à l'emploi)

  • Python
  • Java (Attention : démarrage lent, surtout lors du premier lancement)
  • TypeScript

Ces langages sont pris en charge par la bibliothèque de serveur de langage multilspy utilisée par Serena en interne.

Méthodes d'intégration

1. Protocole de contexte de modèle (MCP)

Serena fournit un serveur MCP qui peut être intégré aux clients suivants :

  • Claude Desktop
  • IDE (tels que VSCode, Cursor, IntelliJ)
  • Extensions (telles que Cline, Roo Code)
  • Goose (offre une bonne expérience CLI)
  • Et de nombreux autres clients, y compris l'application ChatGPT bientôt prise en charge.

2. Framework Agno

Grâce à Agno (un framework d'agent intelligent indépendant du modèle), Serena peut transformer presque n'importe quel LLM en un agent intelligent de programmation, prenant en charge :

  • Les modèles d'API payants fournis par Google, OpenAI, Anthropic
  • Les modèles gratuits fournis par Ollama, Together, Anyscale

3. Framework d'agent intelligent personnalisé

L'implémentation des outils de Serena est découplée du code spécifique au framework, ce qui facilite l'adaptation à n'importe quel framework d'agent intelligent.

Cas d'utilisation

Serena peut être utilisé pour n'importe quelle tâche de programmation, notamment :

  • Analyse de code
  • Planification de projet
  • Conception de nouveaux composants
  • Refactorisation du code existant
  • Tâches de programmation autonomes complètes, de l'analyse initiale à la mise en œuvre, aux tests et enfin à la soumission au système de contrôle de version.

Démarrage rapide

Installation de base

  1. Installez uv (voir la documentation officielle pour les instructions d'installation : https://docs.astral.sh/uv/getting-started/installation/)
  2. Clonez le dépôt dans /path/to/serena
  3. Copiez serena_config.template.yml en serena_config.yml et ajustez les paramètres
  4. Copiez myproject.template.yml en myproject.yml et ajustez les paramètres spécifiques au projet
  5. Pour basculer dynamiquement entre les projets, ajoutez tous les fichiers de projet à la liste projects dans serena_config.yml

Intégration avec Claude Desktop

  1. Créez un fichier de configuration de projet myproject.yml
  2. Configurez le serveur MCP dans Claude Desktop :
    • Ouvrez File / Settings / Developer / MCP Servers / Edit Config
    • Ajoutez dans claude_desktop_config.json :
    {
      "mcpServers": {
        "serena": {
          "command": "/abs/path/to/uv",
          "args": ["run", "--directory", "/abs/path/to/serena", "serena-mcp-server", "--project-file", "/abs/path/to/myproject.yml"]
        }
      }
    }
    
  3. Enregistrez la configuration et redémarrez Claude Desktop

Utilisation avec Goose CLI

  1. Installez goose
  2. Utilisez goose configure pour ajouter une extension
  3. Sélectionnez "Command-line Extension", nommez-la "Serena"
  4. Ajoutez la commande : /abs/path/to/uv run --directory /abs/path/to/serena serena-mcp-server /optional/abs/path/to/project.yml
  5. Désactivez l'extension developer par défaut

Utilisation avec Agno GUI

  1. Téléchargez le code agent-ui : npx create-agent-ui@latest
  2. Installez Serena : uv pip install --all-extras -r pyproject.toml -e .
  3. Copiez .env.example en .env et remplissez les clés API
  4. Démarrez l'agent Agno : uv run python scripts/agno_agent.py
  5. Démarrez l'UI : cd agent-ui && pnpm dev

Outils et configuration

Principales catégories d'outils

  • Outils de recherche de code sémantique : Recherchez des symboles, des références, des extraits de code
  • Outils d'édition de code : Insérez, remplacez, supprimez du code
  • Opérations sur le système de fichiers : Lisez, créez, listez des fichiers et des répertoires
  • Exécution de shell : Exécutez des commandes shell
  • Gestion de projet : Activez des projets, guide de démarrage, gestion de la mémoire

Considérations de sécurité

  • L'utilisation de tous les outils est généralement recommandée pour offrir une valeur maximale
  • L'outil execute_shell_command permet l'exécution de code arbitraire et doit être utilisé avec prudence
  • Les commandes spécifiques peuvent être désactivées dans le fichier de configuration du projet
  • Le mode lecture seule est pris en charge (read_only: true), permettant uniquement l'analyse et les suggestions, sans modifier la base de code.

Comparaison avec d'autres agents intelligents de programmation

Comparé aux agents basés sur un abonnement (Windsurf, Cursor, VSCode)

Avantages :

  • Pas de frais d'abonnement
  • Ne lie pas à un IDE spécifique
  • Ne lie pas à un grand modèle de langage ou une API spécifique
  • Utilise un serveur de langage pour la compréhension du code au niveau des symboles
  • Open source et petite base de code, facile à étendre et à modifier

Inconvénients :

  • Ne s'intègre pas directement dans l'IDE, la vérification du nouveau code n'est pas aussi transparente qu'avec les outils intégrés à l'IDE

Comparé aux agents basés sur l'API (Claude Code, Cline, Aider)

Avantages :

  • Peut être utilisé comme serveur MCP, pas besoin de clés API, évite les frais d'API
  • C'est une fonctionnalité unique de Serena

Similitudes :

  • Peuvent tous être utilisés comme agents de base d'API
  • Sont tous très puissants, le principal inconvénient étant les frais d'API potentiellement élevés

Comparé aux autres serveurs MCP

  • À notre connaissance, aucun autre serveur MCP lié à la programmation (tel que DesktopCommander, codemcp) ne fournit d'outils de recherche et d'édition de code sémantique
  • Ils s'appuient sur une analyse purement basée sur le texte
  • L'intégration par Serena d'un serveur de langage et de MCP la rend unique et puissante pour gérer les tâches de programmation difficiles dans de grandes bases de code.

Guide de démarrage et système de mémoire

Guide de démarrage

  • Par défaut, Serena effectue un processus de guide de démarrage lors du premier lancement pour un projet
  • L'objectif est de familiariser Serena avec le projet et de stocker des souvenirs pour les interactions futures

Système de mémoire

  • Les fichiers de mémoire sont stockés dans .serena/memories/ dans le répertoire du projet
  • L'agent intelligent peut choisir de lire ces fichiers
  • Les utilisateurs peuvent lire et ajuster les fichiers de mémoire selon leurs besoins, ou ajouter manuellement de nouveaux fichiers de mémoire
  • Le système de mémoire améliore considérablement l'expérience utilisateur avec Serena

Conseils d'utilisation

Sélection du modèle

  • La version non-thinking de Claude 3.7 semble mieux fonctionner que la version thinking
  • Gemini a bien fonctionné lors des premières expériences, mais ne prend pas encore en charge MCP
  • Gemini est relativement bon marché et peut gérer d'énormes longueurs de contexte

Meilleures pratiques

  1. Contrôle de version : Il est préférable de commencer les tâches de génération de code à partir d'un état git propre
  2. Configuration Windows : Configurez git config --global core.autocrlf true sous Windows
  3. Structure du code : Utilisez un code bien structuré, modulaire et avec des annotations de type
  4. Tests et journaux : Incluez des informations de journalisation détaillées et des tests significatifs
  5. Planification d'abord : Pour les tâches complexes, conceptualisez et planifiez d'abord
  6. Gestion du contexte : Pour les tâches longues, vous pouvez créer des résumés et continuer dans de nouvelles conversations

Liste complète des outils

Voici la liste complète de tous les outils de Serena :

  • activate_project: Active un projet par son nom
  • check_onboarding_performed: Vérifie si le guide de démarrage a été effectué
  • create_text_file: Crée/écrase un fichier dans le répertoire du projet
  • delete_lines: Supprime une plage de lignes dans un fichier
  • delete_memory: Supprime un souvenir du stockage de mémoire spécifique au projet de Serena
  • execute_shell_command: Exécute une commande shell
  • find_referencing_code_snippets: Recherche des extraits de code qui référencent un symbole à un emplacement donné
  • find_referencing_symbols: Recherche des symboles qui référencent un symbole à un emplacement donné
  • find_symbol: Effectue une recherche de symbole globale (ou locale)
  • get_active_project: Obtient le nom du projet actif actuel
  • get_symbols_overview: Obtient un aperçu des symboles de niveau supérieur dans un fichier ou un répertoire
  • insert_after_symbol: Insère du contenu après la fin de la définition d'un symbole
  • insert_at_line: Insère du contenu à une ligne donnée dans un fichier
  • insert_before_symbol: Insère du contenu avant le début de la définition d'un symbole
  • list_dir: Liste les fichiers et les répertoires dans un répertoire
  • list_memories: Liste les souvenirs dans le stockage de mémoire
  • onboarding: Effectue le guide de démarrage
  • prepare_for_new_conversation: Prépare une nouvelle conversation
  • read_file: Lit un fichier dans le répertoire du projet
  • read_memory: Lit un souvenir avec le nom spécifié
  • replace_lines: Remplace une plage de lignes dans un fichier par un nouveau contenu
  • replace_symbol_body: Remplace la définition complète d'un symbole
  • restart_language_server: Redémarre le serveur de langage
  • search_for_pattern: Recherche un motif dans le projet
  • summarize_changes: Fournit un résumé des modifications apportées à la base de code
  • think_about_collected_information: Outil de réflexion, utilisé pour considérer l'exhaustivité des informations collectées
  • think_about_task_adherence: Outil de réflexion, utilisé pour déterminer si l'agent intelligent est toujours sur la bonne voie pour la tâche actuelle
  • think_about_whether_you_are_done: Outil de réflexion, utilisé pour déterminer si la tâche est réellement terminée
  • write_memory: Écrit un souvenir nommé dans le stockage de mémoire pour référence future

Résumé

Serena est une boîte à outils d'agent intelligent de programmation puissante et entièrement open source qui, grâce à la compréhension sémantique du code et à de multiples méthodes d'intégration, offre aux développeurs une solution d'assistance à la programmation IA gratuite et puissante. Que ce soit via l'intégration du serveur MCP avec Claude Desktop ou via l'utilisation de divers LLM avec le framework Agno, Serena peut améliorer considérablement l'efficacité de la programmation et la qualité du code.