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
- Installez
uv
(voir la documentation officielle pour les instructions d'installation : https://docs.astral.sh/uv/getting-started/installation/)
- Clonez le dépôt dans
/path/to/serena
- Copiez
serena_config.template.yml
en serena_config.yml
et ajustez les paramètres
- Copiez
myproject.template.yml
en myproject.yml
et ajustez les paramètres spécifiques au projet
- Pour basculer dynamiquement entre les projets, ajoutez tous les fichiers de projet à la liste
projects
dans serena_config.yml
Intégration avec Claude Desktop
- Créez un fichier de configuration de projet
myproject.yml
- 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"]
}
}
}
- Enregistrez la configuration et redémarrez Claude Desktop
Utilisation avec Goose CLI
- Installez goose
- Utilisez
goose configure
pour ajouter une extension
- Sélectionnez "Command-line Extension", nommez-la "Serena"
- Ajoutez la commande :
/abs/path/to/uv run --directory /abs/path/to/serena serena-mcp-server /optional/abs/path/to/project.yml
- Désactivez l'extension
developer
par défaut
Utilisation avec Agno GUI
- Téléchargez le code agent-ui :
npx create-agent-ui@latest
- Installez Serena :
uv pip install --all-extras -r pyproject.toml -e .
- Copiez
.env.example
en .env
et remplissez les clés API
- Démarrez l'agent Agno :
uv run python scripts/agno_agent.py
- 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
- 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
- Configuration Windows : Configurez
git config --global core.autocrlf true
sous Windows
- Structure du code : Utilisez un code bien structuré, modulaire et avec des annotations de type
- Tests et journaux : Incluez des informations de journalisation détaillées et des tests significatifs
- Planification d'abord : Pour les tâches complexes, conceptualisez et planifiez d'abord
- 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.