OpenCode CLI in der Praxis: Workflows, Automatisierung und Stolpersteine

OpenCode aus der Kommandozeile, in der Praxis

Inhaltsverzeichnis

Die Kommandozeilenschnittstelle von OpenCode wurde für Skripte, CI-Pipelines und nicht überwachte Agentenläufe entwickelt. Dieser Artikel ist ein praktischer Leitfaden für die Nutzung im Arbeitsalltag.

Hinter der CLI verbirgt sich ein System aus Modellen, Werkzeugen, Berechtigungen, Agenten, Skills, Befehlen, Sitzungen, MCP-Servern und einer Client-Server-Architektur. Der Agent kann Projektdateien lesen und bearbeiten, Repositorien durchsuchen, Shell-Befehle ausführen, externe Werkzeuge aufrufen und Aufgaben an Subagenten delegieren. Die gleiche Umgebung läuft interaktiv in der TUI oder nicht interaktiv aus Skripten heraus.

OpenCode CLI als programmierbare Coding-Agent-Umgebung

Für kleine Aufgaben kann man es installieren, ein Modell verbinden und innerhalb weniger Minuten mit dem Stellen von Fragen beginnen. Für ernsthaftere Arbeit hängt die Qualität der Erfahrung stark von der Modellauswahl, den Repository-Anweisungen, den Berechtigungsgrenzen, dem Kontextmanagement und der Aggressivität ab, mit der man den Agenten operieren lässt. Dieser Artikel konzentriert sich auf diese zweite Stufe, von der Kommandozeile aus: Welche Anwendungsfälle sich lohnen, welche Automatisierungsworkflows im täglichen Gebrauch standhalten und welche Probleme auftauchen, nachdem die Neuheit eines KI-gestützten Terminals verblasst ist. Er ist Teil des Abschnitts KI-Entwicklerwerkzeuge auf dieser Website.

Die hier aufgeführten Beobachtungen wurden mit OpenCode 1.18.9 und der aktuellen Dokumentation im August 2026 überprüft. OpenCode ändert sich schnell, daher verdienen Konfigurationsbeispiele vor dem Kopieren in eine langlebige Teamumgebung einen schnellen Blick in die Dokumentation. Falls Sie OpenCode noch nicht installiert haben, deckt der OpenCode Quickstart die Installation, Verifikation und die Verbindung zu Providern ab.

Was OpenCode wirklich ist: Eine Agent-Umgebung, kein Chat-Fenster

OpenCode ist ein quelloffener KI-Coding-Agent, der um das Terminal herum konzipiert ist. Eine vereinfachte Darstellung dessen, was es zusammenbringt, sieht so aus:

flowchart TD U[Entwickler] --> T[OpenCode CLI oder TUI] T --> A[Primäragent] A --> M[Ausgewähltes LLM] A --> F[Dateiwerkzeuge] A --> S[Shell] A --> W[Web-Werkzeuge] A --> L[LSP und Code-Intelligenz] A --> X[MCP-Werkzeuge] A --> C[Skills und Befehle] A --> G[Subagenten] F --> R[Repository] S --> R L --> R G --> M P[Berechtigungsregeln] --> A I[AGENTS.md] --> A

Der wichtigste Teil ist die Berechtigungsschicht zwischen der Absicht eines Modells und den Aktionen, die OpenCode ausführen kann. Ein hervorragendes Modell mit schlechten Berechtigungen kann gefährlich sein. Ein schwaches Modell mit perfekten Berechtigungen ist lediglich langsam und lästig. Produktive Nutzung von OpenCode erfordert, dass beide Seiten reasonably richtig gesetzt sind.

Die gleiche Umgebung dient beiden Oberflächen: der interaktiven TUI und der nicht interaktiven Kommandozeile. Genau das macht OpenCode in einer Weise scriptbar, die eine reine Chat-Oberfläche nicht ist. Wenn Sie eine bewusst minimale Herangehensweise an dieselbe Terminal-Agent-Idee wünschen – vier Standardwerkzeuge, keine eingebaute Sandbox, alles andere über Erweiterungen –, dann ist die Pi Coding Agent-Bewertung ein nützlicher Kontrast.

Einrichtung: Installation, Verbindung und warum Provider-Unabhängigkeit zählt

OpenCode wird in einer Zeile installiert – offizielles Installationsskript, npm oder Homebrew – und startet mit opencode aus einem Repository-Verzeichnis. Der OpenCode Quickstart deckt die vollständige Installationsmatrix (Arch, Windows, Docker), die Verifikation und die Provider-Verbindung (/connect und /models) ab, daher wiederholt dieser Artikel diese Schritte nicht.

Sie können die eigenen Modellservices von OpenCode verwenden oder unterstützte externe Provider verbinden. OpenCode baut derzeit einen Großteil seines Provider-Katalogs mit Models.dev auf und unterstützt eine breite Palette kommerzieller und lokaler Modellkonfigurationen.

Provider-Unabhängigkeit ist eine der nützlichsten architektonischen Entscheidungen von OpenCode. Ihr Coding-Workflow muss nicht dauerhaft an einen einzelnen Modellanbieter gekoppelt sein: Sie können ein Modell für anspruchsvolle Architekturarbeit verwenden, ein anderes für günstige Implementierungsaufgaben und ein lokales Modell für Code, der Ihre Umgebung nicht verlassen sollte.

Diese Flexibilität ist real, bringt aber eine weitere Variable mit sich, die man verwalten muss. Wenn OpenCode schlecht funktioniert, kann das Problem das Gerüst (Harness), der Prompt, der verfügbare Kontext, das ausgewählte Modell oder die Interaktion zwischen all vier sein.

Initialisieren Sie das Repository mit AGENTS.md, bevor Sie Code anfordern

Einer der ersten Befehle, die es in einem neuen Repository wert sind, auszuführen, lautet:

/init

OpenCode analysiert das Projekt und erstellt eine AGENTS.md-Datei. Committen Sie diese Datei.

