Vor einigen Monaten begann ich mit der Entwicklung von Nimble Agent, einem Python-basierten KI-Agenten auf Basis von LangChain. Das Ziel? Intelligentere Prompts, kostengünstigere Modelle und klare Akzeptanzkriterien, um zu vermeiden, dass der Agent einfach nur "fertig" sagt, ohne wirklich fertig zu sein.
Bei der Arbeit mit einem KI-Agenten, der Code generiert, wird eines schnell klar: Code darf den Entwickler nicht anlügen.
Doch genau das passierte mir mit den gängigen Typprüfern. Pylance und Pyright – die Standardlösungen – enttäuschten mich gründlich. Statt strenger Typisierung herrschte eine Kultur des "Hauptsache es läuft".
Warum Pylance und Pyright nicht reichten
Python bietet zwar ein solides Typsystem, doch die gängigen Tools setzen es nur halbherzig durch. Pylance arbeitet mit gradueller Typisierung: Ungetypter Code wird einfach ignoriert. Eine Funktion ohne Typannotationen? Kein Problem. Eine implizite Any-Typisierung, die eine ganze Aufrufkette verschluckt? Auch kein Problem. Der Nutzer muss sich aktiv für strikte Überprüfungen entscheiden – Regel für Regel, Einstellung für Einstellung. Meine Anmerkungen waren keine verbindlichen Verträge, sondern Kommentare, die zufällig kompilierten. Für ein Tool, dessen Aufgabe darin besteht, Python-Code zu generieren, ist diese Haltung ein No-Go.
Doch das eigentliche Problem war ein anderes: Pylance ist proprietär und fest an Microsofts VS Code gebunden. Mein Arbeitsalltag sieht anders aus. Ich wechsle zwischen Cursor, Windsurf oder manchmal sogar Zed. Sobald ich diese Ökosysteme nutze, bricht die Erfahrung zusammen – sei es durch fehlende Features, eine andere Engine oder schlichtweg durch eine Lizenz, die mich ausschließt.
Zusätzlich scheiterte ich daran, den Typprüfer in VS Code so zu konfigurieren, dass er alle Dateien analysiert. Stattdessen zeigte er nur Fehler und Warnungen für die gerade geöffnete Datei an – trotz aller Versuche, die Einstellungen anzupassen.
Die Geburt von Basilisk
Aus dieser Frustration entstand Basilisk: ein offener Python-Sprachserver, Typprüfer, Debugger und Profiler – entwickelt in Rust, ausgeliefert als ausführbare Binärdatei. Ohne Abhängigkeiten von Node, Python oder Microsoft.
Das Kernkonzept ist einfach: Strikte Typisierung ist der Standard, keine Option.
Ein Beispiel:
def greet(name):
return "Hello " + nameBasilisk würde hier zwei Fehler melden:
error[BSK-E0001]: Fehlende Typannotation für Parameter 'name'error[BSK-E0002]: Fehlende Rückgabetypannotation
Es gibt keine Schalter wie --basic oder --permissive, keine globalen Knöpfe, die alles lockern. In Rust gibt es keinen Flag, um den Borrow-Checker zu deaktivieren – und in TypeScript ist strict: true der erwartete Standard. Basilisk überträgt dieses Prinzip auf Python. Ausnahmen sind möglich, doch der Entwickler muss sie explizit begründen, nicht umgekehrt. Mit 151 aktiven Diagnosen wird strikte Typisierung zur Regel.
Die IDE-Erweiterung bietet zwar Tools, um Ausnahmen zu ignorieren und Basilisk schrittweise in bestehende Projekte einzuführen, doch gleichzeitig stellt sie umfangreiche Optionen bereit, um Typisierung sukzessive zu verbessern.
Mehr als nur ein Typprüfer
Der Typprüfer ist nur der Einstieg. Das eigentliche Ziel ist eine vollständige Python-Entwicklungsumgebung in einer einzigen Erweiterung – etwas, das Pylance fast erreicht, aber nur innerhalb von Microsofts VS Code erlaubt.
Aus einer Rust-Binärdatei liefert Basilisk:
- 🧠 Typprüfung und -inferenz – strikt nach PEP 484, mit dem Ziel vollständiger Konformität
- 🐛 Debugging – integriert debugpy, sofort einsatzbereit ohne Konfiguration
- 🔥 Profiling – py-spy-Integration, direkt im Editor sichtbar
- 🧪 Test-Explorer – pytest/unittest mit Abdeckungsanalyse
- 🔧 Echte Refaktorierungen – Extraktion, Inline-Ersetzung, Datei-Verschiebung, kontextbewusste Umbenennung, Signaturänderungen
- 💡 Automatische Korrekturen und Formatierung – delegiert an Ruff, um Redundanzen zu vermeiden
Und – der ursprüngliche Anlass für das Projekt – dieselbe Erfahrung in jedem Editor: VS Code, Cursor und Windsurf (über Open VSX), sowie Zed und Neovim. Denn die Funktionalität wird über das Language Server Protocol (LSP) gesteuert, nicht durch den Editor selbst. Einmal installiert, steht die volle Funktionalität überall zur Verfügung, wo Python-Code geschrieben wird.
Der aktuelle Stand
Basilisk ist open source (MIT-Lizenz) und basiert auf demselben Parser wie Ruff. Dank Salsa für inkrementelle Prüfungen unter 10 Millisekunden ist die Performance optimiert. Ich begann das Projekt, weil ich wollte, dass der von meinem KI-Agenten generierte Python-Code genauso zuverlässig typisiert ist wie TypeScript – und zwar in jedem Editor, den ich gerade nutze. Daraus ist etwas viel Größeres geworden.
Falls du schon immer gewünscht hast, dass Python klar aussagt, wann dein Code nicht getypt ist – probiere Basilisk aus.
Mehr Tools von Nimblesite findest du auf der offiziellen Website.
KI-Zusammenfassung
Pylance'tan bıkan Python geliştiricileri için Rust tabanlı Basilisk, katı tip kontrolü, IDE bağımsızlığı ve çapraz platform desteği sunuyor. Detaylı özellikleri ve kurulum rehberi.