Deutsch
Dokumentation
Server

Server

Interagieren Sie mit dem opencode-Server über HTTP.

Der Befehl opencode serve führt einen Headless-HTTP-Server aus, der einen OpenAPI-Endpunkt bereitstellt, den ein opencode-Client verwenden kann.


Verwendung

opencode serve [--port <number>] [--hostname <string>] [--cors <origin>]

Optionen

FlagBeschreibungStandard
--portPort zum Lauschen4096
--hostnameHostname zum Lauschen127.0.0.1
--mdnsmDNS-Erkennung aktivierenfalse
--mdns-domainBenutzerdefinierter Domainname für mDNS-Dienstopencode.local
--corsZusätzliche Browser-Origins erlauben[]

--cors kann mehrfach übergeben werden:

opencode serve --cors http://localhost:5173 --cors https://app.example.com

Authentifizierung

Setzen Sie OPENCODE_SERVER_PASSWORD, um den Server mit HTTP-Basic-Auth zu schützen. Der Benutzername ist standardmäßig opencode, oder setzen Sie OPENCODE_SERVER_USERNAME, um ihn zu überschreiben. Dies gilt sowohl für opencode serve als auch für opencode web.

OPENCODE_SERVER_PASSWORD=your-password opencode serve

Funktionsweise

Wenn Sie opencode ausführen, startet es eine TUI und einen Server. Die TUI ist der Client, der mit dem Server kommuniziert. Der Server stellt einen OpenAPI 3.1-Spezifikations-Endpunkt bereit. Dieser Endpunkt wird auch zur Generierung eines SDK verwendet.

Tipp: Verwenden Sie den opencode-Server, um programmatisch mit opencode zu interagieren.

Diese Architektur ermöglicht es opencode, mehrere Clients zu unterstützen und erlaubt Ihnen, programmatisch mit opencode zu interagieren.

Sie können opencode serve ausführen, um einen eigenständigen Server zu starten. Wenn die opencode-TUI bereits läuft, startet opencode serve einen neuen Server.


Mit einem bestehenden Server verbinden

Wenn Sie die TUI starten, wird zufällig ein Port und Hostname zugewiesen. Sie können stattdessen die --hostname und --port Flags übergeben. Verwenden Sie diese dann, um sich mit dem Server zu verbinden.

Der /tui-Endpunkt kann verwendet werden, um die TUI über den Server zu steuern. Zum Beispiel können Sie einen Prompt vorausfüllen oder ausführen. Diese Konfiguration wird von den OpenCode IDE-Plugins verwendet.


Spezifikation

Der Server veröffentlicht eine OpenAPI 3.1-Spezifikation, die unter folgender Adresse eingesehen werden kann:

http://<hostname>:<port>/doc

Zum Beispiel http://localhost:4096/doc. Verwenden Sie die Spezifikation, um Clients zu generieren oder Request- und Response-Typen zu inspizieren. Oder betrachten Sie sie in einem Swagger-Explorer.


APIs

Der opencode-Server stellt die folgenden APIs bereit.


Global

MethodePfadBeschreibungAntwort
GET/global/healthServer-Gesundheit und Version abrufen{ healthy: true, version: string }
GET/global/eventGlobale Events abrufen (SSE-Stream)Event-Stream

Projekt

MethodePfadBeschreibungAntwort
GET/projectAlle Projekte auflistenProject[]
GET/project/currentAktuelles Projekt abrufenProject

Pfad & VCS

MethodePfadBeschreibungAntwort
GET/pathAktuellen Pfad abrufenPath
GET/vcsVCS-Info für aktuelles Projekt abrufenVcsInfo

Instanz

MethodePfadBeschreibungAntwort
POST/instance/disposeAktuelle Instanz verwerfenboolean

Konfiguration

MethodePfadBeschreibungAntwort
GET/configKonfigurationsinfo abrufenConfig
PATCH/configKonfiguration aktualisierenConfig
GET/config/providersAnbieter und Standardmodelle auflisten{ providers: Provider[], default: { [key: string]: string } }

Anbieter

MethodePfadBeschreibungAntwort
GET/providerAlle Anbieter auflisten{ all: Provider[], default: {...}, connected: string[] }
GET/provider/authAnbieter-Authentifizierungsmethoden abrufen{ [providerID: string]: ProviderAuthMethod[] }
POST/provider/{id}/oauth/authorizeAnbieter mit OAuth autorisierenProviderAuthAuthorization
POST/provider/{id}/oauth/callbackOAuth-Callback für Anbieter verarbeitenboolean

Sitzungen