AGENTS.md ist der Ort, an dem repository-spezifische Einschränkungen zu einem dauerhaften Kontext für jedes Gespräch – interaktiv oder per Skript – werden können, anstatt sie von Hand wiederholen zu müssen. Eine nützliche Datei ist kurz genug, um relevant zu bleiben, aber konkret genug, um vorhersehbare Fehler zu verhindern. Zum Beispiel:

# Repository-Anweisungen

## Architektur

- API-Handler befinden sich unter src/api.
- Geschäftslogik gehört unter src/services.
- Datenbankzugriff gehört unter src/repositories.
- Rufen Sie Datenbank-Clients nicht direkt aus HTTP-Handlern auf.

## Validierung

Nach TypeScript-Änderungen ausführen:

```bash
npm run typecheck
npm test
```

Nach Frontend-Änderungen zusätzlich ausführen:

```bash
npm run lint
```

## Einschränkungen

- Generierte Dateien nicht ändern.
- Öffentliche API-Verträge nicht ohne vorherige Anfrage ändern.
- Datenbank-Migrationen nur erstellen, wenn ausdrücklich angefordert.
- Deployments niemals ausführen.

Das ist weniger aufregend als die Installation eines weiteren MCP-Servers, bietet aber in der Regel mehr Wert. Coding-Agenten scheitern überraschend oft, weil sie nicht wissen, welche Einschränkungen wichtig sind. Ein kurzes Repository-Vertrag beseitigt einen Teil dieser Mehrdeutigkeit, bevor der erste Werkzeugaufruf erfolgt.

Arbeiten Sie von der Kommandozeile mit opencode run

Die interaktive Oberfläche erhält die meiste Aufmerksamkeit, aber der nicht interaktive Modus von OpenCode erweitert den Bereich nützlicher Workflows erheblich:

opencode run "Erkläre die Fehlerbehandlungsstrategie in diesem Paket"

Sie können OpenCode aus Shell-Skripten, CI-Jobs, Makefiles, Task-Runnern oder lokaler Automatisierung verwenden, ohne jedes Mal manuell die TUI zu betreten. Zum Beispiel eine Diff-Review als Einmal-Befehl:

opencode run \
  "Prüfe den aktuellen git diff auf Korrektheit und fehlende Tests. Bearbeite keine Dateien."

Oder leiten Sie Kontext direkt in einen Lauf:

git diff --name-only HEAD~1 |
  opencode run "Untersuche die geänderten Dateien und identifiziere riskante Verhaltensänderungen."

In einem Makefile wird derselbe Aufruf zu einem Target:

.PHONY: review
review:
	opencode run "Prüfe den aktuellen git diff auf Korrektheit und fehlende Tests. Bearbeite keine Dateien."

Da ein skriptgesteuerter Lauf keinen Menschen am Eingabefeld hat, ist die konfigurierte Berechtigungspolitik die einzige Schutzschranke zwischen dem Modell und Ihrer Umgebung. Deshalb sind die folgenden Abschnitt zu Berechtigungen für die Automatisierung wichtiger als für die interaktive Nutzung.

Die interessante Richtung hierin ist nicht, deterministische Skripte durch ein LLM zu ersetzen. Es geht darum, Modell-Reasoning in Stellen einzufügen, an denen traditionelle Shell-Logik umständlich wird, während man deterministische Validierung drumherum behält.

Die besten Anwendungsfälle für die OpenCode CLI

OpenCode kann fast jede Programmieraufgabe angehen, das bedeutet aber nicht, dass jede Aufgabe auf die gleiche Weise delegiert werden sollte. Die Workflow mit dem höchsten Nutzen neigen dazu, drei Eigenschaften zu haben: Das gewünschte Ergebnis ist testbar, der relevante Repository-Kontext kann entdeckt werden und fehlerhafte Änderungen sind billig zu inspizieren oder zurückzunehmen. Jeder der folgenden Prompts funktioniert in der TUI oder als Argument für opencode run.

1. Repository-Erkundung

OpenCode ist hervorragend im Beantworten von Fragen, die andernfalls eine Abfolge von grep, Editor-Suchen, Datei-Sprüngen und git log-Befehlen erfordern würden. Zum Beispiel:

Erkläre, wie die Authentifizierung in diesem Repository funktioniert.

Verfolge eine Anfrage vom HTTP-Middleware durch Token-Validierung,
Benutzeraufruf, Autorisierung und den finalen Handler.

Ändere nichts.

Ein guter Agent wird nach Einstiegspunkten suchen, Referenzen verfolgen, Tests inspizieren und etwas zurückgeben, das eher einem Architektur-Rundgang ähnelt als einer reinen Textsuche. Dies ist eine der sichersten Möglichkeiten, OpenCode in eine bestehende Codebasis einzuführen, da der Agent Wert liefern kann, ohne Code zu schreiben.

2. Kleine, klar abgegrenzte Fixes

Ein eng begrenzter Bug ist nahe an der idealen Coding-Agent-Aufgabe. Zum Beispiel:

Die CLI beendet sich mit Status 0, wenn die Konfigurationsvalidierung fehlschlägt.

Finde den verantwortlichen Codepfad, füge einen Regressionstest hinzu, implementiere
den kleinstmöglichen Fix und führe die relevanten Tests aus.

Refaktorisieren Sie keinen unrelated Code.

Der wichtige Satz ist nicht „den Bug fixen“. Es sind die Einschränkungen, die die Aufgabe umgeben. OpenCode funktioniert besser, wenn der Erfolg mit einem Test, einem Compiler oder einem beobachtbaren Befehl demonstriert werden kann. Vage Anforderungen geben dem Modell Spielraum, plausiblen Code zu erstellen, anstatt nachweisbar korrekten Code.

3. Testgenerierung nach der Implementierung

Tests sind nützliche Agentenarbeit, weil die bestehende Implementierung OpenCode etwas Konkretes zum Überlegen gibt. Ein produktiver Prompt könnte sein:

Prüfe src/parser.ts und seine bestehenden Tests.

