Home
Login

Serena ist ein leistungsstarkes Toolkit für Codierungsagenten, das große Sprachmodelle (LLM) in einen voll funktionsfähigen Agenten verwandelt, der direkt in Ihrer Codebasis arbeitet.

MITPython 1.2koraios Last Updated: 2025-06-13

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

  1. Installieren Sie uv (Installationsanweisungen finden Sie in der offiziellen Dokumentation)
  2. Klonen Sie das Repository nach /path/to/serena
  3. Kopieren Sie serena_config.template.yml nach serena_config.yml und passen Sie die Einstellungen an
  4. Kopieren Sie myproject.template.yml nach myproject.yml und passen Sie die projektspezifischen Einstellungen an
  5. Um Projekte dynamisch zu wechseln, fügen Sie alle Projektdateien zur projects-Liste in serena_config.yml hinzu

Claude Desktop Integration

  1. Erstellen Sie eine Projektkonfigurationsdatei myproject.yml
  2. 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"]
        }
      }
    }
    
  3. Speichern Sie die Konfiguration und starten Sie Claude Desktop neu

Goose CLI Verwendung

  1. Installieren Sie Goose
  2. Verwenden Sie goose configure, um eine Erweiterung hinzuzufügen
  3. Wählen Sie "Command-line Extension" und nennen Sie sie "Serena"
  4. 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
  5. Deaktivieren Sie die Standarderweiterung developer

Agno GUI Verwendung

  1. Laden Sie den agent-ui Code herunter: npx create-agent-ui@latest
  2. Installieren Sie Serena: uv pip install --all-extras -r pyproject.toml -e .
  3. Kopieren Sie .env.example nach .env und füllen Sie die API-Schlüssel aus
  4. Starten Sie den Agno-Agenten: uv run python scripts/agno_agent.py
  5. 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

  1. Versionskontrolle: Beginnen Sie Code-Generierungsaufgaben am besten mit einem sauberen Git-Status
  2. Windows-Konfiguration: Richten Sie unter Windows git config --global core.autocrlf true ein
  3. Code-Struktur: Verwenden Sie gut strukturierte, modulare und typisierte Code
  4. Tests und Protokolle: Fügen Sie detaillierte Protokollinformationen und aussagekräftige Tests hinzu
  5. Planung zuerst: Konzipieren und planen Sie bei komplexen Aufgaben zuerst
  6. 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.