MethodePfadBeschreibungHinweise
GET/sessionAlle Sitzungen auflistenGibt Session[] zurück
POST/sessionNeue Sitzung erstellenbody: { parentID?, title? }, gibt Session zurück
GET/session/statusSitzungsstatus für alle Sitzungen abrufenGibt { [sessionID: string]: SessionStatus } zurück
GET/session/:idSitzungsdetails abrufenGibt Session zurück
DELETE/session/:idSitzung und alle Daten löschenGibt boolean zurück
PATCH/session/:idSitzungseigenschaften aktualisierenbody: { title? }, gibt Session zurück
GET/session/:id/childrenKind-Sitzungen einer Sitzung abrufenGibt Session[] zurück
GET/session/:id/todoTodo-Liste für Sitzung abrufenGibt Todo[] zurück
POST/session/:id/initApp analysieren und AGENTS.md erstellenbody: { messageID, providerID, modelID }, gibt boolean zurück
POST/session/:id/forkBestehende Sitzung bei Nachricht forkenbody: { messageID? }, gibt Session zurück
POST/session/:id/abortLaufende Sitzung abbrechenGibt boolean zurück
POST/session/:id/shareSitzung teilenGibt Session zurück
DELETE/session/:id/shareSitzungsfreigabe aufhebenGibt Session zurück
GET/session/:id/diffDiff für diese Sitzung abrufenquery: messageID?, gibt FileDiff[] zurück
POST/session/:id/summarizeSitzung zusammenfassenbody: { providerID, modelID }, gibt boolean zurück
POST/session/:id/revertNachricht rückgängig machenbody: { messageID, partID? }, gibt boolean zurück
POST/session/:id/unrevertAlle rückgängig gemachten Nachrichten wiederherstellenGibt boolean zurück
POST/session/:id/permissions/:permissionIDAuf Berechtigungsanfrage antwortenbody: { response, remember? }, gibt boolean zurück

Nachrichten

MethodePfadBeschreibungHinweise
GET/session/:id/messageNachrichten in Sitzung auflistenquery: limit?, gibt { info: Message, parts: Part[] }[] zurück
POST/session/:id/messageNachricht senden und auf Antwort wartenbody: { messageID?, model?, agent?, noReply?, system?, tools?, parts }, gibt { info: Message, parts: Part[] } zurück
GET/session/:id/message/:messageIDNachrichtendetails abrufenGibt { info: Message, parts: Part[] } zurück
POST/session/:id/prompt_asyncNachricht asynchron senden (ohne Warten)body: wie /session/:id/message, gibt 204 No Content zurück
POST/session/:id/commandSlash-Befehl ausführenbody: { messageID?, agent?, model?, command, arguments }, gibt { info: Message, parts: Part[] } zurück
POST/session/:id/shellShell-Befehl ausführenbody: { agent, model?, command }, gibt { info: Message, parts: Part[] } zurück

Befehle

MethodePfadBeschreibungAntwort
GET/commandAlle Befehle auflistenCommand[]

Dateien

MethodePfadBeschreibungAntwort
GET/find?pattern=<pat>Text in Dateien suchenArray von Match-Objekten mit path, lines, line_number, absolute_offset, submatches
GET/find/file?query=<q>Dateien und Verzeichnisse nach Namen findenstring[] (Pfade)
GET/find/symbol?query=<q>Workspace-Symbole findenSymbol[]
GET/file?path=<path>Dateien und Verzeichnisse auflistenFileNode[]
GET/file/content?path=<p>Datei lesenFileContent
GET/file/statusStatus für verfolgte Dateien abrufenFile[]

/find/file Query-Parameter

  • query (erforderlich) — Suchstring (Fuzzy-Match)
  • type (optional) — Ergebnisse auf "file" oder "directory" beschränken
  • directory (optional) — Projekt-Root für Suche überschreiben
  • limit (optional) — Max. Ergebnisse (1–200)
  • dirs (optional) — Legacy-Flag ("false" gibt nur Dateien zurück)

Tools (Experimentell)

MethodePfadBeschreibungAntwort
GET/experimental/tool/idsAlle Tool-IDs auflistenToolIDs
GET/experimental/tool?provider=<p>&model=<m>Tools mit JSON-Schemas für Modell auflistenToolList

LSP, Formatierer & MCP

MethodePfadBeschreibungAntwort
GET/lspLSP-Server-Status abrufenLSPStatus[]
GET/formatterFormatierer-Status abrufenFormatterStatus[]
GET/mcpMCP-Server-Status abrufen{ [name: string]: MCPStatus }
POST/mcpMCP-Server dynamisch hinzufügenbody: { name, config }, gibt MCP-Status-Objekt zurück

Agenten

MethodePfadBeschreibungAntwort
GET/agentAlle verfügbaren Agenten auflistenAgent[]

Logging

MethodePfadBeschreibungAntwort
POST/logLog-Eintrag schreiben. Body: { service, level, message, extra? }boolean

TUI

MethodePfadBeschreibungAntwort
POST/tui/append-promptText an Prompt anhängenboolean
POST/tui/open-helpHilfe-Dialog öffnenboolean
POST/tui/open-sessionsSitzungsauswahl öffnenboolean
POST/tui/open-themesThemenauswahl öffnenboolean
POST/tui/open-modelsModellauswahl öffnenboolean
POST/tui/submit-promptAktuellen Prompt absendenboolean
POST/tui/clear-promptPrompt leerenboolean
POST/tui/execute-commandBefehl ausführen ({ command })boolean
POST/tui/show-toastToast anzeigen ({ title?, message, variant })boolean
GET/tui/control/nextAuf nächste Steuerungsanfrage wartenSteuerungsanfrage-Objekt
POST/tui/control/responseAuf Steuerungsanfrage antworten ({ body })boolean

Auth

MethodePfadBeschreibungAntwort
PUT/auth/:idAuthentifizierungsdaten setzen. Body muss Anbieter-Schema entsprechenboolean

Events

MethodePfadBeschreibungAntwort
GET/eventServer-sent Events Stream. Erstes Event ist server.connected, dann Bus-EventsServer-sent Events Stream

Docs

MethodePfadBeschreibungAntwort
GET/docOpenAPI 3.1-SpezifikationHTML-Seite mit OpenAPI-Spezifikation