Identifiziere wichtige Edge Cases, die derzeit nicht abgedeckt sind.
Füge nur Tests hinzu. Ändere nicht die Implementierung.

Führe die Parser-Test-Suite nach Abschluss aus.

Die Trennung von Testgenerierung und Implementierung ist wichtig. Wenn derselbe Agent in einem unbeschränkten Durchlauf sowohl das Feature als auch die Tests schreibt, kann er versehentlich Tests erstellen, die seine eigene Interpretation validieren, anstatt das beabsichtigte Verhalten.

4. Mechanisches Refactoring

OpenCode ist sehr gut bei repetitiven Transformationen, bei denen der gewünschte Endzustand klar ist. Beispiele sind:

  • Ersetzen einer deprecated API in einem ganzen Repository;
  • Umwandeln von wiederholtem Code in einen gemeinsamen Helper;
  • Umbenennen eines Konfigurationsfeldes;
  • Migration von Tests von einem Assertion-Muster zu einem anderen;
  • Aktualisieren von Imports nach dem Verschieben eines Pakets;
  • Ersetzen einer veralteten Logging-Abstraktion.

Der Compiler und die Tests des Repositoriums werden zur Feedback-Schleife des Agents. Ein nützliches Muster ist:

Ersetze die Verwendung von LegacyResult<T> durch Result<T, AppError> nur in
packages/api.

Erhalte das Laufzeitverhalten bei.

Arbeite in kleinen Batches. Führe nach jedem Batch die Paket-Typecheck aus.
Am Ende führe die Paket-Test-Suite aus und zeige mir die finale git diff
Zusammenfassung.

Das ist oft zuverlässiger, als nach der gesamten Migration in einem riesigen Schritt zu fragen.

5. Code Review

OpenCode wird viel nützlicher, wenn Review als eine separate Agentenrolle behandelt wird, anstatt ein weiterer Prompt, der an denselben editierenden Kontext gesendet wird. Sie können einen auf Review ausgerichteten Agenten erstellen, der keine Dateien bearbeiten kann. Dann geben Sie ihm Anweisungen wie:

Prüfe den aktuellen git diff.

Konzentriere dich auf:
- Korrektheit;
- Sicherheit;
- Concurrent Programming;
- fehlende Tests;
- Fehlerbehandlung;
- ungewollte API-Änderungen.

Fasse keine Dateien zusammen, die unverändert sind.
Rangiere die Befunde nach Schweregrad.

Ein read-only Reviewer ist nützlich, selbst wenn ein anderer Coding-Agent die Änderungen erstellt hat. Die Trennung ist wertvoll, weil Implementierung und Kritik unterschiedliche Aufgaben sind: Ein Agent, der gerade mehrere Tausend Tokens damit verbracht hat, einen Ansatz zu verteidigen, ist oft weniger skeptisch gegenüber diesem Ansatz als ein frischer Reviewer.

Verwenden Sie Plan- und Build-Modi als verschiedene mentale Modi

OpenCode stellt Primäragenten und Subagenten bereit, mit eingebaute Workflows, die planungs- und implementierungsorientiertes Verhalten beinhalten. Selbst wenn die genaue Agentenkonfiguration sich mit der Zeit ändert, bleibt die konzeptionelle Trennung nützlich.

Planung sollte Fragen beantworten wie:

  • Welche Dateien sind relevant?
  • Welche bestehenden Muster sollten gefolgt werden?
  • Was könnte brechen?
  • Wie werden wir die Änderung verifizieren?
  • Ist die angeforderte Änderung tatsächlich lokal?

Implementierung sollte erst nach dem Beantworten dieser Fragen mit vernünftigen Antworten erfolgen. Für substanzielle Aufgaben bevorzuge ich eine Prompt-Sequenz wie diese:

Untersuche zuerst die Anfrage.

Bearbeite noch keine Dateien.

Gib zurück:
1. die relevanten Dateien;
2. das aktuelle Verhalten;
3. die vorgeschlagene Änderung;
4. Risiken;
5. die exakten Verifikationsbefehle.

Die gleiche Sequenz funktioniert als Einmal-Befehl:

opencode run "Untersuche zuerst die Anfrage. Bearbeite noch keine Dateien. Gib zurück: die relevanten Dateien; das aktuelle Verhalten; die vorgeschlagene Änderung; Risiken; die exakten Verifikationsbefehle."

Dann inspizieren Sie den Plan, bevor Sie Bearbeitungen zulassen. Das fühlt sich langsamer an, als einem Agenten sofort zu sagen „implementiere es“, aber die teuren Fehler im agentischen Coding stammen meist von falschen Annahmen, die vor der ersten Bearbeitung gemacht werden.

Das ist eine leichte, aufgabenbezogene Version derselben Intuition, die hinter spekgetriebener Entwicklung steckt: einigen Sie sich auf den Plan, bevor der Agent anfängt zu bearbeiten. Für Arbeit, die mehrere Dateien, Sitzungen oder Mitwirkende umfasst, rechtfertigt eine schriftliche Spezifikation ihren Overhead auf eine Weise, die ein einzelner „erst untersuchen“-Prompt nicht kann; die Vergleich von GitHub Spec Kit, Kiro und Claude Code) deckt strukturierte SDD-Workflows ab, die über einen einzelnen Prompt hinausgehen.

Subagenten sind nützlich, aber Delegation ist nicht kostenlos

OpenCode kann spezialisierte Subagenten automatisch oder durch explizite Erwähnung aufrufen. Zum Beispiel:

@general finde, wo das Retry-Verhalten implementiert ist

Sie können auch dedizierte Subagenten für Aufgaben wie Security Review, Abhängigkeitsanalyse, Frontend-Tests oder Dokumentation definieren. Das gleiche Muster funktioniert in anderen Gerüsten; der Leitfaden für Claude Code Subagenten deckt das analoge Design auf der Anthropic-Seite ab.

