Zum Inhalt springen

Coding-Agent (OpenCode)

OpenCode ist ein Open-Source-Coding-Agent für das Terminal: Er liest und ändert Dateien, führt Befehle aus und arbeitet Aufgaben in einem Repository ab. Er ist providerneutral, und maKI lässt sich als OpenAI-kompatibler Provider eintragen. Der Code bleibt dann im Universitätsnetz.

Geprüft mit OpenCode 1.18 und opencode-plugin-litellm 1.0 auf macOS, Fedora 41 und Windows 11.

Sie brauchen einen maKI-API-Key mit der Gruppe self-hosted (siehe API-Schlüssel); ein persönlicher Key wird unter Last bevorzugt bedient. Dann im Terminal:

Terminal-Fenster
# macOS, Linux, Git Bash
curl -fsSL https://maki.uni-mannheim.de/docs/opencode/install.sh | sh
Terminal-Fenster
# Windows (PowerShell oder Eingabeaufforderung)
powershell -ExecutionPolicy ByPass -c "irm https://maki.uni-mannheim.de/docs/opencode/install.ps1 | iex"

Das Skript fragt den Key ab und prüft ihn gegen die API. Erst wenn maKI ihn annimmt, installiert es OpenCode (falls es fehlt), schreibt die Konfiguration und legt den Key in OpenCodes Schlüsselspeicher ab. Vorhandene Dateien werden vorher gesichert. Für Skripte und CI lässt sich der Key statt der Abfrage über MAKI_API_KEY übergeben.

Das Skript fragt am Ende, ob OpenCode Desktop (die grafische App) mitinstalliert werden soll. Ja: sie wird installiert und geöffnet. Nein: das Terminal-OpenCode startet direkt. Vorgabe-Modell ist qwen3.8-27b-thinking. Ohne Rückfrage läuft das Skript mit MAKI_API_KEY, MAKI_OPENCODE_DESKTOP=yes|no und MAKI_OPENCODE_START=no (kein Start am Ende).

Danach in einem neuen Terminal im Projekt:

Terminal-Fenster
opencode

OpenCode fragt bei eigenen Providern keine Modellliste ab. Das Plugin opencode-plugin-litellm übernimmt das: Es holt beim Start /v1/models und /v1/model/info von maKI und trägt jedes Chat-Modell mit seinem Kontextfenster ein. Neue Modelle erscheinen beim nächsten Start von allein; Embedding-, Audio- und Bildmodelle bleiben ausgeblendet.

~/.config/opencode/opencode.json:

{
"$schema": "https://opencode.ai/config.json",
"plugin": ["opencode-plugin-litellm@latest"],
"provider": {
"litellm": {
"npm": "@ai-sdk/openai-compatible",
"name": "maKI (Uni Mannheim)",
"options": { "baseURL": "https://maki.uni-mannheim.de/v1" }
}
},
"model": "litellm/qwen3.8-27b-thinking"
}

Außerdem setzt das Skript OPENCODE_ENABLE_EXA=1 in Ihrer Shell-Konfiguration. Damit bietet OpenCode neben webfetch (eine bekannte URL abrufen) auch das Werkzeug websearch an, mit dem das Modell selbst im Web suchen kann.

Der Key liegt in ~/.local/share/opencode/auth.json unter der Provider-ID litellm; von Hand geht das mit opencode auth login, Other, ID litellm. Die Modelle heißen in OpenCode litellm/<modell>, etwa litellm/qwen3.8-27b-thinking.

Modellliste wird geladen …

Vorgabe des Installers ist qwen3.8-27b-thinking: denkt vor der Antwort, verlässliches Tool Calling, 262k Kontext. qwen3.8-27b ohne Denkschritte ist schneller bei kurzen Aufgaben, qwen3.5-122b das stärkste lokale Modell, gemma4-26b das schnellste.

Das Kontextfenster trägt das Plugin aus /v1/model/info ein; OpenCode steuert damit, wann es den Gesprächsverlauf komprimiert.

Im Projektverzeichnis:

Terminal-Fenster
opencode # interaktive Oberfläche

Mit /models wechseln Sie das Modell während einer Sitzung. Für einzelne Aufgaben ohne Oberfläche:

Terminal-Fenster
opencode run "Schreibe Tests für parse_config() in config.py"
opencode run --model litellm/qwen3.5-122b "Erkläre die Architektur dieses Repos"
  • Datenfluss. OpenCode schickt Dateiinhalte, Befehlsausgaben und den Gesprächsverlauf an das Modell. Über maKI bleibt das im Universitätsnetz; für Repositories mit personenbezogenen Daten gilt trotzdem die Datenschutzprüfung aus dem Antrag.

  • Websuche geht nicht über maKI. OpenCode hat keine eigene Suchmaschine; das Werkzeug websearch schickt die Suchanfrage an den externen Dienst exa.ai. Die Anfrage verlässt damit das Universitätsnetz — anders als alles, was an das Modell geht. Wer das nicht will, entfernt OPENCODE_ENABLE_EXA wieder aus der Shell-Konfiguration; webfetch und alle Modellaufrufe funktionieren weiterhin.

  • Ohne Konto, mit Grenzen. Die Suche läuft ohne Anmeldung; Exa drosselt diesen Weg aber. Wenn websearch ins Leere läuft, holen Sie sich ein kostenloses Exa-Konto — 10 $ Guthaben pro Monat ohne Zahlungsmittel, das reicht für rund 1400 Suchen — und setzen den Schlüssel in der Shell-Konfiguration:

    Terminal-Fenster
    export EXA_API_KEY="..."
  • Kontext. Ein Agent-Gespräch wächst schnell auf hunderttausend Token. Die Modelle mit 262k Kontext halten das am längsten durch.

  • Parallele Anfragen. Ein Agent stellt viele Anfragen hintereinander. Unter GPU-Last werden persönliche Keys vor Service- und Batch-Keys bedient, siehe API-Schlüssel.

  • Modell fehlt im Picker? Das Plugin hält die Liste sieben Tage im Cache und frischt sie im Hintergrund auf; OpenCode neu starten zeigt den aktuellen Stand.