Gå til indhold

Server

Interager med opencode-serveren over HTTP.

Kommandoen opencode serve kører en hovedløs HTTP-server, som afslører et OpenAPI-endpoint, som en opencode-klient kan bruge.


Brug

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

Indstillinger

FlagBeskrivelseStandard
--portPort at lytte på4096
--hostnameVærtsnavn at lytte på127.0.0.1
--mdnsAktiver mDNS-opdagelsefalse
--mdns-domainBrugerdefineret domænenavn for mDNS-tjenesteopencode.local
--corsYderligere browseroprindelse for at tillade[]

--cors kan angives flere gange:

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

Godkendelse

Indstil OPENCODE_SERVER_PASSWORD for at beskytte serveren med HTTP grundlæggende godkendelse. Brugernavnet er som standard opencode, eller indstil OPENCODE_SERVER_USERNAME for at tilsidesætte det. Dette gælder både opencode serve og opencode web.

Terminal window
OPENCODE_SERVER_PASSWORD=your-password opencode serve

Sådan fungerer det

Når du kører opencode starter den en TUI og en server. Hvor TUI er klient som taler med serveren. Serveren viser en OpenAPI 3.1-specifikation endpoint. Dette endpoint bruges også til at generere en SDK.

Denne arkitektur lader opencode understøtte flere klienter og lader dig interagere med opencode programmatisk.

Du kan køre opencode serve for at starte en selvstændig server. Hvis du har opencode TUI kørende, vil opencode serve starte en ny server.


Opret forbindelse til en eksisterende server

Når du starter TUI, tildeler den tilfældigt en port og et værtsnavn. Du kan i stedet sende --hostname og --port flagene. Brug derefter disse til at forbinde til serveren.

/tui endpointet kan bruges til at køre TUI gennem serveren. Du kan for eksempel forududfylde eller køre en forespørgsel. Denne opsætning bruges af OpenCode IDE plugins.


Specifikation

Serveren publicerer en OpenAPI 3.1-specifikation som kan vises på:

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

For eksempel http://localhost:4096/doc. Brug specifikationen til at generere klienter eller inspicere forespørgsels- og svartyper. Eller se den i en Swagger-utforsker.


API’er

OpenCode-serveren viser følgende API’er.


Globalt

MetodeStiBeskrivelseSvar
GET/global/healthFå serverhelbred og version{ healthy: true, version: string }
GET/global/eventFå globale hændelser (SSE strøm)Eventstrøm

Projekt

MetodeStiBeskrivelseSvar
GET/projectListe over alle projekterProject[]
GET/project/currentFå det nuværende projektProject

Sti og VCS

MetodeStiBeskrivelseSvar
GET/pathFå nuværende stiPath
GET/vcsFå VCS info for nuværende projektVcsInfo

Instans

MetodeStiBeskrivelseSvar
POST/instance/disposeKassér nuværende instansboolean

Konfiguration

MetodeStiBeskrivelseSvar
GET/configFå konfigurationsinformationConfig
PATCH/configOpdater konfigurationConfig
GET/config/providersListe udbydere og standardmodeller{ providers: Provider[], default: { [key: string]: string } }

Udbyder

MetodeStiBeskrivelseSvar
GET/providerListe alle udbydere{ all: Provider[], default: {...}, connected: string[] }
GET/provider/authFå udbydergodkendelsesmetoder{ [providerID: string]: ProviderAuthMethod[] }
POST/provider/{id}/oauth/authorizeAutoriser en udbyder ved at bruge OAuthProviderAuthAuthorization
POST/provider/{id}/oauth/callbackHåndter OAuth-callback for en udbyderboolean

Sessioner

MetodeStiBeskrivelseNoter
GET/sessionListe alle sessionerReturnerer Session[]
POST/sessionOpret en ny sessionbody: { parentID?, title? }, returnerer Session
GET/session/statusFå sessionstatus for alle sessionerReturnerer { [sessionID: string]: SessionStatus }
GET/session/:idFå sessiondetaljerReturnerer Session
DELETE/session/:idSlet en session og alle dens dataReturnerer boolean
PATCH/session/:idOpdater sessionegenskaberbody: { title? }, returnerer Session
GET/session/:id/childrenFå en sessions undersessionerReturnerer Session[]
GET/session/:id/todoFå to-do-listen for en sessionReturnerer Todo[]
POST/session/:id/initAnalyser appen og lav AGENTS.mdbody: { messageID, providerID, modelID }, returnerer boolean
POST/session/:id/forkFork en eksisterende session ved en beskedbody: { messageID? }, returnerer Session
POST/session/:id/abortAfbryd en kørende sessionReturnerer boolean
POST/session/:id/shareDel en sessionReturnerer Session
DELETE/session/:id/shareStop med at dele en sessionReturnerer Session
GET/session/:id/diffFå diff for denne sessionquery: messageID?, returnerer FileDiff[]
POST/session/:id/summarizeOpsummér sessionenbody: { providerID, modelID }, returnerer boolean
POST/session/:id/revertTilbagestil en beskedbody: { messageID, partID? }, returnerer boolean
POST/session/:id/unrevertGendan alle nulstillede beskederReturnerer boolean
POST/session/:id/permissions/:permissionIDSvar på en tilladelsesforespørgselbody: { response, remember? }, returnerer boolean