Das ist leistungsstark, weil Subagenten-Arbeit außerhalb des unmittelbaren Reasoning-Pfads der Primär-Konversation bleiben kann. Ein Primäragent kann Repository-Erkundung delegieren und das Ergebnis konsumieren, anstatt seinen eigenen Kontext mit jeder Zwischensuche zu füllen. Aber Subagenten erzeugen drei weniger offensichtliche Kosten:

  1. Sie verbrauchen Tokens. Ein Baum von Agenten, die jeweils das Repository neu lesen, kann überraschend teuer werden – mein Erfahrungsbericht zu Oh My Opencode dokumentiert, was passiert, wenn dieser Overhead ins Extreme getrieben wird.
  2. Sie erzeugen Komplexität in der Policy. Berechtigungen müssen für den delegierten Agenten berücksichtigt werden, nicht nur für den Eltern-Agenten.
  3. Delegation kann Reasoning verbergen. Wenn der Primäragent sagt „der Subagent hat X gefunden“, müssen Sie möglicherweise die Kind-Sitzung inspizieren, um zu verstehen, wie zuverlässig dieser Schluss tatsächlich ist.

Für die meisten Coding-Aufgaben sind zwei oder drei zweckgerichtete Agenten nützlicher als ein Elaboriertes fiktives Softwareunternehmen, das in Ihrem Terminal lebt.

Wenn die Aufgabe tatsächlich einen vollständigen Orchestrator benötigt, der an eine feste Roster von Spezialisten delegiert – parallele Hintergrundausführung, Planungs- und Forschungsphasen, Modell-Routing pro Rolle –, dann ist das ein anderes Produkt, das auf Topf dieser Primitive aufgebaut ist, nicht ein größerer Prompt. Der Quickstart zu Oh My Opencode deckt dieses Gerüst ab.

Verwenden Sie benutzerdefinierte Agenten als Berechtigungsgrenzen

OpenCode-Agenten können separate Prompts, Modelle und Berechtigungen haben. Das macht Agenten nützlich als Sicherheits- und Workflow-Grenzen, nicht nur als verschiedene Persönlichkeiten. Zum Beispiel kann ein projektlokaler Review-Agent als Markdown-Datei definiert werden:

---
description: Reviewt Code, ohne das Repository zu ändern
mode: subagent
permission:
  edit: deny
  bash:
    "*": ask
    "git diff *": allow
    "git status *": allow
    "git log *": allow
  webfetch: deny
---

Reviewe Code auf Korrektheit, Sicherheit, Wartbarkeit,
unerwartete Verhaltensänderungen und fehlende Tests.

Ändere keine Dateien.

Das ist viel besser als das Schreiben von „bitte ändere nichts“ in Prosa. Anweisungen beeinflussen das Modell. Berechtigungen constrain das Werkzeug. Das sind keine äquivalenten Kontrollen.

Konfigurieren Sie OpenCode-Berechtigungen am ersten Tag

Eine der wichtigsten praktischen Eigenschaften von OpenCode ist, dass seine normalen Defaults permissiv sind. Das ist praktisch während einer Demo und nicht unbedingt das, was ich auf einem Arbeitsplatz mit SSH-Keys, Produktions-Credentials, Publishing-Tokens für Pakete, Kubernetes-Kontexten und Zugriff auf mehrere Cloud-Konten möchte. Für nicht überwachte opencode run-Jobs sind die stakes noch höher: nichts stoppt einen Lauf außer der konfigurierten Policy.

Das aktuelle Berechtigungsmodell von OpenCode unterstützt:

allow
ask
deny

Regeln können auf Datei-Zugriff, Bearbeitungen, Shell-Befehle, Web-Operationen, Subagenten, Skills, externe Verzeichnisse und andere Werkzeug-Kategorien angewendet werden. Ein konservativer Startpunkt könnte so aussehen:

{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "*": "ask",
    "read": "allow",
    "grep": "allow",
    "glob": "allow",
    "edit": "ask",
    "bash": {
      "*": "ask",
      "git status *": "allow",
      "git diff *": "allow",
      "git log *": "allow",
      "git push *": "deny",
      "rm *": "deny"
    }
  }
}

Die exakten Regeln sollten zu Ihrer Umgebung passen. Wichtig ist, die Policy absichtlich zu gestalten, anstatt den Default erst zu entdecken, nachdem der Agent schon etwas überraschendes ausgeführt hat.

Verwechseln Sie keine Approval-Prompts mit Sandboxing

Berechtigungsregeln sind nützlich, aber sie sind nicht dasselbe wie Betriebssystem-Isolation. Wenn OpenCode die Berechtigung hat, einen erlaubten Shell-Befehl auszuführen, läuft dieser Prozess mit dem Zugriff, der Ihrer Umgebung zur Verfügung steht. Ein Coding-Agent kann potenziell mit Dateien, Netzwerkservices, Umgebungsvariablen, Credentials, Sockets, Paketmanagern und anderen Entwicklerwerkzeugen interagieren. Der OpenHands CLI Quickstart ist der sandbox-basierte Gegenpart: ein Docker-Workspace, ein Headless-Modus, das immer zustimmt, und der Agent Canvas Handoff, den das OpenHands-Projekt jetzt dokumentiert.

Für sensible Repositories oder nicht überwachte Läufe ist stärkere Isolation eine Überlegung wert:

flowchart TD H[Host-Arbeitsplatz] --> B[Eingeschränkter Container oder VM] B --> O[OpenCode] O --> R[Repository-Kopie] O --> T[Build- und Test-Werkzeuge] O --> K[Eingeschränkte Modell-Credentials] P[Keine Produktions-Credentials] --> B N[Eingeschränkter Netzwerkausgang] --> B

Git ist Rollback. Berechtigungen sind Policy. Ein Container oder eine VM ist Isolation. Das sind drei verschiedene Ebenen.

Machen Sie repetitive Prompts zu benutzerdefinierten Befehlen

