Serena – Projektdetails
Projektübersicht
Serena ist ein leistungsstarkes Toolkit für programmierende Agenten, das große Sprachmodelle (LLMs) in voll funktionsfähige programmierende Agenten verwandeln kann, die direkt auf Ihrer Codebasis arbeiten. Das Projekt wurde von Oraios AI entwickelt und als Open Source der Entwickler-Community zur Verfügung gestellt.
Kernfunktionen
🚀 Kernkompetenzen
- Semantische Code-Abruf- und Bearbeitungsfunktionen: Bietet IDE-ähnliche Fähigkeiten, um Code-Entitäten auf Symbol-Ebene zu extrahieren und relationale Strukturen zu nutzen.
- Vollständig Open Source und kostenlos: Erweitert die Fähigkeiten Ihrer bestehenden LLMs ohne zusätzliche Kosten.
- Vielfältige Integrationsmöglichkeiten: Unterstützt die Integration mit MCP-Servern, dem Agno-Framework und benutzerdefinierten Agenten-Frameworks.
🔧 Technische Vorteile
- Basierend auf dem Language Server Protocol (LSP): Bietet vielfältige Code-Abfrage- und Bearbeitungsfunktionen durch das weit verbreitete LSP.
- Symbolisches Verständnis: Entdeckung und Bearbeitung basierend auf dem symbolischen Verständnis des Codes, wie ein erfahrener Entwickler mit einer IDE.
- Effizient und präzise: Findet auch in großen, komplexen Projekten effizient den richtigen Kontext und führt die richtigen Operationen aus.
Unterstützte Programmiersprachen
Direkte Unterstützung (Out-of-the-Box)
- Python
- Java (Achtung: Langsamer Start, besonders beim ersten Start)
- TypeScript
Diese Sprachen werden durch die multilspy Language Server Bibliothek unterstützt, die Serena im Hintergrund verwendet.
Integrationsmethoden
1. Modellkontextprotokoll (MCP)
Serena bietet einen MCP-Server, der mit folgenden Clients integriert werden kann:
- Claude Desktop
- IDEs (wie VSCode, Cursor, IntelliJ)
- Erweiterungen (wie Cline, Roo Code)
- Goose (bietet eine gute CLI-Erfahrung)
- Und viele andere Clients, einschließlich der bald unterstützten ChatGPT-Anwendung
2. Agno-Framework
Durch Agno (ein modellunabhängiges Agenten-Framework) kann Serena fast jedes LLM in einen programmierenden Agenten verwandeln und unterstützt:
- Bezahlte API-Modelle von Google, OpenAI, Anthropic
- Kostenlose Modelle von Ollama, Together, Anyscale
3. Benutzerdefinierte Agenten-Frameworks
Serenas Tool-Implementierung ist von Framework-spezifischem Code entkoppelt und kann problemlos an jedes Agenten-Framework angepasst werden.
Anwendungsfälle
Serena kann für jede Programmieraufgabe verwendet werden, einschließlich:
- Code-Analyse
- Projektplanung
- Entwurf neuer Komponenten
- Refactoring bestehenden Codes
- Vollständig autonome Programmieraufgaben von der ersten Analyse über die Implementierung und das Testen bis hin zum Commit in das Versionskontrollsystem
Schnellstart
Grundlegende Installation
- Installieren Sie
uv
(Installationsanweisungen finden Sie in der offiziellen Dokumentation)
- Klonen Sie das Repository nach
/path/to/serena
- Kopieren Sie
serena_config.template.yml
nach serena_config.yml
und passen Sie die Einstellungen an
- Kopieren Sie
myproject.template.yml
nach myproject.yml
und passen Sie die projektspezifischen Einstellungen an
- Um Projekte dynamisch zu wechseln, fügen Sie alle Projektdateien zur
projects
-Liste in serena_config.yml
hinzu
Claude Desktop Integration
- Erstellen Sie eine Projektkonfigurationsdatei
myproject.yml
- Konfigurieren Sie den MCP-Server in Claude Desktop:
- Öffnen Sie File / Settings / Developer / MCP Servers / Edit Config
- Fügen Sie in
claude_desktop_config.json
Folgendes hinzu:
{
"mcpServers": {
"serena": {
"command": "/abs/path/to/uv",
"args": ["run", "--directory", "/abs/path/to/serena", "serena-mcp-server", "--project-file", "/abs/path/to/myproject.yml"]
}
}
}
- Speichern Sie die Konfiguration und starten Sie Claude Desktop neu
Goose CLI Verwendung
- Installieren Sie Goose
- Verwenden Sie
goose configure
, um eine Erweiterung hinzuzufügen
- Wählen Sie "Command-line Extension" und nennen Sie sie "Serena"
- Fügen Sie den Befehl hinzu:
/abs/path/to/uv run --directory /abs/path/to/serena serena-mcp-server /optional/abs/path/to/project.yml
- Deaktivieren Sie die Standarderweiterung
developer
Agno GUI Verwendung
- Laden Sie den agent-ui Code herunter:
npx create-agent-ui@latest
- Installieren Sie Serena:
uv pip install --all-extras -r pyproject.toml -e .
- Kopieren Sie
.env.example
nach .env
und füllen Sie die API-Schlüssel aus
- Starten Sie den Agno-Agenten:
uv run python scripts/agno_agent.py
- Starten Sie die UI:
cd agent-ui && pnpm dev
Tools und Konfiguration
Haupttool-Kategorien
- Semantische Code-Abruf-Tools: Finden von Symbolen, Referenzen, Code-Snippets
- Code-Bearbeitungs-Tools: Einfügen, Ersetzen, Löschen von Code
- Dateisystemoperationen: Lesen, Erstellen, Auflisten von Dateien und Verzeichnissen
- Shell-Ausführung: Ausführen von Shell-Befehlen
- Projektmanagement: Aktivieren von Projekten, Onboarding, Speicherverwaltung
Sicherheitsüberlegungen
- Die Verwendung aller Tools wird im Allgemeinen empfohlen, um maximalen Wert zu bieten
- Das Tool
execute_shell_command
ermöglicht die Ausführung von beliebigem Code und sollte mit Vorsicht verwendet werden
- Bestimmte Befehle können in der Projektkonfigurationsdatei deaktiviert werden
- Unterstützung für den Nur-Lese-Modus (
read_only: true
), der nur Analysen und Vorschläge zulässt, ohne die Codebasis zu ändern
Vergleich mit anderen programmierenden Agenten
Im Vergleich zu abonnementbasierten Agenten (Windsurf, Cursor, VSCode)
Vorteile:
- Keine Abonnementgebühren
- Keine Bindung an eine bestimmte IDE
- Keine Bindung an ein bestimmtes großes Sprachmodell oder eine API
- Verwendung von Language Servern für das symbolische Code-Verständnis
- Open Source und kleine Codebasis, leicht erweiterbar und modifizierbar
Nachteile:
- Keine direkte Integration in die IDE, die Überprüfung von neuem Code ist nicht so nahtlos wie bei in die IDE integrierten Tools
Im Vergleich zu API-basierten Agenten (Claude Code, Cline, Aider)
Vorteile:
- Kann als MCP-Server verwendet werden, ohne API-Schlüssel, wodurch API-Gebühren vermieden werden
- Dies ist eine einzigartige Funktion von Serena
Ähnlichkeiten:
- Können beide als API-basierte Agenten verwendet werden
- Beide sind leistungsstark, der Hauptnachteil sind potenziell hohe API-Gebühren
Im Vergleich zu anderen MCP-Servern
- Soweit bekannt, bieten andere programmierbezogene MCP-Server (wie DesktopCommander, codemcp) keine semantischen Code-Abruf- und Bearbeitungs-Tools
- Sie verlassen sich auf rein textbasierte Analysen
- Serenas Integration von Language Servern und MCP macht es einzigartig und leistungsstark bei der Bewältigung anspruchsvoller Programmieraufgaben in großen Codebasen
Onboarding und Speichersystem
Onboarding
- Standardmäßig führt Serena beim ersten Start für ein Projekt einen Onboarding-Prozess durch
- Ziel ist es, Serena mit dem Projekt vertraut zu machen und Erinnerungen für zukünftige Interaktionen zu speichern
Speichersystem
- Speicherdateien werden im Verzeichnis
.serena/memories/
des Projekts gespeichert
- Agenten können diese Dateien optional lesen
- Benutzer können die Speicherdateien nach Bedarf lesen und anpassen oder manuell neue Speicherdateien hinzufügen
- Das Speichersystem verbessert die Benutzererfahrung mit Serena erheblich
Verwendungsempfehlungen
Modellauswahl
- Die Nicht-Denk-Version von Claude 3.7 scheint besser zu funktionieren als die Denk-Version
- Gemini hat in ersten Experimenten gut abgeschnitten, unterstützt aber noch kein MCP
- Gemini ist relativ günstig und kann mit enormen Kontextlängen umgehen
Best Practices
- Versionskontrolle: Beginnen Sie Code-Generierungsaufgaben am besten mit einem sauberen Git-Status
- Windows-Konfiguration: Richten Sie unter Windows
git config --global core.autocrlf true
ein
- Code-Struktur: Verwenden Sie gut strukturierte, modulare und typisierte Code
- Tests und Protokolle: Fügen Sie detaillierte Protokollinformationen und aussagekräftige Tests hinzu
- Planung zuerst: Konzipieren und planen Sie bei komplexen Aufgaben zuerst
- Kontextmanagement: Erstellen Sie bei langen Aufgaben Zusammenfassungen und setzen Sie sie in neuen Gesprächen fort
Vollständige Tool-Liste
Im Folgenden finden Sie eine vollständige Liste aller Serena-Tools:
activate_project
: Aktiviert ein Projekt anhand des Namens
check_onboarding_performed
: Überprüft, ob das Onboarding durchgeführt wurde
create_text_file
: Erstellt/überschreibt eine Datei im Projektverzeichnis
delete_lines
: Löscht einen Zeilenbereich in einer Datei
delete_memory
: Löscht eine Erinnerung aus Serenas projektspezifischem Speicher
execute_shell_command
: Führt einen Shell-Befehl aus
find_referencing_code_snippets
: Findet Code-Snippets, die auf ein Symbol an einer bestimmten Position verweisen
find_referencing_symbols
: Findet Symbole, die auf ein Symbol an einer bestimmten Position verweisen
find_symbol
: Führt eine globale (oder lokale) Symbolsuche durch
get_active_project
: Ruft den Namen des aktuell aktiven Projekts ab
get_symbols_overview
: Ruft eine Übersicht über die Top-Level-Symbole in einer Datei oder einem Verzeichnis ab
insert_after_symbol
: Fügt Inhalt nach dem Ende einer Symboldefinition ein
insert_at_line
: Fügt Inhalt in eine bestimmte Zeile einer Datei ein
insert_before_symbol
: Fügt Inhalt vor dem Beginn einer Symboldefinition ein
list_dir
: Listet Dateien und Verzeichnisse in einem Verzeichnis auf
list_memories
: Listet die Erinnerungen im Speicher auf
onboarding
: Führt das Onboarding durch
prepare_for_new_conversation
: Bereitet sich auf ein neues Gespräch vor
read_file
: Liest eine Datei im Projektverzeichnis
read_memory
: Liest eine Erinnerung mit dem angegebenen Namen
replace_lines
: Ersetzt einen Zeilenbereich in einer Datei durch neuen Inhalt
replace_symbol_body
: Ersetzt die vollständige Definition eines Symbols
restart_language_server
: Startet den Language Server neu
search_for_pattern
: Sucht nach einem Muster im Projekt
summarize_changes
: Bietet eine Zusammenfassung der Änderungen an der Codebasis
think_about_collected_information
: Denk-Tool, um die Vollständigkeit der gesammelten Informationen zu berücksichtigen
think_about_task_adherence
: Denk-Tool, um festzustellen, ob der Agent noch auf dem richtigen Weg für die aktuelle Aufgabe ist
think_about_whether_you_are_done
: Denk-Tool, um festzustellen, ob eine Aufgabe wirklich abgeschlossen ist
write_memory
: Schreibt eine benannte Erinnerung zur späteren Bezugnahme in den Speicher
Zusammenfassung
Serena ist ein leistungsstarkes, vollständig Open-Source-Toolkit für programmierende Agenten, das durch semantisches Code-Verständnis und vielfältige Integrationsmöglichkeiten eine kostenlose und leistungsstarke KI-Programmierassistentenlösung für Entwickler bietet. Ob durch die Integration mit Claude Desktop über den MCP-Server oder durch die Verwendung verschiedener LLMs über das Agno-Framework, Serena kann die Programmierungseffizienz und Codequalität erheblich verbessern.