Beskeder

MetodeStiBeskrivelseNoter
GET/session/:id/messageListe beskeder i en sessionquery: limit?, returnerer { info: Message, parts: Part[]}[]
POST/session/:id/messageSend en besked og vent på svarbody: { messageID?, model?, agent?, noReply?, system?, tools?, parts }, returnerer { info: Message, parts: Part[]}
GET/session/:id/message/:messageIDFå beskeddetaljerReturnerer { info: Message, parts: Part[]}
POST/session/:id/prompt_asyncSend en besked asynkront (ingen vent)body: samme som /session/:id/message, returnerer 204 No Content
POST/session/:id/commandUdfør en skråstregskommandobody: { messageID?, agent?, model?, command, arguments }, returnerer { info: Message, parts: Part[]}
POST/session/:id/shellKør en shell-kommandobody: { agent, model?, command }, returnerer { info: Message, parts: Part[]}

Kommandoer

MetodeStiBeskrivelseSvar
GET/commandListe alle kommandoerCommand[]

Filer

MetodeStiBeskrivelseSvar
GET/find?pattern=<pat>Søg efter tekst i filerEn række matchobjekter med path, lines, line_number, absolute_offset, submatches
GET/find/file?query=<q>Find filer og mapper efter navnstring[] (stier)
GET/find/symbol?query=<q>Find arbejdsområdesymbolerSymbol[]
GET/file?path=<path>Liste filer og mapperFileNode[]
GET/file/content?path=<p>Læs en filFileContent
GET/file/statusFå status for sporede filerFile[]

/find/file forespørgselsparametre

  • query (obligatorisk) - søgestreng (fuzzy match)
  • type (valgfrit) - begræns resultaterne til "file" eller "directory"
  • directory (valgfrit) — overstyr projektroden for søget
  • limit (valgfrit) - maks. resultater (1–200)
  • dirs (valgfrit) - ældre flag ("false" returnerer kun filer)

Værktøjer (eksperimentelt)

MetodeStiBeskrivelseSvar
GET/experimental/tool/idsVis alle værktøjs-ID’erToolIDs
GET/experimental/tool?provider=<p>&model=<m>Liste værktøjer med JSON-skemaer for en modelToolList

LSP, formattere og MCP

MetodeStiBeskrivelseSvar
GET/lspFå LSP serverstatusLSPStatus[]
GET/formatterFå formateringsstatusFormatterStatus[]
GET/mcpFå MCP serverstatus{ [name: string]: MCPStatus }
POST/mcpTilføj MCP server dynamiskbody: { name, config }, returnerer MCP statusobjekt

Agenter

MetodeStiBeskrivelseSvar
GET/agentListe alle tilgængelige agenterAgent[]

Logning

MetodeStiBeskrivelseSvar
POST/logSkriv logpost. Body: { service, level, message, extra? }boolean

TUI

MetodeStiBeskrivelseSvar
POST/tui/append-promptTilføj tekst til promptenboolean
POST/tui/open-helpÅbn hjælp-dialogenboolean
POST/tui/open-sessionsÅbn sessionsvælgerenboolean
POST/tui/open-themesÅbn temavælgerenboolean
POST/tui/open-modelsÅbn modelvælgerenboolean
POST/tui/submit-promptIndsend nuværende promptboolean
POST/tui/clear-promptRyd promptenboolean
POST/tui/execute-commandUdfør en kommando ({ command })boolean
POST/tui/show-toastVis toast ({ title?, message, variant })boolean
GET/tui/control/nextVent på næste kontrolforespørgselKontrolforespørgselsobjekt
POST/tui/control/responseSvar på en kontrolforespørgsel ({ body })boolean

Godkendelse

MetodeStiBeskrivelseSvar
PUT/auth/:idAngiv godkendelsesoplysninger. Body skal matche udbyderskemaboolean

Hændelser

MetodeStiBeskrivelseSvar
GET/eventServer-sendt hændelsesstrøm. Første hændelse er server.connected, derefter bushændelserServer-sendt hændelsesstrøm

Dokumentation

MetodeStiBeskrivelseSvar
GET/docOpenAPI 3.1-specifikationHTML side med OpenAPI-specifikation