Wenn Sie wiederholt dieselben Anweisungen tippen, sollten sie wahrscheinlich aufhören, Chat-Verlauf zu sein, und Konfiguration werden. OpenCode unterstützt projekt- und globale benutzerdefinierte Slash-Befehle für die interaktive Schnittstelle. Zum Beispiel erstellen:

.opencode/commands/review.md

mit:

---
description: Prüfe die aktuellen Änderungen
agent: plan
---

Prüfe den aktuellen git diff.

Suche nach:
- Bugs;
- Sicherheitsproblemen;
- unvollständiger Fehlerbehandlung;
- fehlenden Tests;
- ungewollten API-Änderungen.

Ändere keine Dateien.

Verwenden Sie dann:

/review

Das ist eine kleine Funktion mit überproportional hohem Wert. Zuverlässige Coding-Agent-Workflows entstehen, wenn gute Prompts zu geteilter Projektinfrastruktur werden, anstatt persönliche Clipboardschnipsel zu sein. Andere nützliche Projektbefehle könnten sein:

/test-changes
/review
/prepare-pr
/check-migration
/update-docs
/release-check

Verwenden Sie Skills für wiederverwendbare Workflows

OpenCode unterstützt auch SKILL.md-Dateien. Skills sind nützlich, wenn ein Workflow mehr als einen einzelnen Prompt benötigt. Ein Skill kann detaillierte operative Leitlinien und unterstützende Dateien enthalten, während er unbegleitet bleibt, bis der Agent ihn tatsächlich braucht. Nützliche Kandidaten sind:

  • Datenbank-Migrationsverfahren;
  • Release-Workflows;
  • Incident-Untersuchung;
  • API-Kompatibilitätsreviews;
  • Paket-Publishing;
  • Infrastruktur-Validierung;
  • interne Architekturkonventionen.

Zum Beispiel:

.opencode/skills/database-migration/SKILL.md

Eine Skill-Beschreibung könnte OpenCode mitteilen, wann das Verfahren gilt, während der Body erklärt, wie man Schemata inspiziert, Migrationen erstellt, Rollback-Verhalten validiert und Integrationstests ausführt. Falls Sie bereits das äquivalente Konzept in einem anderen Gerüst verwenden, mappt der Leitfaden für Claude Skills für Entwickler) dieselben Designentscheidungen.

Der Vorteil ist Kontextdisziplin. Jeder organisationsinterne Regel in AGENTS.md zu dumpfen, erzeugt irgendwann einen riesigen System-Prompt, der teuer ist und zunehmend leicht vom Modell ignoriert wird. Skills lassen spezialisierte Anweisungen nur dann in den Kontext ein, wenn benötigt.

MCP: Nützlich, bis der Werkzeugkatalog zum Problem wird

OpenCode unterstützt lokale und remote MCP-Server. Das kann Issue-Tracker, Dokumentationssysteme, Browser, Observability-Plattformen, Datenbanken, APIs und andere Werkzeuge dem Coding-Agenten zugänglich machen. Eine typische Konfiguration könnte einen Dokumentationsserver bereitstellen:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "context7": {
      "type": "remote",
      "url": "https://mcp.context7.com/mcp"
    }
  }
}

MCP ist eine dieser Funktionen, die leicht überstrapaziert wird. Jedes Werkzeug, das der Agent verstehen muss, verbraucht Aufmerksamkeit und häufig Kontext-Tokens. Eine Einrichtung mit fünfzehn MCP-Servern kann in einem Screenshot der Konfiguration leistungsstark aussehen, während das tatsächliche Modellverhalten langsamer, teurer und weniger vorhersehbar macht.

Meine Regel ist einfach: Wenn ein Werkzeug in einer normalen Arbeitswoche nicht nützlich ist, sollte es wahrscheinlich nicht global aktiviert sein. Laden Sie Werkzeuge, weil ein Workflow sie braucht, nicht, weil die Integration existiert.

Lokale Modelle in OpenCode: Eine reale Option, kein magischer Fix

Einer der stärksten Anwendungsfälle von OpenCode ist seine Fähigkeit, mit lokalen oder self-gehosteten OpenAI-kompatiblen Modell-Endpunkten zu arbeiten. Das ist attraktiv, wenn:

  • Quellcode lokal bleiben muss;
  • API-Kosten erheblich sind;
  • Sie bereits GPU-Infrastruktur betreiben;
  • Sie mit offenen Modellen experimentieren wollen;
  • die Internetverbindung unzuverlässig ist;
  • Modell-Routing Teil Ihrer Plattform ist.

Ein benutzerdefinierter Provider kann OpenCode auf einen lokalen Endpunkt wie LM Studio, llama.cpp) via llama-server, vLLM, Ollama-kompatible Infrastruktur oder einen anderen OpenAI-kompatiblen Server zeigen.

Hier sind die Erwartungen entscheidend. Ein gutes Coding-Gerüst kann nicht vollständig kompensieren, was ein Modell in Tool-Use, langfristiger Planung, Code-Reasoning oder Instruktionsbehaltung schwach macht. Community-Diskussionen rund um lokale OpenCode-Setups konvergieren wiederholt auf dieselbe Beobachtung: Lokale Modelle können hervorragend für begrenzte Aufgaben sein, aber die kleineren brauchen oft mehr Aufsicht. Für gemessene Zahlen dazu, wie bestimmte Modelle tatsächlich innerhalb von OpenCode funktionieren, siehe meine Hands-on-LLM-Vergleich für OpenCode.

Die praktische Lösung ist Modell-Routing nach Aufgabenkomplexität. Verwenden Sie ein günstigeres oder lokales Modell für:

  • Repository-Suche;
  • Dokumentation;
  • einfache Tests;
  • repetitive Bearbeitungen;
  • Formatierungsänderungen;
  • unkomplizierte Bugfixes.

Verwenden Sie ein stärkeres Modell für:

  • Architekturänderungen;
  • mehrdeutige Bugs;
  • Refactoring über Pakete hinweg;
  • Concurrent Programming;
  • sicherheitsrelevante Code;
  • schwierige Migrationen.

