Zum Inhalt springen

Server

Mit dem opencode-Server ber HTTP interagieren.

Der Befehl opencode serve fhrt einen kopflosen HTTP-Server aus, der einen OpenAPI-Endpunkt bereitstellt, den ein opencode-Client verwenden kann.


Verwendung

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

Optionen

FlagDescriptionDefault
--portPort fr den Listen4096
--hostnameHostname fr den Listen127.0.0.1
--mdnsmDNS-Entdeckung aktivierenfalse
--corsZustzliche Browser-Originale zulassen[]

--cors kann mehrfach bergeben werden:

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

Funktionsweise

Wenn Sie opencode ausfhren, wird ein TUI und ein Server gestartet. Das TUI ist der Client, der mit dem Server kommuniziert. Der Server stellt einen OpenAPI 3.1-Spezifikations-Endpunkt bereit. Dieser Endpunkt wird auch verwendet, um ein SDK zu generieren.

Diese Architektur ermglicht es opencode, mehrere Clients zu untersttzen und es Ihnen zu ermglichen, programmgesteuert mit opencode zu interagieren.

Sie knnen opencode serve ausfhren, um einen eigenstndigen Server zu starten. Wenn der opencode-TUI luft, wird opencode serve einen neuen Server starten.


Mit einem vorhandenen Server verbinden

Wenn Sie das TUI starten, wird zufllig ein Port und ein Hostname zugewiesen. Sie knnen stattdessen die --hostname und --port Flags bergeben. Verwenden Sie diese dann, um eine Verbindung mit seinem Server herzustellen.

Der /tui-Endpunkt kann verwendet werden, um das TUI ber den Server zu steuern. Sie knnen beispielsweise einen Prompt vorab ausfllen oder ausfhren. Dieses Setup wird von den OpenCode-IDE-Plugins verwendet.


Spezifikation

Der Server verffentlicht eine OpenAPI 3.1-Spezifikation, die unter folgender Adresse angezeigt werden kann:

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

Zum Beispiel http://localhost:4096/doc. Verwenden Sie die Spezifikation, um Clients zu generieren oder Anforderungs- und Antworttypen zu berprfen. Oder anzeigen Sie sie in einem Swagger-Explorer.


APIs

Der opencode-Server stellt die folgenden APIs bereit.


Global

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

Project

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

Path & VCS

MethodPathDescriptionResponse
GET/pathAktuellen Pfad abrufenPath
GET/vcsVCS-Informationen fr das aktuelle Projekt abrufenVcsInfo

Instance

MethodPathDescriptionResponse
POST/instance/disposeAktuelle Instanz entsorgenboolean

Config

MethodPathDescriptionResponse
GET/configKonfigurations-Informationen abrufenConfig
PATCH/configKonfiguration aktualisierenConfig
GET/config/providersAnbieter und Standardmodelle auflisten{ providers: Provider[], default: { [key: string]: string } }

Provider

MethodPathDescriptionResponse
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 fr einen Anbieter verarbeitenboolean

Sessions

MethodPathDescriptionNotes
GET/sessionAlle Sitzungen auflistenGibt Session[] zurck
POST/sessionNeue Sitzung erstellenbody: { parentID?, title? }, gibt Session zurck
GET/session/statusSitzungsstatus fr alle Sitzungen abrufenGibt { [sessionID: string]: SessionStatus } zurck
GET/session/:idSitzungsdetails abrufenGibt Session zurck
DELETE/session/:idSitzung und alle ihre Daten lschenGibt boolean zurck
PATCH/session/:idSitzungseigenschaften aktualisierenbody: { title? }, gibt Session zurck
GET/session/:id/childrenKindersitzungen einer Sitzung abrufenGibt Session[] zurck
GET/session/:id/todoTodo-Liste fr eine Sitzung abrufenGibt Todo[] zurck
POST/session/:id/initApp analysieren und AGENTS.md erstellenbody: { messageID, providerID, modelID }, gibt boolean zurck
POST/session/:id/forkVorhandene Sitzung bei einer Nachricht forkenbody: { messageID? }, gibt Session zurck
POST/session/:id/abortLaufende Sitzung abbrechenGibt boolean zurck
POST/session/:id/shareSitzung teilenGibt Session zurck
DELETE/session/:id/shareFreigabe der Sitzung aufhebenGibt Session zurck
GET/session/:id/diffDiff fr diese Sitzung abrufenquery: messageID?, gibt FileDiff[] zurck
POST/session/:id/summarizeSitzung zusammenfassenbody: { providerID, modelID }, gibt boolean zurck
POST/session/:id/revertNachricht zurcknehmenbody: { messageID, partID? }, gibt boolean zurck
POST/session/:id/unrevertAlle zurckgenommenen Nachrichten wiederherstellenGibt boolean zurck
POST/session/:id/permissions/:permissionIDAuf eine Berechtigungsanfrage antwortenbody: { response, remember? }, gibt boolean zurck

