7.7 KiB
Continue (VS Code) mit dem zentralen LocalAI-Server
Continue ist ein Open-Source-Plugin für VS Code (und JetBrains). Es bietet:
| Funktion | Wofür | Modell auf dem Server |
|---|---|---|
| Chat / Agent | Fragen zum Code, Agent-Modus mit Tools (Dateien lesen/schreiben, Terminal) | qwen3.5-35b-a3b (oder glm-4.7-flash, qwen3.5-9b) |
| Edit / Apply | markierten Code umschreiben lassen (Ctrl+I), Vorschläge übernehmen |
wie Chat |
| Autocomplete | Ghost-Text-Vervollständigung beim Tippen (Tab) | qwen2.5-coder-1.5b (läuft dauerhaft) |
| Embeddings | @codebase-Suche über das ganze Projekt |
nomic-embed (läuft dauerhaft, CPU) |
Alles läuft über die eine API http://<server>:8800/v1 mit API-Key. Es geht nichts in die Cloud.
1. Voraussetzungen
- Der Server läuft (
docker compose psauf alegab-pc, siehe README). - Der Client-PC ist im Heim-LAN (192.168.178.0/24) oder mit NetBird verbunden. Andere Netze bekommen
403. - Du hast den API-Key: Das ist
LLM_API_KEYaus.envauf dem Server.grep ^LLM_API_KEY ~/workspace/localAI/.env
Verbindungstest vom Client aus:
curl -H "Authorization: Bearer <KEY>" http://192.168.178.72:8800/v1/models
# NetBird: http://100.73.82.219:8800/v1/models
Kommt eine JSON-Liste mit den Modellen zurück, steht die Verbindung.
2. Extension installieren
- VS Code: Extensions (
Ctrl+Shift+X) öffnen, nach „Continue" suchen (Herausgeber: Continue) und installieren. Alternativ auf der Kommandozeile:code --install-extension Continue.continue - VSCodium / Code-OSS: gleicher Name, die Extension kommt dort aus Open VSX.
Beim ersten Start zeigt Continue eine Anmeldeseite für den „Continue Hub". Melde dich nicht an. Wähle stattdessen „Or, configure your own models" bzw. „Skip" oder „Local config". Damit bleibt alles lokal.
3. Konfiguration einspielen
Continue liest die lokale Konfiguration aus:
| System | Pfad |
|---|---|
| Linux / macOS | ~/.continue/config.yaml und ~/.continue/.env |
| Windows | %USERPROFILE%\.continue\config.yaml und %USERPROFILE%\.continue\.env |
Linux/macOS:
mkdir -p ~/.continue
cp ~/.continue/config.yaml ~/.continue/config.yaml.bak 2>/dev/null # Backup, falls vorhanden
cp client/continue/config.yaml ~/.continue/config.yaml
cp client/continue/.env.example ~/.continue/.env
chmod 600 ~/.continue/.env
$EDITOR ~/.continue/.env # LOCALAI_API_KEY=<KEY> eintragen
Windows (PowerShell):
New-Item -ItemType Directory -Force $env:USERPROFILE\.continue
Copy-Item client\continue\config.yaml $env:USERPROFILE\.continue\config.yaml
Copy-Item client\continue\.env.example $env:USERPROFILE\.continue\.env
notepad $env:USERPROFILE\.continue\.env
Die Dateien config.yaml und .env.example liegen in diesem Repo unter client/continue/. Auf einen anderen PC kopierst du sie per USB-Stick, scp oder Git.
4. Server-Adresse eintragen
Oben in config.yaml gibt es den Block model_defaults:. Dort steht eine apiBase, die für alle Modelle gilt:
model_defaults: &localai
provider: openai
apiBase: http://192.168.178.72:8800/v1 # ← hier anpassen
apiKey: ${{ secrets.LOCALAI_API_KEY }}
| Standort des Client-PCs | apiBase |
|---|---|
| auf alegab-pc selbst | http://127.0.0.1:8800/v1 |
| im Heim-LAN | http://192.168.178.72:8800/v1 |
| unterwegs über NetBird | http://100.73.82.219:8800/v1 oder http://<netbird-name>.netbird.cloud:8800/v1 |
Tipp für Laptops, die mal im LAN und mal unterwegs sind: Nimm immer die NetBird-Adresse. Sie funktioniert auch zu Hause, solange NetBird verbunden ist. Dann musst du nie umschalten.
Den NetBird-Namen und die NetBird-IP des Servers zeigt netbird status -d auf alegab-pc an.
Nach dem Speichern lädt Continue die Konfiguration automatisch neu. Falls nicht: Command Palette (Ctrl+Shift+P) → „Continue: Reload" oder VS Code neu laden.
5. Telemetrie abschalten
Continue sendet standardmäßig anonyme Nutzungsstatistiken. So schaltest du das ab:
VS Code-Einstellungen (Ctrl+,) → nach continue telemetry suchen → „Continue: Telemetry Enabled" abhaken.
Oder direkt in settings.json:
"continue.telemetryEnabled": false
6. Benutzung
| Aktion | Tastenkürzel (Standard) |
|---|---|
| Continue-Seitenleiste öffnen / Chat | Ctrl+L (markierten Code mitnehmen) |
| Code inline bearbeiten (Edit) | Code markieren → Ctrl+I |
| Autocomplete annehmen | Tab (Wort für Wort: Ctrl+→) |
| Autocomplete ablehnen | Esc |
| Modell wechseln | Dropdown unten in der Chat-Box |
| Modus wechseln (Chat / Plan / Agent) | Dropdown links unten in der Chat-Box |
Kontext mit @ im Chat: @codebase (semantische Suche im Projekt), @file, @folder, @diff (aktuelle Git-Änderungen), @terminal, @problems.
Hinweise zu den Modellen
- Erster Request nach längerer Pause: Das Chat-Modell wird in den VRAM geladen, das dauert 10–60 s. Danach bleibt es 1 h geladen.
- Modellwechsel zwischen den Chat-Modellen dauert ebenso. Am besten bei einem Modell bleiben.
- Das Autocomplete- und das Embedding-Modell laufen dauerhaft und werden durch den Chat nie entladen.
- Der Server ist ein gemeinsames System. Wenn mehrere Leute gleichzeitig chatten, werden die Anfragen nacheinander abgearbeitet. Wer ein anderes Chat-Modell wählt, löst bei allen einen Modellwechsel aus.
- Agent-Modus: Gib kleine, klar umrissene Aufgaben. Lokale Modelle verlieren bei langen Mehrschritt-Aufträgen eher den Faden als Cloud-Modelle.
7. Fehlersuche
| Symptom | Ursache / Lösung |
|---|---|
401 unauthorized |
API-Key fehlt oder ist falsch. ~/.continue/.env prüfen (kein Leerzeichen, keine Anführungszeichen). |
403 forbidden |
Der Client ist in einem nicht erlaubten Netz. LAN oder NetBird verbinden. |
| Timeout / „connection refused" | Falsche apiBase, Server aus oder Firewall. curl-Test aus Abschnitt 1 ausprobieren. |
| Erste Antwort dauert lange | Das Modell wird geladen, beim allerersten Mal sogar heruntergeladen. Abwarten. |
| Autocomplete zeigt nichts | Unten rechts in der Statusleiste muss „Continue" aktiv sein (Klick → Enable autocomplete). Im Output-Panel „Continue" nach Fehlern schauen. Das Template in config.yaml (promptTemplates.autocomplete) muss unverändert sein. |
| Autocomplete liefert Müll / Chat-Text | Für Autocomplete muss das Modell qwen2.5-coder-1.5b mit useLegacyCompletionsEndpoint: true eingestellt sein, kein Chat-Modell. |
| Agent ruft keine Tools auf | Das Modell braucht capabilities: [tool_use]. qwen3.5-35b-a3b oder glm-4.7-flash nehmen. |
@codebase findet nichts |
Indexierung läuft noch, siehe Fortschritt in der Continue-Seitenleiste. Neu anstoßen: Command Palette (Ctrl+Shift+P) → „Continue" eintippen → den Befehl zum Neu-Indexieren (Re-Index / Rebuild codebase index) wählen. |
Logs des Servers (auf alegab-pc):
cd ~/workspace/localAI
docker compose logs -f llama-swap # Modell-Laden, Requests
docker compose logs -f caddy # Zugriffe, 401/403
8. Fertige Varianten
a) Nur ein Modell, minimal
Wenn du nur Chat und Autocomplete willst, lösche in config.yaml die Einträge GLM-4.7 Flash, Qwen3.5 9B und Nomic Embed.
b) Schwacher Client, schnelle Antworten
Nimm Qwen3.5 9B (schnell) als Chat-Modell. Es liegt komplett im VRAM und antwortet deutlich schneller, ist aber weniger klug.
c) Projektbezogene Konfiguration
Continue liest zusätzlich .continue/-Ordner im Projekt. Dort kannst du z. B. projektspezifische Regeln ablegen (.continue/rules/*.md) und sie mit ins Repo einchecken. Die Modelle bleiben in der globalen ~/.continue/config.yaml.