Provider-Unabhängigkeit macht diese Strategie möglich. Sie macht die Modellqualität nicht irrelevant.

Ein praktischer täglicher Workflow mit OpenCode

Mein bevorzugter Workflow ist bewusst konservativ. Er funktioniert in der TUI oder via opencode run gleich; wo ein Schritt ein Prompt ist, wird die Kommandozeilen-Variante daneben gezeigt.

Schritt 1: Starten Sie von einem sauberen Git-Zustand

git status

Committen Sie bestehende Änderungen oder notieren Sie absichtlich, was bereits geändert ist. Ein KI-Coding-Agent, der in einem dreckigen Working Tree operiert, macht die Review viel schwerer, weil menschliche Änderungen und Agenten-Änderungen gemischt werden.

Schritt 2: Fordern Sie zuerst die Untersuchung an

Untersuche Issue #482.

Ändere keine Dateien.

Erkläre:
- das aktuelle Verhalten;
- die wahrscheinliche Wurzelursache;
- relevante Dateien;
- bestehende Tests;
- vorgeschlagenen Fix;
- Verifikationsbefehle.

Derselbe Prompt als Einmal-Befehl:

opencode run "Untersuche Issue #482. Ändere keine Dateien. Erkläre das aktuelle Verhalten, die wahrscheinliche Wurzelursache, relevante Dateien, bestehende Tests, den vorgeschlagenen Fix und die Verifikationsbefehle."

Wenn die Untersuchung falsch ist, ist die Korrektur billig.

Schritt 3: Verengen Sie die Implementierung

Implementiere nur den vorgeschlagenen Fix.

Refaktorisieren Sie keinen unrelated Code.
Füge zuerst den Regressionstest hinzu.
Führe die kleinstmögliche relevante Test-Suite nach der Änderung aus.

Oder nicht interaktiv:

opencode run "Implementiere nur den vorgeschlagenen Fix. Refaktorisieren Sie keinen unrelated Code. Füge zuerst den Regressionstest hinzu. Führe die kleinstmögliche relevante Test-Suite nach der Änderung aus."

Der Agent hat jetzt einen kleineren Entscheidungsspielraum.

Schritt 4: Inspektion des Diffs selbst

git diff --stat
git diff

Delegieren Sie diesen Schritt nicht vollständig an ein anderes Modell. Sie prüfen nicht nur, ob der Code plausibel aussieht, sondern auch, ob der Agent Dateien geändert hat, die er nicht hätte berühren müssen.

Schritt 5: Führen Sie deterministische Verifikation aus

npm run typecheck
npm test
npm run lint

Verwenden Sie die tatsächlichen Projektbefehle. „OpenCode sagt, die Tests bestehen“ ist kein stärkerer Beweis als Ihr Terminal, das einen erfolgreichen Testprozess anzeigt.

Schritt 6: Führen Sie eine unabhängige Review aus

Fragen Sie einen read-only Agenten:

Reviewe den uncommitteden Diff, als wäre er ein Pull Request,
der von einem anderen Ingenieur geschrieben wurde.

Versuche, Gründe zu finden, warum diese Implementierung falsch ist.

Bearbeite keine Dateien.

Die Kommandozeilen-Variante:

opencode run "Reviewe den uncommitteden Diff, als wäre er ein Pull Request, der von einem anderen Ingenieur geschrieben wurde. Versuche, Gründe zu finden, warum diese Implementierung falsch ist. Bearbeite keine Dateien."

Der Satz „versuche, Gründe zu finden, warum es falsch ist“ ist absichtlich. Modelle sind sehr gut im höflichen Bestätigen plausibler Arbeit. Review-Prompts sollten Fälschung ermutigen, nicht Applaus.

Schritt 7: Commit nur, wenn der Diff Sinn ergibt

git add -p
git commit

Ich bevorzuge nach wie vor interaktives Staging nach agentengenerierten Änderungen. Es erzwingt einen letzten menschlichen Durchgang über jeden Hunk, der Teil der Repository-Historie wird.

Wo OpenCode frustrierend wird: Häufige Fallstricke

Die interessanten Limitationen sind normalerweise nicht „die KI hat einen Syntaxfehler gemacht“. Compiler sind gut darin, diese zu fangen. Die schwierigen Probleme stammen von Autonomie, Kontext, versteckten Annahmen und Konfiguration.

Herausforderung 1: Modellqualität dominiert die Erfahrung

Der gleiche OpenCode-Workflow kann mit einem Modell exzellent und mit einem anderen nahezu unbenutzbar wirken. Das macht Produktreviews schwierig, da Benutzer oft das Modellverhalten dem Agenten-Harness zuschreiben.

Wenn OpenCode wiederholt:

  • Anweisungen ignoriert;
  • zu viel Code umschreibt;
  • Werkzeuge falsch aufruft;
  • in die gleiche fehlgeschlagene Aktion looppet;
  • den Faden der Einschränkungen verliert;
  • APIs erfindet;

probieren Sie ein anderes Modell, bevor Sie die gesamte OpenCode-Konfiguration neu gestalten. Das Terminal wurde nicht plötzlich schlauer. Das Modell tat es.

Herausforderung 2: Lange Sitzungen akkumulieren schlechten Kontext

Coding-Agent-Sitzungen werden weniger vertrauenswürdig, wenn sich falsche Annahmen anhäufen. Ein früherer Fehler wie „dieser Dienst ist stateless“ kann Dutzende später Entscheidungen beeinflussen, selbst nachdem die relevanten Dateien sich geändert haben.

OpenCode unterstützt Kompaktierung zum Management der Kontextlimits, aber Kompression erzeugt ihren eigenen Tradeoff. Eine Zusammenfassung entscheidet notwendigerweise, welche Details überleben. Für große Aufgabenwechsel ist der Start einer neuen Sitzung oft sauberer als die Fortsetzung einer heroischen 80.000-Token-Konversation. Bei skriptgesteuerten Läufen ist die Antwort noch einfacher: Ein neuer opencode run startet jedes Mal mit einem sauberen Kontext, daher gehört langlebiger Zustand in Dateien wie AGENTS.md, nicht in eine Konversation.

