LocalAI/docs/continue.md
2026-10-15 00:01:26 +02:00

152 lines
7.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 ps` auf alegab-pc, siehe [README](../README.md)).
- 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_KEY` aus `.env` auf dem Server.
```bash
grep ^LLM_API_KEY ~/workspace/localAI/.env
```
Verbindungstest vom Client aus:
```bash
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:**
```bash
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):**
```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/`](../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:
```yaml
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`:
```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):
```bash
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`.