- :rocket: Serena ist ein leistungsstarkes Coding-Agent-Toolkit, das ein LLM in einen voll funktionsfähigen Agenten verwandeln kann, der direkt auf Ihrer Codebasis arbeitet.
- :wrench: Serena bietet wichtige Tools zum Abrufen und Bearbeiten semantischen Codes , die den Funktionen einer IDE ähneln, Codeeinheiten auf Symbolebene extrahieren und relationale Strukturen ausnutzen.
- :kostenlos: Serena ist kostenlos und Open Source und erweitert die Funktionen von LLMs, auf die Sie bereits kostenlos Zugriff haben.
Demonstration
Hier sehen Sie eine Demonstration, wie Serena mithilfe von Claude Desktop eine kleine Funktion (eine verbesserte Log-GUI) implementiert. Beachten Sie, wie Serenas Tools es Claude ermöglichen, die richtigen Symbole zu finden und zu bearbeiten.
https://github.com/user-attachments/assets/6eaa9aa1-610d-4723-a2d6-bf1e487ba753
LLM-Integration
Serena bietet die notwendigen Tools zum Codieren von Workflows, für die eigentliche Arbeit, also die Orchestrierung der Tool-Nutzung, ist jedoch ein LLM erforderlich.
Serena kann auf verschiedene Weise in ein LLM integriert werden:
- durch Verwendung des Model Context Protocol (MCP) .
Serena bietet einen MCP-Server, der integriert ist mit- Claude Desktop,
- IDEs wie VSCode, Cursor oder IntelliJ,
- Erweiterungen wie Cline oder Roo Code
- Goose (für ein schönes CLI-Erlebnis)
- und viele andere, darunter bald auch die ChatGPT-App
- durch die Verwendung von Agno – dem modellagnostischen Agenten-Framework .
Mit dem Agno-basierten Agenten von Serena können Sie praktisch jedes LLM in einen Codieragenten umwandeln, unabhängig davon, ob es von Google, OpenAI oder Anthropic (mit einem kostenpflichtigen API-Schlüssel) oder als kostenloses Modell von Ollama, Together oder Anyscale bereitgestellt wird. - indem Sie die Tools von Serena in ein Agenten-Framework Ihrer Wahl integrieren.
Die Tool-Implementierung von Serena ist vom Framework-spezifischen Code entkoppelt und kann daher problemlos an jedes Agent-Framework angepasst werden.
Unterstützung von Programmiersprachen und Funktionen zur semantischen Analyse
Serenas semantische Codeanalyse basiert auf Sprachservern, die das weit verbreitete Language Server Protocol (LSP) nutzen. Das LSP bietet vielseitige Funktionen zur Codeabfrage und -bearbeitung, die auf symbolischem Codeverständnis basieren. Dank dieser Funktionen erkennt und bearbeitet Serena Code wie ein erfahrener Entwickler, der die Möglichkeiten einer IDE nutzt. Serena findet effizient den richtigen Kontext und führt selbst in sehr großen und komplexen Projekten die richtigen Schritte aus! Es ist also nicht nur kostenlos und Open Source, sondern erzielt häufig auch bessere Ergebnisse als bestehende, kostenpflichtige Lösungen.
Sprachserver unterstützen eine Vielzahl von Programmiersprachen. Mit Serena bieten wir
- Direkte, sofort einsatzbereite Unterstützung für:
- Python
- TypeScript/Javascript
- PHP
- Go (Go und Gopls müssen zuerst installiert werden)
- Rost
- C/C++
- Java ( Hinweis : Der Startvorgang ist langsam, insbesondere der erste Startvorgang. Es scheint Probleme mit Java unter macOS zu geben.)
- indirekte Unterstützung (erfordert möglicherweise einige Codeänderungen/manuelle Installation) für:
- Ruby (ungetestet)
- C# (ungetestet)
- Kotlin (ungetestet)
- Dart (ungetestet)
Diese Sprachen werden von der Sprachserverbibliothek multilspy unterstützt, die Serena im Hintergrund nutzt. Wir haben jedoch nicht explizit getestet, ob die Unterstützung für diese Sprachen tatsächlich funktioniert.
Weitere Sprachen können grundsätzlich problemlos unterstützt werden, indem ein flacher Adapter für eine neue Sprachserverimplementierung bereitgestellt wird.
Inhaltsverzeichnis
- Wofür kann ich Serena verwenden?
- Kostenlose Coding Agents mit Serena
- Schnellstart
- Serenas Tools und Konfiguration
- Vergleich mit anderen Kodiermitteln
- Onboarding und Erinnerungen
- Modi und Kontexte
- Kombination mit anderen MCP-Servern
- Empfehlungen zur Verwendung von Serena
- Fehlerbehebung
- Danksagung
- Anpassen von Serena
- Vollständige Liste der Tools
Wofür kann ich Serena verwenden?
Sie können Serena für alle Programmieraufgaben nutzen – egal ob Analyse, Planung, Design neuer Komponenten oder Refactoring bestehender Komponenten. Da Serenas Tools es einem LLM ermöglichen, den kognitiven Wahrnehmungs-Handlungs-Kreislauf zu schließen, können Serena-basierte Agenten Programmieraufgaben von Anfang bis Ende autonom ausführen – von der ersten Analyse über die Implementierung und Tests bis hin zum Commit des Versionskontrollsystems.
Serena kann Code lesen, schreiben und ausführen sowie Protokolle und die Terminalausgabe lesen. Obwohl wir es nicht unbedingt empfehlen, ist „Vibe-Coding“ durchaus möglich. Wenn Sie das Gefühl haben möchten, „der Code existiert nicht mehr“, ist Serena für Vibe-Coding möglicherweise sogar besser geeignet als ein Agent in einer IDE (da Sie über eine separate GUI verfügen, die Sie wirklich vergessen lässt).
Kostenlose Coding Agents mit Serena
Sogar die kostenlose Version von Anthropics Claude unterstützt MCP-Server, sodass Sie Serena mit Claude kostenlos nutzen können. Vermutlich wird dies bald auch mit ChatGPT Desktop möglich sein, sobald die Unterstützung für MCP-Server hinzugefügt wird.
Über Agno haben Sie außerdem die Möglichkeit, Serena mit einem Freihantel-/Freihantelmodell zu verwenden.
Serena ist der Beitrag von Oraios AI zur Entwickler-Community.
Wir verwenden es selbst regelmäßig.
Wir hatten es satt, mehrere IDE-basierte Abonnements (wie Windsurf oder Cursor) bezahlen zu müssen, was uns zwang, zusätzlich zu den bereits bestehenden Chat-Abonnementkosten immer wieder Token zu kaufen. Die erheblichen API-Kosten für Tools wie Claude Code, Cline, Aider und andere API-basierte Tools sind ebenso unattraktiv. Deshalb haben wir Serena mit der Aussicht entwickelt, die meisten anderen Abonnements kündigen zu können.
Schnellstart
Serena kann auf verschiedene Weise verwendet werden. Nachfolgend finden Sie Anleitungen für ausgewählte Integrationen.
- Wenn Sie Claude lediglich in einen kostenlos nutzbaren Codieragenten verwandeln möchten, empfehlen wir die Verwendung von Serena über Claude Desktop.
- Wenn Sie Gemini oder ein anderes Modell verwenden möchten und eine GUI-Erfahrung wünschen, sollten Sie Agno verwenden. Unter macOS können Sie auch die GUI von goose verwenden.
- Wenn Sie Serena lieber über eine CLI verwenden möchten, können Sie goose verwenden. Auch hier ist fast jedes Modell möglich.
- Wenn Sie Serena in Ihre IDE integriert verwenden möchten, lesen Sie den Abschnitt zu anderen MCP-Clients .
Setup und Konfiguration
- Installieren Sie
uv
(Anweisungen hier ) - Klonen Sie das Repository nach
/path/to/serena
. - Kopieren Sie
serena_config.template.yml
nachserena_config.yml
und passen Sie die Einstellungen an. - Kopieren Sie
project.template.yml
inproject.yml
und passen Sie die projektspezifischen Einstellungen an (fügen Sie für jedes Projekt, an dem Serena arbeiten soll, eine solche Datei hinzu). Wir empfehlen, die Datei in das.serena
-Verzeichnis Ihres Projekts zu kopieren, z. B.: - Wenn Sie möchten, dass Serena dynamisch zwischen Projekten wechselt, fügen Sie die Liste aller im vorherigen Schritt erstellten Projektdateien zur
projects
inserena_config.yml
hinzu.
⚠️ Hinweis: Serena wird aktiv weiterentwickelt. Wir erweitern kontinuierlich Funktionen, verbessern die Stabilität und die Benutzererfahrung. Daher kann sich die Konfiguration erheblich ändern. Bei einer ungültigen Konfiguration kann der Start des MCP-Servers oder des Serena-basierten Agenten fehlschlagen (im ersten Fall überprüfen Sie die MCP-Protokolle). Überprüfen Sie beim Aktualisieren von Serena das Änderungsprotokoll und die Konfigurationsvorlagen und passen Sie Ihre Konfigurationen entsprechend an.
Fahren Sie nach der Ersteinrichtung mit einem der folgenden Abschnitte fort, je nachdem, wie Sie Serena verwenden möchten.
MCP-Server (Claude Desktop)
- Erstellen Sie eine Konfigurationsdatei für Ihr Projekt, beispielsweise
myproject.yml
, basierend auf der Vorlage in myproject.template.yml . - Konfigurieren Sie den MCP-Server in Ihrem Client.
Für Claude Desktop (verfügbar für Windows und macOS) gehen Sie zu Datei / Einstellungen / Entwickler / MCP-Server / Konfiguration bearbeiten. Dort öffnen Sie die JSON-Dateiclaude_desktop_config.json
. Fügen Sie Folgendes (mit angepassten Pfaden) hinzu, um Serena zu aktivieren::info: Die Übergabe der Projektdatei ist optional, wenn Sie in Ihrer Konfigurationenable_project_activation
festgelegt haben, da Sie mit dieser Einstellung Claude einfach anweisen können, das Projekt zu aktivieren, an dem Sie arbeiten möchten.- Für Claude Desktop (wie oben gezeigt) sind Serenas Standardkontext (
desktop-app
) und -modi (z. B.interactive
,editing
) in der Regel für den allgemeinen Gebrauch geeignet. Sie müssen sie in der Regel nicht explizit in denargs
angeben, es sei denn, Sie möchten die Standardeinstellungen überschreiben. - Für IDE-Integrationen (wie VSCode, Cursor, Cline usw., die durch Hinzufügen von Serena als MCP-Server konfiguriert werden) sollten Sie den
ide-assistant
Kontext explizit übergeben, indem Sie"--context", "ide-assistant"
zu denargs
in der Konfiguration Ihres MCP-Clients hinzufügen. Sie können bei Bedarf auch initiale Modi angeben (z. B."--mode", "editing"
). - Für bestimmte einmalige Aufgaben auf allen Clients (z. B. das Erstellen eines Berichts oder Plans in einer einzigen Interaktion) möchten Sie Serena möglicherweise anweisen (nach der Verbindung), mithilfe des Tools
switch_modes
in Modi wieplanning
undone-shot
zu wechseln, oder diese anfänglich über die Flags--mode
festlegen, wenn Sie den Serverstartbefehl direkt für solche Aufgaben konfigurieren.
Weitere Einzelheiten zu den verfügbaren Optionen und Anpassungsmöglichkeiten finden Sie im Abschnitt „Modi und Kontexte“ .
Wenn Sie unter Windows Pfade mit Backslashes verwenden (beachten Sie, dass Sie auch einfach Schrägstriche verwenden können), achten Sie darauf, diese korrekt mit Escapezeichen (
\\
) zu versehen. - Für Claude Desktop (wie oben gezeigt) sind Serenas Standardkontext (
Das war's! Speichern Sie die Konfiguration und starten Sie Claude Desktop neu.
Fehlerbehebung
Einige Client-/Betriebssystem-/Setup-Konfigurationen verursachen Probleme bei der Verwendung von Serena mit dem Standard- stdio
Protokoll, bei dem der MCP-Server von der Client-Anwendung gestartet wird. Sollten solche Probleme auftreten, können Sie Serena im sse
Modus starten, indem Sie beispielsweise Folgendes ausführen:
(Die Option --project
ist optional.) Konfigurieren Sie dann Ihren Client für die Verbindung mit http://localhost:9121
.
Hinweis: Unter Windows und macOS gibt es offizielle Claude Desktop-Anwendungen von Anthropic, für Linux gibt es eine Open-Source-Community-Version .
⚠️ Denken Sie daran, die Claude Desktop-Anwendung vollständig zu beenden, da Claude durch das Schließen lediglich in die Taskleiste minimiert wird – zumindest unter Windows.
Nach dem Neustart sollten Sie Serenas Tools in Ihrer Chat-Oberfläche sehen (beachten Sie das kleine Hammersymbol).
⚠️ Toolnamen: Claude Desktop (und die meisten MCP-Clients) lösen den Servernamen nicht auf. Daher sollten Sie nicht sagen: „Verwende Serenas Tools“. Stattdessen können Sie den LLM anweisen, symbolische Tools zu verwenden oder ein bestimmtes Tool zu verwenden, indem Sie auf dessen Namen verweisen. Darüber hinaus kann es bei der Verwendung mehrerer MCP-Server zu Toolnamenkollisionen kommen, die zu undefiniertem Verhalten führen. Beispielsweise ist Serena derzeit aufgrund von Toolnamenkollisionen nicht mit dem Filesystem-MCP-Server kompatibel.
ℹ️ Beachten Sie, dass MCP-Server, die stdio als Protokoll verwenden, in Bezug auf Client-Server-Architekturen etwas ungewöhnlich sind, da der Server notwendigerweise vom Client gestartet werden muss, damit die Kommunikation über den Standard-Ein-/Ausgabestream des Servers erfolgen kann. Mit anderen Worten: Sie müssen den Server nicht selbst starten. Die Client-Anwendung (z. B. Claude Desktop) übernimmt dies und muss daher mit einem Startbefehl konfiguriert werden.
Weitere Informationen zu MCP-Servern mit Claude Desktop finden Sie in der offiziellen Kurzanleitung .
Claude Code
Serena ist eine großartige Möglichkeit, Claude Code sowohl günstiger als auch leistungsfähiger zu machen! Wir sammeln dafür mehrere Beispiele und haben bisher sehr positives Feedback erhalten. Claude Code-Nutzer können Serena hinzufügen mit
Andere MCP-Clients – Cline, Roo-Code, Cursor, Windsurf usw.
Als MCP-Server kann Serena in jeden MCP-Client integriert werden. Die gleiche Konfiguration wie oben, ggf. mit kleinen clientspezifischen Anpassungen, sollte funktionieren. Die meisten gängigen Programmierassistenten (IDE-Erweiterungen oder VSCode-ähnliche IDEs) akzeptieren die Verbindung zu MCP-Servern. Es wird **empfohlen, den ide-assistant
-Kontext** für diese Integrationen zu verwenden, indem Sie den args
in der Konfiguration Ihres MCP-Clients "--context", "ide-assistant"
hinzufügen. Die Integration von Serena steigert generell deren Leistung, da sie Tools für symbolische Operationen bereitstellt.
In diesem Fall wird die Abrechnung der Nutzung weiterhin von Ihrem gewählten Client gesteuert (im Gegensatz zum Claude Desktop-Client). Möglicherweise möchten Sie Serena aber dennoch über diesen Ansatz nutzen, beispielsweise aus einem der folgenden Gründe:
- Sie verwenden bereits einen Codierassistenten (z. B. Cline oder Cursor) und möchten ihn lediglich leistungsfähiger machen.
- Sie verwenden Linux und möchten den von der Community erstellten Claude Desktop nicht verwenden
- Sie möchten Serena besser in Ihre IDE integrieren und haben kein Problem damit, dafür zu bezahlen.
Es gelten auch hier die gleichen Überlegungen wie bei der Verwendung von Serena für Claude Desktop (insbesondere Konflikte bei Toolnamen).
Bei Verwendung in einer IDE oder Erweiterung mit integrierten KI-Interaktionen für die Programmierung (und das trifft eigentlich auf alle zu) kann Serenas umfangreicher Werkzeugsatz zu unerwünschten Interaktionen mit den internen Tools des Clients führen, auf die Sie als Benutzer möglicherweise keinen Einfluss haben. Dies gilt insbesondere für die Bearbeitungswerkzeuge, die Sie zu diesem Zweck deaktivieren sollten. Da wir zunehmend Erfahrung mit Serena in den verschiedenen gängigen Clients sammeln, werden wir Best Practices für ein reibungsloses Nutzererlebnis sammeln und weiterentwickeln.
Gans
goose ist ein eigenständiger Programmieragent mit Integration für MCP-Server und bietet eine CLI (und eine GUI unter macOS). Die Verwendung von goose ist derzeit die einfachste Möglichkeit, Serena über eine CLI mit einem LLM Ihrer Wahl auszuführen.
Befolgen Sie zur Installation die Anweisungen hier .
Anschließend verwenden Sie goose configure
, um eine Erweiterung hinzuzufügen. Für Serena wählen Sie die Option Command-line Extension
, nennen Sie sie Serena
und fügen Sie folgenden Befehl hinzu:
Da Serena alle notwendigen Bearbeitungs- und Befehlsvorgänge ausführen kann, sollten Sie die developer
deaktivieren, die Goose standardmäßig aktiviert. Führen Sie dazu Folgendes aus:
Wählen Sie erneut die Option Toggle Extensions
und stellen Sie sicher, dass „Serena“ aktiviert ist, developer
jedoch nicht.
Das war's. Lesen Sie die Konfigurationsoptionen von Goose durch, um zu sehen, was Sie damit tun können (und das ist eine Menge, z. B. das Festlegen verschiedener Berechtigungsstufen für die Tool-Ausführung).
Goose scheint Python-Prozesse für MCP-Server nach Beendigung einer Sitzung nicht immer ordnungsgemäß zu beenden. Möglicherweise möchten Sie die Serena-GUI deaktivieren und/oder alle laufenden Python-Prozesse manuell bereinigen, nachdem Sie Ihre Arbeit mit Goose beendet haben.
Agno-Agent
Agno ist ein modellunabhängiges Agenten-Framework, mit dem Sie Serena in einen Agenten (unabhängig von der MCP-Technologie) mit einer großen Anzahl zugrunde liegender LLMs verwandeln können. Agno ist derzeit die einfachste Möglichkeit, Serena in einer Chat-GUI mit einem LLM Ihrer Wahl auszuführen (außer Sie verwenden einen Mac. Dann bevorzugen Sie möglicherweise Goose, das fast keine Einrichtung erfordert).
Obwohl Agno noch nicht vollständig stabil ist, haben wir uns für Agno entschieden, da es über eine eigene Open-Source-Benutzeroberfläche verfügt, die die direkte Nutzung des Agenten über eine Chat-Oberfläche ermöglicht. Mit Agno wird Serena zu einem Agenten (und ist somit kein MCP-Server mehr) und kann somit programmatisch genutzt werden (z. B. für Benchmarking oder innerhalb Ihrer Anwendung).
So funktioniert es (siehe auch Agnos Dokumentation ):
- Laden Sie den Agent-UI-Code mit npx herunteroder klonen Sie es alternativ manuell:
- Installieren Sie Serena mit den optionalen Anforderungen:
- Kopieren Sie
.env.example
nach.env
und geben Sie die API-Schlüssel für die Anbieter ein, die Sie verwenden möchten. - Starten Sie die Agno Agent App mitStandardmäßig verwendet das Skript Claude als Modell, Sie können jedoch jedes von Agno unterstützte Modell auswählen (also im Wesentlichen jedes vorhandene Modell).
- Starten Sie in einem neuen Terminal die Agno-Benutzeroberfläche mitVerbinden Sie die Benutzeroberfläche mit dem oben gestarteten Agenten und beginnen Sie mit dem Chat. Ihnen stehen dieselben Tools wie in der MCP-Serverversion zur Verfügung.
Hier ist eine kurze Demo von Serena, die eine kleine Analyseaufgabe mit dem neuesten Gemini-Modell durchführt:
https://github.com/user-attachments/assets/ccfcb968-277d-4ca9-af7f-b84578858c62
⚠️ WICHTIG: Im Gegensatz zum MCP-Server-Ansatz benötigt die Tool-Ausführung in der Agno-Benutzeroberfläche keine Benutzerberechtigung. Das Shell-Tool ist besonders kritisch, da es beliebigen Code ausführen kann. Obwohl wir in unseren Tests mit Claude nie auf Probleme gestoßen sind, ist es möglicherweise nicht ganz sicher, dies zuzulassen. Sie können bestimmte Tools für Ihr Setup in der Konfigurationsdatei ( .yml
) Ihres Serena-Projekts deaktivieren.
Andere Agenten-Frameworks
Der Agno-Agent ist aufgrund der Agno-Benutzeroberfläche besonders schön, aber Serena lässt sich problemlos in jedes Agenten-Framework (wie pydantic-ai , langgraph oder andere) integrieren.
Sie müssen lediglich einen Adapter der Serena-Tools zu den Tools im Framework Ihrer Wahl schreiben, so wie wir es für Agno im SerenaAgnoToolkit getan haben.
Serenas Tools und Konfiguration
Serena kombiniert Werkzeuge zur semantischen Codesuche mit Bearbeitungsfunktionen und Shell-Ausführung. Das Verhalten von Serena lässt sich über Modi und Kontexte weiter anpassen. Die vollständige Liste der Werkzeuge finden Sie unten .
Der Einsatz aller Tools ist grundsätzlich zu empfehlen, da Serena dadurch den größten Nutzen bringt: Nur durch die Ausführung von Shell-Befehlen (insbesondere Tests) kann Serena Fehler selbstständig erkennen und beheben.
Beachten Sie jedoch, dass das Tool execute_shell_command
die Ausführung beliebigen Codes ermöglicht. Bei der Verwendung von Serena als MCP-Server fragen Clients den Benutzer in der Regel vor der Ausführung eines Tools um Erlaubnis. Solange der Benutzer die Ausführungsparameter vorher überprüft, sollte dies kein Problem darstellen. Sollten Sie jedoch Bedenken haben, können Sie bestimmte Befehle in der YML-Konfigurationsdatei Ihres Projekts deaktivieren. Wenn Sie Serena ausschließlich zur Codeanalyse und Implementierungsvorschlägen verwenden möchten, ohne die Codebasis zu ändern, können Sie den schreibgeschützten Modus aktivieren, indem Sie in Ihrer Projektkonfigurationsdatei read_only: true
festlegen. Dadurch werden automatisch alle Bearbeitungstools deaktiviert und Änderungen an Ihrer Codebasis verhindert, während alle Analyse- und Explorationsfunktionen weiterhin verfügbar bleiben.
Denken Sie grundsätzlich daran, Ihre Arbeit zu sichern und ein Versionskontrollsystem zu verwenden, um den Verlust Ihrer Arbeit zu vermeiden.
Vergleich mit anderen Kodiermitteln
Unseres Wissens ist Serena der erste voll funktionsfähige Codieragent, bei dem die gesamte Funktionalität über einen MCP-Server verfügbar ist und daher keine API-Schlüssel oder Abonnements erforderlich sind.
Abonnementbasierte Codieragenten
Die bekanntesten abonnementbasierten Coding-Agenten sind Teil von IDEs wie Windsurf, Cursor und VSCode. Die Funktionalität von Serena ähnelt der von Cursors Agent, Windsurfs Cascade oder dem kommenden Agentenmodus von VSCode.
Serena bietet den Vorteil, dass kein Abonnement erforderlich ist. Ein möglicher Nachteil ist, dass es nicht direkt in eine IDE integriert ist, sodass die Überprüfung von neu geschriebenem Code nicht so nahtlos erfolgt.
Weitere technische Unterschiede sind:
- Serena ist nicht an eine bestimmte IDE gebunden. Der MCP-Server von Serena kann mit jedem MCP-Client (einschließlich einiger IDEs) verwendet werden, und der Agno-basierte Agent bietet zusätzliche Möglichkeiten zur Anwendung seiner Funktionalität.
- Serena ist nicht an ein bestimmtes großes Sprachmodell oder eine bestimmte API gebunden.
- Serena navigiert und bearbeitet Code mithilfe eines Sprachservers und verfügt daher über ein symbolisches Verständnis des Codes. IDE-basierte Tools verwenden häufig einen RAG-basierten oder rein textbasierten Ansatz, der insbesondere bei großen Codebasen oft weniger leistungsfähig ist.
- Serena ist Open Source und verfügt über eine kleine Codebasis, sodass es leicht erweitert und geändert werden kann.
API-basierte Codieragenten
Eine Alternative zu abonnementbasierten Agenten sind API-basierte Agenten wie Claude Code, Cline, Aider, Roo Code und andere, bei denen die Nutzungskosten direkt den API-Kosten des zugrunde liegenden LLM entsprechen. Einige von ihnen (wie Cline) können sogar als Erweiterung in IDEs eingebunden werden. Sie sind oft sehr leistungsstark, ihr größter Nachteil sind die (möglicherweise sehr hohen) API-Kosten.
Serena selbst kann als API-basierter Agent verwendet werden (siehe Abschnitt zu Agno oben). Wir haben noch kein CLI-Tool oder eine dedizierte IDE-Erweiterung für Serena entwickelt (und letztere besteht wahrscheinlich auch nicht, da Serena bereits mit jeder IDE verwendet werden kann, die MCP-Server unterstützt). Sollte Bedarf an Serena als CLI-Tool wie Claude Code bestehen, werden wir die Entwicklung eines solchen Tools in Erwägung ziehen.
Der Hauptunterschied zwischen Serena und anderen API-basierten Agenten besteht darin, dass Serena auch als MCP-Server verwendet werden kann. Dadurch ist kein API-Schlüssel erforderlich und die API-Kosten werden umgangen. Dies ist ein einzigartiges Merkmal von Serena.
Andere MCP-basierte Kodiermittel
Es gibt weitere MCP-Server für die Programmierung, wie DesktopCommander und codemcp . Unseres Wissens nach bietet jedoch keiner von ihnen Werkzeuge zur semantischen Code-Abfrage und -Bearbeitung; sie basieren ausschließlich auf textbasierter Analyse. Die Integration von Sprachservern und MCP macht Serena einzigartig und so leistungsstark für anspruchsvolle Programmieraufgaben, insbesondere bei größeren Codebasen.
Onboarding und Erinnerungen
Standardmäßig führt Serena beim ersten Start für ein Projekt einen Onboarding-Prozess durch. Ziel dieses Prozesses ist es, Serena mit dem Projekt vertraut zu machen und Erinnerungen zu sammeln, auf die sie bei zukünftigen Interaktionen zurückgreifen kann.
Erinnerungen sind Dateien, die im Projektverzeichnis unter .serena/memories/
gespeichert sind und vom Agenten gelesen werden können. Sie können sie nach Bedarf lesen und anpassen; Sie können auch manuell neue hinzufügen. Jede Datei im Verzeichnis .serena/memories/
ist eine Erinnerungsdatei.
Wir haben festgestellt, dass die Erinnerungen das Benutzererlebnis mit Serena deutlich verbessern. Serena wird automatisch angewiesen, bei Bedarf neue Erinnerungen zu erstellen.
Modi und Kontexte
Das Verhalten und die Tools von Serena lassen sich mithilfe von Kontexten und Modi anpassen. Diese ermöglichen ein hohes Maß an Anpassung an Ihren Arbeitsablauf und die Umgebung, in der Serena eingesetzt wird.
Kontexte
Ein Kontext definiert die allgemeine Umgebung, in der Serena ausgeführt wird. Er beeinflusst die anfängliche Systemeingabeaufforderung und die verfügbaren Tools. Ein Kontext wird beim Start von Serena festgelegt (z. B. über CLI-Optionen für einen MCP-Server oder im Agentenskript) und kann während einer aktiven Sitzung nicht geändert werden.
Serena wird mit vordefinierten Kontexten geliefert:
desktop-app
: Speziell für die Verwendung mit Desktop-Anwendungen wie Claude Desktop. Dies ist häufig die Standardeinstellung.agent
: Entwickelt für Szenarien, in denen Serena als autonomerer Agent fungiert, beispielsweise bei Verwendung mit Agno.ide-assistant
: Optimiert für die Integration in IDEs wie VSCode, Cursor oder Cline, mit Schwerpunkt auf Codierungsunterstützung im Editor.
Sie sollten den Kontext auswählen, der am besten zu Ihrer Integration passt.
Modi
Modi verfeinern Serenas Verhalten für bestimmte Aufgabentypen oder Interaktionsstile. Mehrere Modi können gleichzeitig aktiv sein, sodass Sie ihre Effekte kombinieren können. Modi beeinflussen die Systemeingabeaufforderung und können auch die verfügbaren Werkzeuge ändern, indem sie bestimmte ausschließen.
Beispiele für integrierte Modi sind:
planning
: Serena konzentriert sich auf Planungs- und Analyseaufgaben.editing
: Optimiert Serena für Aufgaben zur direkten Codeänderung.interactive
: Geeignet für einen gesprächsorientierten Interaktionsstil mit Hin- und Her-Gesprächen.one-shot
: Konfiguriert Serena für Aufgaben, die in einer einzigen Antwort abgeschlossen werden sollten. Wird häufig beiplanning
zum Erstellen von Berichten oder ersten Plänen verwendet.no-onboarding
: Überspringt den anfänglichen Onboarding-Prozess, wenn er für eine bestimmte Sitzung nicht erforderlich ist.onboarding
: (Normalerweise automatisch ausgelöst) Konzentriert sich auf den Onboarding-Prozess des Projekts.
Modi können beim Start festgelegt werden (ähnlich wie Kontexte), aber auch dynamisch während einer Sitzung gewechselt werden. Sie können den LLM anweisen, mit dem Tool switch_modes
einen anderen Modussatz zu aktivieren (z. B. „Wechsel in den Planungs- und Einmalmodus“).
:warning: Moduskompatibilität : Sie können zwar Modi kombinieren, einige sind jedoch möglicherweise semantisch inkompatibel (z. B. „ interactive
und one-shot
). Serena verhindert derzeit keine inkompatiblen Kombinationen; es liegt in der Verantwortung des Benutzers, sinnvolle Moduskonfigurationen zu wählen.
Anpassen von Kontexten und Modi
Sie können Ihre eigenen Kontexte und Modi erstellen, um Serena genau auf Ihre Bedürfnisse zuzuschneiden:
- Hinzufügen zu Ihrem Serena-Klon : Erstellen Sie neue
.yml
Dateien in den Verzeichnissenconfig/contexts/
oderconfig/modes/
in Ihrem lokalen Serena-Repository. Diese benutzerdefinierten Kontexte/Modi werden automatisch registriert und stehen über ihren Dateinamen (ohne die Erweiterung.yml
) zur Verfügung. Sie werden auch in Listen mit verfügbaren Kontexten/Modi angezeigt. - Verwenden externer YAML-Dateien : Beim Starten von Serena können Sie einen absoluten Pfad zu einer benutzerdefinierten
.yml
Datei für einen Kontext oder Modus angeben.
Eine Kontext- oder Modus-YAML-Datei definiert normalerweise:
name
: (Optional, wenn ein Dateiname verwendet wird) Der Name des Kontexts/Modus.prompt
: Eine Zeichenfolge, die in die Systemaufforderung von Serena integriert wird.description
: (Optional) Eine kurze Beschreibung.excluded_tools
: Eine Liste von Toolnamen (Zeichenfolgen), die deaktiviert werden sollen, wenn dieser Kontext/Modus aktiv ist.
Diese Anpassung ermöglicht eine umfassende Integration und Anpassung von Serena an spezifische Projektanforderungen oder persönliche Vorlieben.
Kombination mit anderen MCP-Servern
Wenn Sie Serena über einen MCP-Client verwenden, können Sie es zusammen mit anderen MCP-Servern nutzen. Achten Sie jedoch auf mögliche Namenskonflikte! Siehe dazu oben.
Derzeit besteht eine Kollision mit dem beliebten Filesystem-MCP-Server. Da Serena ebenfalls Dateisystemoperationen bereitstellt, ist es wahrscheinlich nicht erforderlich, beide Server gleichzeitig zu aktivieren.
Empfehlungen zur Verwendung von Serena
Wir werden weiterhin Best Practices sammeln, während die Serena-Community wächst. Nachfolgend finden Sie einen kurzen Überblick über die Erkenntnisse, die wir bei der internen Nutzung von Serena gewonnen haben.
Die meisten dieser Empfehlungen gelten für alle Codiermittel, einschließlich aller oben genannten Mittel.
Welches Modell soll ich wählen?
Zu unserer Überraschung schien Serena mit der nicht-denkenden Version von Claude 3.7 im Vergleich zur denkenden Version am besten zu funktionieren (wir haben noch keine umfassenden Vergleiche mit Gemini durchgeführt). Die denkende Version brauchte länger, hatte mehr Schwierigkeiten bei der Verwendung der Tools und schrieb oft einfach Code, ohne genügend Kontext zu lesen.
In unseren ersten Experimenten schien Gemini sehr gut zu funktionieren. Leider unterstützt Gemini das MCP (noch?) nicht, sodass die Nutzung nur über einen API-Schlüssel möglich ist. Positiv ist, dass Gemini vergleichsweise günstig ist und große Kontextlängen verarbeiten kann.
Onboarding
Bei der ersten Interaktion wird Serena angewiesen, ein Onboarding durchzuführen und die ersten Speicherdateien zu schreiben. Manchmal (je nach LLM) werden die Dateien nicht auf die Festplatte geschrieben. Bitten Sie in diesem Fall Serena einfach, die Speicherdateien zu schreiben.
In dieser Phase liest und schreibt Serena in der Regel viel Text und füllt so den Kontext. Wir empfehlen Ihnen, nach Abschluss des Onboardings zu einer anderen Konversation zu wechseln, um die Token nicht zu verlieren. Das Onboarding wird nur einmal durchgeführt, sofern Sie es nicht explizit auslösen.
Nach dem Onboarding empfehlen wir Ihnen, einen kurzen Blick auf die Erinnerungen zu werfen und diese gegebenenfalls zu bearbeiten oder weitere hinzuzufügen.
Vor dem Bearbeiten des Codes
Am besten starten Sie eine Codegenerierungsaufgabe aus einem sauberen Git-Status heraus. Dies erleichtert Ihnen nicht nur die Überprüfung der Änderungen, sondern das Modell selbst kann durch einen Aufruf von git diff
erkennen, was es geändert hat, und sich so selbst korrigieren oder bei Bedarf in einer Folgekonversation weiterarbeiten.
:warning: Wichtig : Da Serena Dateien mit systemeigenen Zeilenenden schreibt und möglicherweise den Git-Diff berücksichtigen möchte, ist es wichtig git config core.autocrlf
unter Windows auf true
zu setzen. Wenn git config core.autocrlf
unter Windows auf false
gesetzt ist, können große Unterschiede nur aufgrund von Zeilenenden auftreten. Es ist generell ratsam, diese Git-Einstellung unter Windows zu aktivieren:
Mögliche Probleme bei der Codebearbeitung
Unserer Erfahrung nach sind LLMs sehr schlecht beim Zählen, d. h. sie haben Probleme, Codeblöcke an der richtigen Stelle einzufügen. Die meisten Bearbeitungsvorgänge können auf symbolischer Ebene durchgeführt werden, wodurch dieses Problem überwunden wird. Manchmal sind Einfügungen auf Zeilenebene jedoch sinnvoll.
Serena wird angewiesen, die Zeilennummern und alle Codeblöcke, die sie bearbeiten wird, doppelt zu prüfen. Sie finden es aber möglicherweise hilfreich, ihr explizit mitzuteilen, wie der Code bearbeitet werden soll, wenn Sie auf Probleme stoßen.
Der Kontext fehlt
Bei langen und komplizierten Aufgaben oder Aufgaben, bei denen Serena bereits umfangreiche Inhalte gelesen hat, stoßen Sie möglicherweise an die Grenzen der Kontext-Token. In diesem Fall empfiehlt es sich oft, in einer neuen Konversation fortzufahren. Serena verfügt über ein spezielles Tool, das eine Zusammenfassung des aktuellen Fortschritts und aller relevanten Informationen für die Fortsetzung erstellt. Sie können diese Zusammenfassung anfordern und in einen Speicher schreiben. Anschließend können Sie Serena in einer neuen Konversation einfach bitten, den Speicher zu lesen und mit der Aufgabe fortzufahren. Unserer Erfahrung nach hat dies sehr gut funktioniert. Ein Vorteil ist, dass Serena in einer einzelnen Sitzung keine Zusammenfassung benötigt und sich daher in der Regel nicht verirrt (im Gegensatz zu einigen anderen Agenten, die im Hintergrund zusammenfassen). Außerdem wird sie angewiesen, gelegentlich zu überprüfen, ob sie auf dem richtigen Weg ist.
Serena wird außerdem angewiesen, sparsam mit dem Kontext umzugehen (z. B. Codesymbole nicht unnötig zu lesen). Wir haben jedoch festgestellt, dass Claude darin nicht immer besonders sparsam ist (Gemini schien darin besser zu sein). Sie können ihm explizit anweisen, die Codesymbole nicht zu lesen, wenn Sie wissen, dass dies nicht erforderlich ist.
Steuerung der Tool-Ausführung
Claude Desktop fragt Sie vor der Ausführung eines Tools. Bei den meisten Tools können Sie einfach auf „Für diesen Chat zulassen“ klicken, insbesondere wenn alle Ihre Dateien unter Versionskontrolle stehen. Eine Ausnahme bildet das Tool execute_shell_command
“ – hier sollten Sie jeden Aufruf einzeln prüfen. Wir empfehlen, jeden Aufruf dieses Befehls zu überprüfen und ihn nicht für den gesamten Chat zu aktivieren.
Strukturieren Ihrer Codebasis
Serena nutzt die Codestruktur zum Suchen, Lesen und Bearbeiten von Code. Das bedeutet, dass sie mit gut strukturiertem Code gut funktioniert, bei völlig unstrukturiertem Code (wie einer God-Klasse mit umfangreichen, nicht modularen Funktionen) jedoch möglicherweise scheitert. Typannotationen sind hier ebenfalls sehr hilfreich. Je besser Ihr Code, desto besser funktioniert Serena. Wir empfehlen Ihnen daher grundsätzlich, gut strukturierten, modularen und typisierten Code zu schreiben – das hilft nicht nur Ihnen, sondern auch Ihrer KI ;).
Protokollieren, Lintisieren und Testen
Serena kann nicht debuggen (unseres Wissens nach kann dies derzeit kein Programmierassistent). Das bedeutet, dass Serena zur Verbesserung der Ergebnisse innerhalb einer Agentenschleife Informationen durch Tests, Skriptausführungen, Linting usw. sammeln muss. Es ist oft sehr hilfreich, viele Protokollmeldungen mit expliziten Informationen einzubinden und aussagekräftige Tests durchzuführen. Insbesondere letztere helfen dem Agenten oft bei der Selbstkorrektur.
Wir empfehlen grundsätzlich, eine Bearbeitungsaufgabe in einem Zustand zu starten, in dem alle Lint-Prüfungen und Tests erfolgreich sind.
Allgemeine Hinweise
Wir haben festgestellt, dass es oft sinnvoll ist, vor der eigentlichen Umsetzung etwas Zeit in die Konzeption und Planung einer Aufgabe zu investieren, insbesondere bei anspruchsvollen Aufgaben. Dies trägt sowohl zu besseren Ergebnissen bei als auch zu einem besseren Gefühl der Kontrolle und des Überblicks. Sie können in einer Sitzung einen detaillierten Plan erstellen, in dem Serena einen Großteil Ihres Codes liest, um den Kontext aufzubauen, und dann in einer weiteren Sitzung (ggf. nach dem Erstellen geeigneter Erinnerungen) mit der Umsetzung fortfahren.
Fehlerbehebung
Die Unterstützung für MCP-Server in Claude Desktop und den verschiedenen MCP-Server-SDKs sind relativ neue Entwicklungen und können Instabilitäten aufweisen.
Die Arbeitskonfiguration eines MCP-Servers kann von Plattform zu Plattform und von Client zu Client variieren. Wir empfehlen, immer absolute Pfade zu verwenden, da relative Pfade Fehlerquellen sein können. Der Sprachserver läuft in einem separaten Unterprozess und wird mit asyncio aufgerufen – manchmal kann ein Client ihn zum Absturz bringen. Wenn Sie das Protokollfenster von Serena aktiviert haben und es verschwindet, wissen Sie, was passiert ist.
Einige Clients (wie Goose) beenden MCP-Server möglicherweise nicht ordnungsgemäß. Achten Sie auf hängende Python-Prozesse und beenden Sie diese bei Bedarf manuell.
Serena-Protokollierung
Zur Unterstützung der Fehlerbehebung haben wir ein kleines GUI-Dienstprogramm zur Protokollierung entwickelt. Für die meisten Clients empfehlen wir, es bei Problemen über die Projektkonfiguration ( project.yml
) zu aktivieren. Viele Clients erstellen auch MCP-Protokolle, die bei der Problemidentifizierung helfen können.
Die Protokollierungs-GUI funktioniert möglicherweise nicht für alle Clients und Systeme. Derzeit funktioniert sie nicht unter macOS oder in VSCode-Erweiterungen wie Cline.
Danksagung
Wir haben Serena auf der Grundlage mehrerer bestehender Open-Source-Technologien entwickelt. Die wichtigsten davon sind:
- multilspy . Ein wunderschön gestalteter Wrapper um Sprachserver, die dem LSP folgen. Er ließ sich nicht einfach mit der von Serena benötigten symbolischen Logik erweitern. Anstatt ihn als Abhängigkeit einzubinden, kopierten wir den Quellcode und passten ihn an unsere Bedürfnisse an.
- Python MCP SDK
- Agno und die zugehörige Agent-Benutzeroberfläche , die wir verwenden, damit Serena mit jedem Modell arbeiten kann, das nicht MCP unterstützt.
- Alle Sprachserver, die wir über Multilspy verwenden.
Ohne diese Projekte wäre Serena nicht möglich gewesen (oder der Bau wäre wesentlich schwieriger gewesen).
Anpassen von Serena
Es ist ganz einfach, Serenas KI-Funktionalität mit Ihren eigenen Ideen zu erweitern. Implementieren Sie einfach ein neues Tool, indem Sie eine Unterklasse von serena.agent.Tool
erstellen und die apply
Methode implementieren (nicht Teil der Schnittstelle, siehe Kommentar im Tool
). Standardmäßig hat der SerenaAgent
sofort Zugriff darauf.
Es ist auch relativ einfach, Unterstützung für eine neue Sprache hinzuzufügen. Wir sind gespannt, was die Community sich einfallen lässt! Details zur Mitarbeit finden Sie hier .
Vollständige Liste der Tools
Hier ist die vollständige Liste der Tools von Serena mit einer kurzen Beschreibung (Ausgabe von uv run serena-list-tools
):
activate_project
: Aktiviert ein Projekt anhand des Namens.check_onboarding_performed
: Überprüft, ob das Projekt-Onboarding bereits durchgeführt wurde.create_text_file
: Erstellt/überschreibt eine Datei im Projektverzeichnis.delete_lines
: Löscht einen Zeilenbereich innerhalb einer Datei.delete_memory
: Löscht einen Speicher aus Serenas projektspezifischem Speicher.execute_shell_command
: Führt einen Shell-Befehl aus.find_referencing_code_snippets
: Sucht Codefragmente, in denen auf das Symbol an der angegebenen Position verwiesen wird.find_referencing_symbols
: Sucht Symbole, die auf das Symbol an der angegebenen Position verweisen (optional nach Typ gefiltert).find_symbol
: Führt eine globale (oder lokale) Suche nach Symbolen mit/enthaltend einen bestimmten Namen/Teilstring (optional nach Typ gefiltert) durch.get_active_project
: Ruft den Namen des aktuell aktiven Projekts ab (sofern vorhanden) und listet vorhandene Projekte aufget_current_config
: Druckt die aktuelle Konfiguration des Agenten, einschließlich der aktiven Modi, Tools und des Kontexts.get_symbols_overview
: Ruft eine Übersicht über die in einer bestimmten Datei oder einem bestimmten Verzeichnis definierten Symbole der obersten Ebene ab.initial_instructions
: Ruft die anfänglichen Anweisungen für das aktuelle Projekt ab. Sollte nur in Umgebungen verwendet werden, in denen die Systemabfrage nicht festgelegt werden kann, z. B. in Clients, über die Sie keine Kontrolle haben, wie z. B. Claude Desktop.insert_after_symbol
: Fügt Inhalt nach dem Ende der Definition eines bestimmten Symbols ein.insert_at_line
: Fügt Inhalt an einer bestimmten Zeile in eine Datei ein.insert_before_symbol
: Fügt Inhalt vor dem Beginn der Definition eines bestimmten Symbols ein.list_dir
: Listet Dateien und Verzeichnisse im angegebenen Verzeichnis auf (optional mit Rekursion).list_memories
: Listet Erinnerungen im projektspezifischen Speicher von Serena auf.onboarding
: Führt das Onboarding durch (Identifizierung der Projektstruktur und der wesentlichen Aufgaben, z. B. zum Testen oder Erstellen).prepare_for_new_conversation
: Bietet Anweisungen zur Vorbereitung einer neuen Konversation (um mit dem erforderlichen Kontext fortzufahren).read_file
: Liest eine Datei im Projektverzeichnis.read_memory
: Liest den Speicher mit dem angegebenen Namen aus Serenas projektspezifischem Speicher.replace_lines
: Ersetzt einen Zeilenbereich innerhalb einer Datei durch neuen Inhalt.replace_symbol_body
: Ersetzt die vollständige Definition eines Symbols.restart_language_server
: Startet den Sprachserver neu. Dies kann erforderlich sein, wenn Änderungen nicht über Serena erfolgen.search_for_pattern
: Führt eine Suche nach einem Muster im Projekt durch.summarize_changes
: Bietet Anweisungen zum Zusammenfassen der an der Codebasis vorgenommenen Änderungen.switch_modes
: Aktiviert Modi, indem eine Liste ihrer Namen bereitgestellt wirdthink_about_collected_information
: Denkwerkzeug zum Nachdenken über die Vollständigkeit der gesammelten Informationen.think_about_task_adherence
: Denkwerkzeug zum Bestimmen, ob der Agent bei der aktuellen Aufgabe noch auf Kurs ist.think_about_whether_you_are_done
: Denkwerkzeug zum Bestimmen, ob die Aufgabe wirklich erledigt ist.write_memory
: Schreibt einen benannten Speicher (zur späteren Bezugnahme) in Serenas projektspezifischen Speicher.
This server cannot be installed
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Ein voll funktionsfähiger Programmieragent, der symbolische Operationen (aktiviert durch Sprachserver) verwendet und auch in großen Codebasen gut funktioniert. Im Wesentlichen eine kostenlose Alternative zu Cursor- und Windsurf-Agenten, Cline, Roo Code und anderen.
- LLM-Integration
- Unterstützung von Programmiersprachen und Funktionen zur semantischen Analyse
- Inhaltsverzeichnis
- Wofür kann ich Serena verwenden?
- Kostenlose Coding Agents mit Serena
- Schnellstart
- Serenas Tools und Konfiguration
- Vergleich mit anderen Kodiermitteln
- Onboarding und Erinnerungen
- Modi und Kontexte
- Kombination mit anderen MCP-Servern
- Empfehlungen zur Verwendung von Serena
- Fehlerbehebung
- Danksagung
- Anpassen von Serena
- Vollständige Liste der Tools
Related MCP Servers
- -securityFlicense-qualityServer that enhances the capabilities of the Cline coding agent. It provides intelligent code suggestions, reduces hallucinations, and documents the knowledge base by leveraging your project's documentation and detecting the technologies used in your codebase.Last updated -10JavaScript
- -securityAlicense-qualityThe sessionless code interpreter. Securely run AI-generated code in stateful sandboxes that run forever.Last updated -65176RustMIT License
- -securityAlicense-qualityA Cursor-compatible toolkit that provides intelligent coding assistance through custom AI tools for code architecture planning, screenshot analysis, code review, and file reading capabilities.Last updated -1,1332TypeScriptMIT License
Apifox MCP Serverofficial
-securityFlicense-qualityA server that connects AI coding assistants like Cursor and Cline to Apifox API definitions, allowing developers to implement API interfaces through natural language commands.Last updated -8321