Kontext ist kein freier Speicher. Es ist Arbeitszustand, und Arbeitszustand wird alt.

Herausforderung 3: Berechtigungen können täuschend kompliziert werden

Einfache Regeln sind einfach:

read -> allow
edit -> ask
git push -> deny

Komplexe Agentenhierarchien sind schwieriger. Sobald Primäragenten Subagenten, benutzerdefinierte Werkzeuge, MCP-Server und Shell-Befehle aufrufen können, müssen Sie über die effektiven Fähigkeiten des gesamten Workflows nachdenken, anstatt über eine einzelne Konfigurationszeile.

Es gab auch echte Community- und GitHub-Diskussionen über das Verhalten von Subagenten-Berechtigungen und Berechtigungserbschaft. Die Lektion ist breiter als jeder einzelne Bug: Testen Sie Sicherheitsannahmen mit einem tatsächlichen wegwerfbaren Repository – zum Beispiel git init /tmp/opencode-perm-test und versuchen Sie, den Agenten dazu zu bringen, dort einen Befehl auszuführen, den Sie verboten haben. Wenn eine Aktion absolut nicht eintreten darf, verlassen Sie sich nicht nur auf Prosa-Anweisungen.

Herausforderung 4: OpenCode ändert sich schnell

OpenCode hat mit bemerkenswertem Tempo ausgeliefert. Das ist gut für Features und weniger angenehm für die Langlebigkeit der Dokumentation. Ein besonders einfaches Problem in 2026 ist das Finden von Konfigurationsbeispielen aus einer anderen OpenCode-Generation. Die aktuelle Dokumentation enthält auch separates V2-Material, dessen Konfigurationsschema sich von der etablierten 1.x-Syntax unterscheidet. Zum Beispiel können Berechtigungskonzepte unter unterschiedlichen Feldnamen in der V2-Dokumentation erscheinen.

Kombinieren Sie Beispiele nicht beiläufig von:

/docs/

und:

/v2/docs/

ohne zu überprüfen, welche Runtime Sie tatsächlich verwenden. Wenn Sie eine Konfiguration debuggen, die Sie aus einem Blogpost kopiert haben, prüfen Sie ihr Veröffentlichungsdatum, bevor Sie annehmen, OpenCode sei kaputt.

Herausforderung 5: Die TUI kann die Skala verbergen

Eine konversationelle Schnittstelle lässt eine Zehn-Datei-Änderung kleiner wirken als eine Zehn-Datei-Änderung. Der Agent kann melden:

Implementierte die neue Validierung und aktualisierte die relevanten Tests.

Dieser Satz könnte drei Zeilen oder 600 Zeilen repräsentieren. Halten Sie unabhängige Shell-Werkzeuge in der Nähe:

git status --short
git diff --stat
git diff --name-only
git diff

Der Coding-Agent sollte nicht die einzige Schnittstelle sein, über die Sie den Coding-Agenten beobachten.

Herausforderung 6: MCP kann die Kontexteffizienz zerstören

Mehr Integrationen produzieren nicht automatisch einen besseren Coding-Agenten. Große MCP-Server können viele Werkzeug-Schemata offenlegen, die jeweils Modellkontext verbrauchen und die Komplexität der Werkzeugauswahl erhöhen. Wenn OpenCode sich nach der Installation der halben MCP-Ökosystems seltsam unentschlossen anfühlt, deaktivieren Sie den meisten davon und vergleichen Sie. Eine kleinere Werkzeugoberfläche erzeugt oft ein besseres Agentenverhalten.

Herausforderung 7: Lokale Privatsphäre erfordert die Verifikation des gesamten Pfades

Das Ausführen eines lokalen Modells garantiert nicht automatisch, dass jeder Teil einer Toolchain lokal ist. Community-Diskussionen Anfang 2026 stellten Privatsphärenfragen rund um das Auxiliary-Modell-Verhalten und die Web-Oberflächenarchitektur von OpenCode. Einige dieser Behauptungen bezogen sich auf ältere Versionen, einige wurden bestritten und einige Codepfade haben sich seitdem geändert.

Die dauerhafte Lektion ist nicht „OpenCode schickt alles irgendwohin“. Die dauerhafte Lektion ist: Wenn nur-lokaler Betrieb eine harte Anforderung ist, verifizieren Sie es. Verwenden Sie Netzwerk-Inspektion, lesen Sie die aktuelle Konfiguration, verstehen Sie, welche Schnittstelle Sie verwenden, deaktivieren Sie unnötige Remote-Integrationen und testen Sie die exakte Version, die Sie bereitzustellen beabsichtigen. Sicherheitsanforderungen sollten validiert werden, nicht aus einer Produktkategorie abgeleitet.

OpenCode vs. Claude Code und Codex CLI

Der stärkste Differenzierungsindikator von OpenCode ist nicht unbedingt die Coding-Qualität. Das zugrunde liegende Modell trägt nach wie vor stark zur Coding-Qualität bei. Sein Differenzierungsindikator ist die Kontrolle über das Gerüst.

OpenCode ist überzeugend, wenn Sie schätzen:

  • eine quelloffene Implementierung;
  • Provider-Flexibilität;
  • Terminal-First-Workflows;
  • konfigurierbare Agenten;
  • granulare Berechtigungen;
  • Unterstützung für lokale Modelle;
  • MCP;
  • wiederverwendbare Befehle und Skills;
  • Client/Server-Architektur.

Claude Code) ist überzeugend, wenn Sie eine eng integrierte Anthropic-Erfahrung mit starkem First-Party-Modellverhalten und zunehmend polierten eingebauten Agenten-Workflows wünschen. Codex CLI ist überzeugend, wenn Ihre bevorzugten Modelle und Workflows bereits auf dem OpenAI-Coding-Stack zentriert sind.

