Coding-Assistent On-Premise — Qwen 2.5-Coder + Continue.dev
Code verlässt das Haus nicht. Mit Qwen 2.5-Coder, einem schlanken vLLM-Backend und Continue.dev als IDE-Frontend entsteht ein vollständiger Coding-Assistent, der Copilot-vergleichbare Qualität liefert — und gleichzeitig Compliance, IP-Schutz und EU-AI-Act-Konformität sicherstellt.
Der wirtschaftliche Druck, KI-gestützte Entwickler-Werkzeuge einzuführen, ist 2026 kaum noch verhandelbar. Studien aus dem letzten Jahr zeigen Produktivitätsgewinne zwischen 20 und 35 Prozent, je nach Sprache und Aufgabentyp. Gleichzeitig ist der Reflex „dann nehmen wir Copilot“ in vielen Mittelstands-IT-Abteilungen blockiert: Code, Repository-Struktur, interne API-Schlüssel und Kommentare würden an Cloud-Anbieter fließen — undenkbar in Branchen mit Wettbewerbs-IP, regulierten Datenflüssen oder strengen Konzern-Richtlinien. Die On-Prem-Lösung ist 2026 der pragmatische Kompromiss: Open-Weight-Coder-Modelle haben aufgeschlossen, und das IDE-Tooling rund um Continue.dev ist reif.
Modellwahl 2026: Qwen vs. DeepSeek vs. Llama
Drei Modellfamilien dominieren den On-Prem-Coding-Bereich. Die Auswahl entscheidet sich nicht am letzten Benchmark-Prozentpunkt, sondern am Profil:
| Modell | VRAM (Q4) | HumanEval Pass@1 | FIM | Kontext | Stärke |
|---|---|---|---|---|---|
| Qwen 2.5-Coder-32B | ~22 GB | 92 % | Ja | 128 k | Bestes Allround-Profil, gute deutsche Kommentare |
| Qwen 2.5-Coder-7B | ~6 GB | 84 % | Ja | 128 k | Idealer Autocomplete-Kandidat, sehr schnell |
| DeepSeek-Coder-V2-16B | ~12 GB | 90 % | Ja | 128 k | Stark bei algorithmischen Aufgaben, Python/C++ |
| DeepSeek-Coder-V2-236B (MoE) | ~140 GB | 94 % | Ja | 128 k | State-of-the-Art, braucht Multi-GPU-Server |
| Llama 3.3-70B | ~45 GB | 83 % | Eingeschränkt | 128 k | Universalmodell, eher Chat als Autocomplete |
Für die meisten Mittelstandsteams hat sich eine Zwei-Modell-Strategie etabliert: Qwen 2.5-Coder-7B für Autocomplete (FIM, niedrige Latenz) und Qwen 2.5-Coder-32B für Chat, Refactoring und Code-Reviews. DeepSeek-Coder-V2-236B ist eine Option für Teams mit großem GPU-Budget, der Zusatznutzen gegenüber dem 32B-Modell ist aber im Alltag spürbar geringer als die Hardware-Kosten suggerieren.
Backend-Setup mit vLLM
Beide Modelle laufen in eigenen vLLM-Instanzen hinter dem in unserem OpenAI-API-Artikel beschriebenen LiteLLM-Proxy. Wichtig für FIM ist, dass die Spezial-Tokens des Modells sauber durchgereicht werden:
# Autocomplete-Modell (Qwen 2.5-Coder-7B)
python -m vllm.entrypoints.openai.api_server \
--model Qwen/Qwen2.5-Coder-7B-Instruct \
--served-model-name qwen-coder-7b \
--max-model-len 16384 \
--gpu-memory-utilization 0.85 \
--port 8001
# Chat-Modell (Qwen 2.5-Coder-32B, AWQ-quantisiert)
python -m vllm.entrypoints.openai.api_server \
--model Qwen/Qwen2.5-Coder-32B-Instruct-AWQ \
--served-model-name qwen-coder-32b \
--max-model-len 32768 \
--enable-auto-tool-choice \
--tool-call-parser hermes \
--port 8002
Das Autocomplete-Modell läuft idealerweise auf einer dedizierten GPU mit niedriger Last, damit die Time-to-First-Token unter 200 ms bleibt. Alles darüber wird vom Entwickler als spürbare Verzögerung wahrgenommen und führt dazu, dass Vorschläge ignoriert werden.
Continue.dev: die richtige config.json
Continue.dev ist 2026 der Standard für IDE-Integration. Die Erweiterung läuft in VSCode, JetBrains-IDEs (IntelliJ, PyCharm, GoLand, WebStorm), Cursor und Zed. Die zentrale Konfiguration liegt in ~/.continue/config.json und kann per GitOps oder MDM auf alle Entwickler-Maschinen ausgerollt werden:
{
"models": [
{
"title": "Qwen Coder 32B",
"provider": "openai",
"model": "qwen-coder-32b",
"apiBase": "https://api.ki.intern/v1",
"apiKey": "sk-team-backend-***",
"contextLength": 32768
}
],
"tabAutocompleteModel": {
"title": "Qwen Coder 7B (FIM)",
"provider": "openai",
"model": "qwen-coder-7b",
"apiBase": "https://api.ki.intern/v1",
"apiKey": "sk-team-backend-***",
"template": "qwen"
},
"embeddingsProvider": {
"provider": "openai",
"model": "bge-m3",
"apiBase": "https://api.ki.intern/v1"
},
"contextProviders": [
{ "name": "code", "params": {} },
{ "name": "diff", "params": {} },
{ "name": "docs", "params": {} },
{ "name": "folder", "params": {} },
{ "name": "codebase", "params": { "nRetrieve": 25, "nFinal": 10 } }
],
"allowAnonymousTelemetry": false
}
Der Schlüssel allowAnonymousTelemetry: false ist Pflicht — Continue.dev sendet sonst anonymisierte Nutzungs-Events an einen externen Server. Für regulierte Umgebungen ist auch das schon zu viel.
Fill-in-the-Middle (FIM) — der Trick hinter gutem Autocomplete
Klassische LLM-Generierung produziert Text rein vorwärts. Beim Programmieren ist das unzureichend: Der Cursor steht meist zwischen bestehendem Code, und ein guter Vorschlag muss sowohl den Kontext davor als auch danach berücksichtigen. FIM-Modelle wie Qwen 2.5-Coder werden mit speziellen Sentinel-Tokens (<|fim_prefix|>, <|fim_suffix|>, <|fim_middle|>) trainiert. Continue.dev rendert den Prompt automatisch in diesem Format, wenn der template-Wert im Tab-Autocomplete-Modell korrekt gesetzt ist.
Das Resultat ist drastisch: Vorschläge passen sich an die Funktionssignatur darunter an, schließen Klammerebenen korrekt und respektieren Variablennamen aus dem Folge-Code. Ohne FIM bleibt jeder On-Prem-Assistent deutlich hinter Copilot zurück — mit FIM verschwindet der Unterschied im Alltagsbetrieb.
Context-Provider: Repo, Docs und Git-Diff
Ein Coding-Assistent ist nur so gut wie sein Kontext. Continue.dev liefert über sogenannte Context-Provider strukturierte Informationen an das Modell. Praktisch relevant sind vor allem:
- @code — markierter Code-Block aus dem Editor.
- @codebase — semantische Suche im gesamten Repo via Embeddings (in der config oben mit BGE-M3).
- @diff — aktuelle Git-Änderungen, ideal für „erkläre meine Commits“.
- @folder — alle Dateien eines Verzeichnisses, etwa für architekturweite Reviews.
- @docs — indexierte interne Dokumentation, z.B. API-Spezifikationen oder Coding-Guidelines.
Der @codebase-Provider verdient besondere Aufmerksamkeit: Hier wird das Repository einmal vollständig embeddet (typischerweise nächtlich per CI-Job) und in Qdrant abgelegt. Bei jeder Anfrage werden semantisch ähnliche Code-Snippets retrievt und dem Modell mitgegeben. Gerade bei großen Monorepos ist das der Unterschied zwischen oberflächlichen und tiefen Antworten.
VSCode und JetBrains in heterogenen Teams
Reale Entwicklerteams sind nicht IDE-monogam. Continue.dev funktioniert in beiden Welten praktisch identisch. Die config.json ist dieselbe, die Shortcuts (Tab für Accept, Cmd+L für Chat) sind plattformübergreifend. Für die Verteilung an alle Entwickler bewährt sich eine Kombination aus zentraler config-Vorlage im internen Git-Repo plus lokalem Override für persönliche Präferenzen. Über ein einfaches `dotfiles`-Repo lässt sich das in wenigen Minuten ausrollen.
Wichtig in JetBrains-IDEs: Der eingebaute „AI Assistant“ konkurriert nicht mit Continue.dev, beide können nebeneinander laufen. In Konzern-Umgebungen empfehlen wir, den JetBrains-AI-Assistant per Policy zu deaktivieren, um versehentliche Cloud-Calls auszuschließen.
Reif für eigene Developer-AI? In 7 Minuten klar.
Der KI-Reifegrad-Selbsttest bewertet Datenqualität, Toolchain, Governance und Change-Readiness. Sie erhalten direkt ein PDF mit priorisierten Handlungsfeldern für Ihr Entwicklerteam.
Security-Policy: Code bleibt im Konzern
Die technische Architektur ist nur die halbe Miete. Damit „kein Code verlässt den Konzern“ keine Floskel bleibt, sind drei Maßnahmen Pflicht:
- Netzwerk-Isolation: Continue.dev darf ausschließlich gegen die interne API-URL sprechen. Telemetry-Endpoints und Update-Server werden auf Proxy-Ebene blockiert.
- Endpoint-Whitelist: Pro IDE-Erweiterung dokumentieren, welche externen Hosts kontaktiert werden dürfen. Ein einfaches mitmproxy-Audit deckt unerwünschte Calls auf.
- Konfigurationszwang: Verteilung der config.json über MDM oder Konfigurations-Management. Lokale Änderungen werden bei jedem IDE-Start zurückgesetzt.
Zusätzlich empfehlen wir, den LiteLLM-Proxy mit Body-Logging in einen WORM-Speicher zu spiegeln (Write-Once-Read-Many). Damit ist im Auditfall nachweisbar, welche Code-Schnipsel wann durch welches Modell gegangen sind — eine Anforderung, die in regulierten Branchen 2026 zunehmend in Frameworks wie BAIT, VAIT oder ISO 42001 gefordert wird.
Benchmarks: HumanEval-DE und Praxistests
Pure HumanEval-Werte sagen wenig über die Eignung im deutschsprachigen Mittelstand aus. Wir betreiben deshalb ein internes HumanEval-DE-Set mit 164 Aufgaben, deren Docstrings auf Deutsch formuliert sind und in denen Variablennamen eingedeutscht wurden. Ergebnisse aus dem März 2026:
| Modell | HumanEval (EN) | HumanEval-DE | Δ |
|---|---|---|---|
| Qwen 2.5-Coder-32B | 92 % | 84 % | −8 % |
| DeepSeek-Coder-V2-16B | 90 % | 78 % | −12 % |
| Llama 3.3-70B | 83 % | 76 % | −7 % |
| Qwen 2.5-Coder-7B | 84 % | 74 % | −10 % |
Die Differenz zwischen englischen und deutschen Aufgaben ist real, aber bei Qwen am geringsten. Das deckt sich mit unserer Praxiserfahrung: Qwen 2.5-Coder versteht deutsche Kommentare und Fachbegriffe (Buchung, Mandant, Beleg) besser als die DeepSeek-Familie. Für deutschsprachige Teams ist das ein klarer Vorteil.
Häufige Fragen
Warum nicht einfach GitHub Copilot oder Cursor mit Cloud-Backend?
Weil dabei Quellcode und Repository-Kontext an Drittländer übermittelt werden. In regulierten Branchen, bei produktnahem Code oder bei IP-kritischer Software ist das nicht akzeptabel. Eine On-Prem-Lösung mit Continue.dev und einem lokalen Coder-Modell verhindert jeglichen Code-Abfluss und erfüllt zugleich die Anforderungen des EU AI Act bezüglich Datenflusskontrolle.
Welches Modell ist 2026 das richtige für deutschsprachige Entwicklerteams?
Qwen 2.5-Coder-32B liefert aktuell das beste Gesamtpaket aus Code-Qualität, FIM-Performance und mehrsprachigem Kommentar-Verständnis. DeepSeek-Coder-V2 ist bei reinem Code stärker, schwächelt aber in deutschen Issue-Beschreibungen. Llama 3.3-70B ist universeller, aber langsamer beim Autocomplete.
Brauche ich getrennte Modelle für Autocomplete und Chat?
Ja. Autocomplete erfordert sehr niedrige Latenz (unter 200 ms TTFT) und FIM-Fähigkeit. Dafür eignen sich kleine Modelle wie Qwen 2.5-Coder-1.5B oder 7B. Chat und Refactoring profitieren von größeren Modellen wie Qwen 2.5-Coder-32B. Continue.dev erlaubt es, beides parallel zu konfigurieren.
Wie schneidet das selbstgehostete Setup im Benchmark gegen Copilot ab?
Auf HumanEval erreicht Qwen 2.5-Coder-32B rund 92 Prozent Pass@1 und liegt damit auf Augenhöhe mit kommerziellen Cloud-Assistenten. Im internen HumanEval-DE-Test mit deutschsprachigen Docstrings sinkt der Wert auf etwa 84 Prozent — immer noch im Bereich produktiver Nutzung.
On-Prem-Coding-Assistent für Ihr Entwicklerteam aufsetzen
Wir konfigurieren Modell-Stack, IDE-Rollout und Security-Policy passgenau für Ihre Toolchain. Sprechen Sie mit uns — unverbindlich und konkret.