LLMGui — VS Code Extension

Version: 2.14.18
VS Code: ^1.80.0
Repository: gitlab.com/mrmarco/llmgui (clients/vscode/)

Die LLMGui VS Code Extension bringt den vollständigen LLMGui-Assistenten direkt in den Editor. Sie verbindet sich mit dem laufenden LLMGui-Backend-Server (Port 8080) und stellt Chat, Code-Aktionen, CodeLens-Annotierungen und eine automatische Update-Funktion bereit.

Voraussetzung: Ein laufender LLMGui-Server (./llmgui.sh --serve oder PYTHONPATH=. python3 llmgui.py --serve).


Navigation


Installation

Via .vsix-Datei (empfohlen)

Die aktuellste .vsix-Datei liegt im Repository unter clients/vscode/:

# Aktuelle Version installieren
code --install-extension llmgui-vscode-2.14.18.vsix

Alternativ in VS Code:
1. Ctrl+Shift+P"Extensions: Install from VSIX..."
2. Datei llmgui-vscode-2.14.18.vsix auswählen

Automatische Updates

Die Extension prüft beim Start automatisch via GitLab Package Registry, ob eine neue Version verfügbar ist. Bei Fund erscheint eine Benachrichtigung mit direktem Download- und Installationsbutton — kein manueller Eingriff nötig.

Für private Repositories wird ein GitLab Personal Access Token (Scope: read_api) benötigt (→ Einstellungen llmgui.gitlabToken).


Konfiguration

Alle Einstellungen unter Datei → Einstellungen → Einstellungen → LLMGui:

Einstellung Standard Beschreibung
llmgui.serverUrl http://localhost:8080 URL des LLMGui-Backend-Servers. Für Remote-Server z.B. http://192.168.1.10:8080
llmgui.localOnly false Beschränkt alle Anfragen auf lokale Modelle. Bei aktiviertem Local-Only-Modus werden Cloud-Fallbacks (Gemini etc.) deaktiviert — schlägt das lokale Modell fehl, schlägt die Anfrage fehl statt an einen Remote-Dienst weitergeleitet zu werden
llmgui.updateCheck true Automatischer Update-Check beim Start via GitLab Package Registry
llmgui.gitlabToken "" GitLab Personal Access Token (Scope: read_api) für private Repositories. Leer lassen wenn das Repo öffentlich ist

settings.json (direkt):

{
    "llmgui.serverUrl": "http://dana:8080",
    "llmgui.localOnly": true,
    "llmgui.updateCheck": true,
    "llmgui.gitlabToken": "glpat-xxxxxxxxxxxxxxxxxxxx"
}

Features

Chat-Panel (Activity Bar)

Das zentrale Interface der Extension. Klick auf das Robot-Icon in der Activity Bar öffnet den LLMGui-Chat-View.

Funktionen:

Context Menu (Rechtsklick im Editor)

Bei markiertem Code stehen folgende Aktionen im Kontextmenü zur Verfügung:

Aktion Beschreibung
Add Selection to LLMGui Context Fügt die Auswahl als Kontext-Block zum Chat hinzu
Explain Selection with LLMGui Sendet direkt: "Explain this code: [Auswahl]"
Generate Tests with LLMGui Sendet: "Generate unit tests for: [Auswahl]"
Review Selection with LLMGui Sendet: "Review this code for issues: [Auswahl]"

Alle Aktionen öffnen automatisch den Chat-View und befüllen das Eingabefeld vor.

CodeLens-Annotierungen

Über jeder Funktionsdefinition erscheinen drei klickbare Inline-Aktionen:

🤖 Explain  🤖 Test  🤖 Fix
def calculate_hash(file_path: str) -> str:
    ...

Unterstützte Sprachen: Python, JavaScript, TypeScript, Go, Rust, Java (generisches Fallback für alle anderen).

LLMGui extrahiert den vollständigen Funktionsrumpf automatisch (bis 50 Zeilen, respektiert Python-Indent und Brace-Counting).

Security Findings (TreeView)