Messages

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

Commands

MethodPathDescriptionResponse
GET/commandAlle Befehle auflistenCommand[]

Files

MethodPathDescriptionResponse
GET/find?pattern=<pat>Text in Dateien suchenArray von bereinstimmungsobjekten mit path, lines, line_number, absolute_offset, submatches
GET/find/file?query=<q>Dateien und Verzeichnisse nach Name findenstring[] (Pfade)
GET/find/symbol?query=<q>Arbeitsbereich-Symbole findenSymbol[]
GET/file?path=<path>Dateien und Verzeichnisse auflistenFileNode[]
GET/file/content?path=<p>Eine Datei lesenFileContent
GET/file/statusStatus fr verfolgte Dateien abrufenFile[]

/find/file Abfrageparameter

  • query (erforderlich) - Suchzeichenkette (Fuzzy-Match)
  • type (optional) - Ergebnisse auf "file" oder "directory" beschrnken
  • directory (optional) - Stammverzeichnis fr die Suche berschreiben
  • limit (optional) - Max Ergebnisse (1-200)
  • dirs (optional) - veraltetes Flag ("false" gibt nur Dateien zurck)

Tools (Experimental)

MethodPathDescriptionResponse
GET/experimental/tool/idsAlle Tool-IDs auflistenToolIDs
GET/experimental/tool?provider=<p>&model=<m>Tools mit JSON-Schemas fr ein Modell auflistenToolList

LSP, Formatters & MCP

MethodPathDescriptionResponse
GET/lspLSP-Server-Status abrufenLSPStatus[]
GET/formatterFormatter-Status abrufenFormatterStatus[]
GET/mcpMCP-Server-Status abrufen{ [name: string]: MCPStatus }
POST/mcpMCP-Server dynamisch hinzufgenbody: { name, config }, gibt MCP-Status-Objekt zurck

Agents

MethodPathDescriptionResponse
GET/agentAlle verfgbaren Agents auflistenAgent[]

Logging

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

TUI

MethodPathDescriptionResponse
POST/tui/append-promptText an Prompt anhngenboolean
POST/tui/open-helpHilfe-Dialog ffnenboolean
POST/tui/open-sessionsSitzungs-Auswahl ffnenboolean
POST/tui/open-themesThemen-Auswahl ffnenboolean
POST/tui/open-modelsModellauswahl ffnenboolean
POST/tui/submit-promptAktuellen Prompt absendenboolean
POST/tui/clear-promptPrompt lschenboolean
POST/tui/execute-commandBefehl ausfhren ({ command })boolean
POST/tui/show-toastToast anzeigen ({ title?, message, variant })boolean
GET/tui/control/nextAuf nchste Steueranfrage wartenSteueranfrage-Objekt
POST/tui/control/responseAuf Steueranfrage antworten ({ body })boolean

Auth

MethodPathDescriptionResponse
PUT/auth/:idAuthentifizierungs-Anmeldedaten festlegen. Body muss zum Anbieter-Schema passenboolean

Events

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

Docs

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