Ich würde nicht unter ihnen wählen, indem ich Features zähle. Wählen Sie basierend darauf, welche Schicht Sie besitzen wollen. Wenn Sie möchten, dass ein Vendor die meisten Workflow-Entscheidungen trifft, kann ein First-Party-Coding-Agent attraktiv sein. Wenn Sie möchten, dass das Gerüst austauschbar bleibt, während Sie mit Providern und Agentenkonfigurationen experimentieren, ist OpenCode ein stärkeres Argument.

Was Reddit und Hacker News über OpenCode richtig verstehen

Community-Diskussionen rund um OpenCode sind ungewöhnlich polarisiert. Einige Entwickler beschreiben es als ihr Lieblings-Coding-Gerüst, besonders in Kombination mit Codex-Modellen, lokalen Modellen oder benutzerdefinierten Agenten-Setups. Andere konzentrieren sich auf Ressourcenverbrauch, Berechtigungsverhalten, Privatsphärenfragen, Provider-Authentifizierungsänderungen oder die Komplexität, die auftritt, wenn eine scheinbar einfache Terminalanwendung zu Infrastruktur wird. Beide Perspektiven sind vernünftig.

OpenCode ist nicht schwierig, weil die Kommandozeile schwierig ist. Es ist schwierig, weil eine autonome Coding-Umgebung Fragen aufwirft, die Entwickler zuvor nicht explizit beantworten mussten:

  • Welches Modell sollte diese Entscheidung treffen?
  • Welche Dateien darf es lesen?
  • Welche Befehle darf es ausführen?
  • Welche Credentials kann der Prozess sehen?
  • Welche Aufgaben sollten zu Subagenten werden?
  • Wie viel Kontext sollte überleben?
  • Welche Werkzeuge verdienen permanenten Kontext?
  • Welches Ergebnis muss ein Mensch verifizieren?

Ein poliertes geschlossenes Produkt kann viele dieser Entscheidungen für Sie treffen. OpenCode macht mehr davon zu Ihren Entscheidungen. Genau deshalb mögen es fortgeschrittene Benutzer.

Eine Startkonfiguration, die ich empfehlen würde

Ich würde es ablehnen, sofort eine elaborate Einrichtung zu bauen. Starten Sie mit:

  1. einem starken Standardmodell;
  2. einer AGENTS.md;
  3. konservativen Shell- und Edit-Berechtigungen;
  4. einem read-only Review-Agenten;
  5. zwei oder drei benutzerdefinierten Befehlen;
  6. keinen MCP-Servern, bis ein echtes Bedürfnis erscheint.

Eine einfache Umgebung ist einfacher zu debuggen. Sobald ein Workflow repetitiv wird, promovieren Sie ihn in einen Befehl, Skill oder Agenten. Sobald eine Fähigkeit riskant wird, beschränken Sie sie mit Berechtigungen. Sobald Kontext aufgebläht wird, teilen Sie den Workflow, anstatt nur ein größeres Kontextfenster zu kaufen. Dieser inkrementelle Ansatz ist weniger beeindruckend in Screenshoten und erheblich angenehmer zu pflegen.

Wer OpenCode verwenden sollte

OpenCode ist ein besonders guter Fit für Entwickler, die bereits in Terminals leben und möchten, dass ihr Coding-Agent sich wie ein anderes programmierbares Entwicklungswerkzeug verhält. Ich würde es dringend in Betracht ziehen, wenn Sie:

  • über mehrere LLM-Provider hinweg arbeiten;
  • Unterstützung für lokale Modelle wünschen;
  • es nicht mögen, an einen KI-Anbieter gesperrt zu sein;
  • projekt-spezifische Agenten benötigen;
  • Entwicklungsaufgaben aus Shell-Skripten automatisieren;
  • das Coding-Gerüst inspizieren oder modifizieren möchten;
  • Git und normales CLI-Tooling bereits verstehen.

Es ist weniger überzeugend, wenn Sie primär eine unsichtbare KI-Schicht innerhalb einer IDE wünschen. OpenCode erwartet auch mehr operatives Urteil als ein traditionelles Auto-Complete-Tool. Wenn das Reviewen von Diffs, das Verstehen von Shell-Befehlen und das Management von Git-Branches sich bereits unangenehm anfühlt, wird die Gewährung eines autonomen Prozesses Zugriff auf diese Werkzeuge die zugrunde liegende Komplexität nicht verschwinden lassen.

Endgültiges Urteil

OpenCode ist eines der überzeugenderen Beispiele dafür, wie ein KI-Coding-Tool zu Entwicklerinfrastruktur wird und nicht nur eine Chat-Oberfläche. Seine besten Funktionen sind nicht schillernd. Provider-Unabhängigkeit, explizite Berechtigungen, wiederverwendbare Agenten, nicht interaktive Ausführung, Repository-Anweisungen, Befehle, Skills und komponierbare Werkzeuge machen es möglich, den Agenten um einen echten Engineering-Workflow herum zu formen.

Die Schwäche ist das Spiegelbild dieser Stärke. OpenCode gibt Ihnen genug Kontrolle, eine disziplinierte Coding-Umgebung zu erstellen, aber es gibt Ihnen auch genug Kontrolle, ein kompliziertes, teures, schlecht isoliertes Schwarm von Agenten mit zwanzig MCP-Servern und keiner klaren Verifikationsschranke zu erstellen.

Ich würde OpenCode nicht für maximale Autonomie optimieren. Ich würde es für kurze Feedback-Schleifen optimieren. Geben Sie ihm ein begrenztes Problem, genug Kontext, um das Problem zu verstehen, Berechtigung, nur die notwendigen Aktionen durchzuführen, und deterministische Befehle, die beweisen können, ob das Ergebnis funktioniert. Das ist weniger magisch, als einem Agenten zu bitten, eine gesamte Anwendung zu bauen, während Sie schlafen. Es ist auch viel näher an dem, wie OpenCode wirklich nützlich wird.

Referenzen

Abonnieren

Neue Beiträge zu Systemen, Infrastruktur und KI-Engineering.