Unterhalb des Chat-Panels erscheint in der LLMGui-Seitenleiste das Security Findings-Panel — eine native VS Code TreeView mit allen offenen Security-Befunden aus der zentralen ~/.brainy/security_findings.db.

Struktur:

$(error) Critical (3)
  ├─ CVE-2024-1234 · auth.py:45
  └─ B608 · db.py:120
$(warning) High (5)
  ├─ VULN-0012 · requirements.txt
  └─ ...
$(warning) Medium (8)
$(info) Low (2)

Funktionen:
- Badge an der View zeigt Anzahl offener Findings auf einen Blick
- Klick auf Finding → Datei öffnet sich und springt direkt zur betroffenen Zeile
- Refresh-Button $(refresh) in der Toolbar lädt Findings neu vom Backend
- Rechtsklick → "Mit LLMGui fixen" → Chat öffnet sich mit vorgefertigtem Fix-Prompt (inkl. CVE-ID, Datei, Zeile, Beschreibung und Fix-Hint)
- Findings werden gefiltert nach aktuellem Workspace und Status open

Der Panel wird über GET /api/findings?workspace=...&status=open mit Daten versorgt. Findings landen in der DB nach jedem /vuln-scan, /secret-scan oder /full-audit.

Security CodeLens

Über Codezeilen mit bekannten Findings erscheinen automatisch Security-CodeLens-Annotierungen:

$(error) CVE-2024-1234  CVSS 9.8  [bandit]
def authenticate(user, password):
    ...

Klick öffnet die VS Code Problems-Leiste mit allen Diagnosen. Die Annotierungen werden automatisch aktualisiert wenn ein Scan neue Ergebnisse liefert (via DiagnosticCollection).

Status Bar

Rechts unten in der VS Code Status Bar zeigt LLMGui den aktuellen Server-Status:

Anzeige Bedeutung
$(chip) qwen2.5-coder Server online, Modellname des geladenen Modells
$(hubot) LLMGui Server online, kein Modell aktiv geladen
$(warning) LLMGui offline Backend nicht erreichbar

Tooltip zeigt zusätzlich VRAM-Auslastung und geladene Modelle. Status-Update alle 5 Sekunden.

Klick auf die Status Bar öffnet den Chat-View.


Workflow-Beispiele

Code-Review einer Datei

  1. Datei in VS Code öffnen
  2. Im Chat-Panel: /review src/myfile.py eingeben
  3. LLMGui analysiert die Datei relativ zum Workspace und gibt strukturiertes Feedback

Funktion erklären (CodeLens)

  1. Cursor über eine Funktionsdefinition bewegen
  2. Auf 🤖 Explain über der Funktion klicken
  3. Chat öffnet sich mit vorausgefülltem Explain-Prompt

Auswahl als Kontext hinzufügen

  1. Code-Abschnitt markieren
  2. Rechtsklick → Add Selection to LLMGui Context
  3. Im Chat weiteren Kontext hinzufügen und Frage stellen

Local-Only für Datenschutz

  1. Strg+,llmgui.localOnly auf true setzen
  2. Alle Anfragen gehen nur noch an das lokale Ollama-Modell
  3. Bei Modell-Ausfall: Fehlermeldung statt Cloud-Fallback

Architektur der Extension

clients/vscode/
├── src/
│   ├── extension.ts              # Activation, Commands, CodeLens, Findings-Integration
│   ├── ChatViewProvider.ts       # WebView-basierter Chat-View
│   └── FindingsViewProvider.ts   # Native TreeView für Security Findings
├── webview/
│   └── main.ts                   # Frontend (esbuild → media/webview.js)
├── media/
│   └── webview.js                # Gebundetes WebView-Script
├── dist/
│   └── extension.js              # Kompiliertes Extension-Bundle
└── package.json                  # Extension-Manifest (v2.14.18)

Kommunikation:

VS Code Extension
    ↕ (WebView messages)
Chat WebView (HTML/JS)
    ↕ (HTTP POST /chat)
LLMGui FastAPI Server (:8080)
    ↕ (Ollama API)
Lokales Sprachmodell