Gå til indhold

Server

Samhandle med opencode-server over HTTP.

Kommandoen opencode serve kjører en hodeløs HTTP-server som avslører et OpenAPI-endepunkt som en opencode-klient kan bruge.


Brug

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

Alternativer

FlaggBeskrivelseStandard
--portPort at lytte på4096
--hostnameVertsnavn at lytte på127.0.0.1
--mdnsAktiver mDNS-oppdagelsefalse
--mdns-domainEgendefinert domenenavn for mDNS-tjenesteopencode.local
--corsYtterligere nettleseropprinnelse for at tillate[]

--cors kan passeres flere ganger:

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

Autentisering

Sett OPENCODE_SERVER_PASSWORD for at beskytte serveren med HTTP grunntilføjende autentisering. Brugernavnet er standard til opencode, eller sett OPENCODE_SERVER_USERNAME for at overstyre det. Dette gjelder både opencode serve og opencode web.

Terminal window
OPENCODE_SERVER_PASSWORD=your-password opencode serve

Slik fungerer det

Når du kjører opencode starter den en TUI og en server. Der TUI er klient som snakker med serveren. Serveren viser en OpenAPI 3.1-spesifikasjon endepunkt. Dette endepunktet bruges også til at generere en SDK.

Denne arkitekturen lar opencode støtte flere klienter og lar deg samhandle med opencode programmatisk.

Du kan kjøre opencode serve for at starte en frittstående server. Hvis du har opencode TUI kjører, vil opencode serve starte en ny server.


Koble til en eksisterende server

Når du starter TUI, tildeler den tilfeldig en port og vertsnavn. Du kan i stedet sende inn --hostname og --port flagg. Brug deretter denne til at koble til serveren.

/tui endepunktet kan bruges til at kjøre TUI gjennom serveren. Du kan for eksempel forhåndsutfylle eller kjøre en forespørsel. Dette oppsettet bruges av OpenCode IDE plugins.


Spes

Serveren publiserer en OpenAPI 3.1-spesifikasjon som kan vises på:

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

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


APIer

OpenCode-serveren viser følgende APIer.


Globalt

MetodeStiBeskrivelseSvar
GET/global/healthFå serverhelse og versjon{ healthy: true, version: string }
GET/global/eventFå globale hendelser (SSE strøm)Eventstrøm

Prosjekt

MetodeStiBeskrivelseSvar
GET/projectListe over alle prosjekterProsjekt[]
GET/project/currentFå det nåværende prosjektetProsjekt

Bane og VCS

MetodeStiBeskrivelseSvar
GET/pathFå nuværende banePath
GET/vcsFå VCS info for nuværende prosjektVcsInfo

Forekomst

MetodeStiBeskrivelseSvar
POST/instance/disposeKast nuværende forekomstboolean

Konfig

MetodeStiBeskrivelseSvar
GET/configFå konfigurasjonsinformasjonConfig
PATCH/configOpdater konfigurasjonConfig
GET/config/providersListe leverandører og standardmodeller{ providers: Provider[], default: { [key: string]: string } }

Leverandør

MetodeStiBeskrivelseSvar
GET/providerListe alle leverandører{ all: Provider[], default: {...}, connected: string[] }
GET/provider/authFå leverandørautentiseringsmetoder{ [providerID: string]: ProviderAuthMethod[] }
POST/provider/{id}/oauth/authorizeAutoriser en leverandør ved at bruge OAuthProviderAuthAuthorization
POST/provider/{id}/oauth/callbackHåndtere OAuth-callback for en leverandørboolean

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/:idSlett en session og alle dens dataReturnerer boolean
PATCH/session/:idOpdater sessionegenskaperbody: { title? }, returnerer Session
GET/session/:id/childrenFå en sessions barnesessionerReturnerer Session[]
GET/session/:id/todoFå to-doslisten for en sessionReturnerer Todo[]
POST/session/:id/initAnalyser appen og lag AGENTS.mdbody: { messageID, providerID, modelID }, returnerer boolean
POST/session/:id/forkFork en eksisterende session ved en meldingbody: { messageID? }, returnerer Session
POST/session/:id/abortAvbryt en løpesessionReturnerer boolean
POST/session/:id/shareDel en sessionReturnerer Session
DELETE/session/:id/shareSlutt at dele en sessionReturnerer Session
GET/session/:id/diffFå diff for denne sessionenspørring: messageID?, returnerer FileDiff[]
POST/session/:id/summarizeOppsummer sessionenbody: { providerID, modelID }, returnerer boolean
POST/session/:id/revertTilbakestill en meldingbody: { messageID, partID? }, returnerer boolean
POST/session/:id/unrevertGjenopret alle nulstillete meldingerReturnerer boolean
POST/session/:id/permissions/:permissionIDSvar på en tillatelsesforespørselbody: { response, remember? }, returnerer boolean

Meldinger

MetodeStiBeskrivelseNoter
GET/session/:id/messageListe meldinger i en sessionspørring: limit?, returnerer { info: Message, parts: Part[]}[]
POST/session/:id/messageSend en melding og vent på svarbody: { messageID?, model?, agent?, noReply?, system?, tools?, parts }, returnerer { info: Message, parts: Part[]}
GET/session/:id/message/:messageIDFå meldingsdetaljerReturnerer { info: Message, parts: Part[]}
POST/session/:id/prompt_asyncSend en melding asynkront (ingen vent)body: samme som /session/:id/message, returnerer 204 No Content
POST/session/:id/commandUtfør en skråstrek-kommandobody: { messageID?, agent?, model?, command, arguments }, returnerer { info: Message, parts: Part[]}
POST/session/:id/shellKjør en shell-kommandobody: { agent, model?, command }, returnerer { info: Message, parts: Part[]}

Kommandoer

MetodeStiBeskrivelseSvar
GET/commandListe alle kommandoerKommando[]

Filer

MetodeStiBeskrivelseSvar
GET/find?pattern=<pat>Søk etter tekst i filerEn rekke matchobjekter med path, lines, line_number, absolute_offset, submatches
GET/find/file?query=<q>Finn filer og kataloger etter navnstring[] (baner)
GET/find/symbol?query=<q>Finn arbeidsområdesymbolerSymbol[]
GET/file?path=<path>Liste filer og katalogerFilNode[]
GET/file/content?path=<p>Les en filFilinnhold
GET/file/statusFå status for sporede filerFil[]

/find/file spørringsparametere

  • query (obligatorisk) - søkestreng (uklar samsvar)
  • type (valgfritt) - begrense resultatene til "file" eller "directory"
  • directory (valgfritt) — overstyr prosjektroten for søket
  • limit (valgfritt) - maks. resultater (1–200)
  • dirs (valgfritt) - eldre flagg ("false" returnerer kun filer)

Verktøy (eksperimentelt)

MetodeStiBeskrivelseSvar
GET/experimental/tool/idsVis alle verktøy-ID-erToolIDs
GET/experimental/tool?provider=<p>&model=<m>List verktøy med JSON-skjemaer for en modellToolList

LSP, formattere og MCP

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

Agenter

MetodeStiBeskrivelseSvar
GET/agentListe alle tilgængelige agenterAgent[]

Logging

MetodeStiBeskrivelseSvar
POST/logSkriv loggoppføring. Brødtekst: { service, level, message, extra? }boolean

TUI

MetodeStiBeskrivelseSvar
POST/tui/append-promptLegg til tekst i ledetekstenboolean
POST/tui/open-helpÅpne hjelpedialogenboolean
POST/tui/open-sessionsÅpne sessionvelgerenboolean
POST/tui/open-themesÅpne temavelgerenboolean
POST/tui/open-modelsÅpne modellvelgerenboolean
POST/tui/submit-promptSend inn nuværende ledetekstboolean
POST/tui/clear-promptFjern ledetekstenboolean
POST/tui/execute-commandUtfør en kommando ({ command })boolean
POST/tui/show-toastVis toast ({ title?, message, variant })boolean
GET/tui/control/nextVent på neste kontrollforespørselKontrollforespørselsobjekt
POST/tui/control/responseSvar på en kontrollforespørsel ({ body })boolean

Auth

MetodeStiBeskrivelseSvar
PUT/auth/:idAngi autentiseringslegitimasjon. Brødtekst må samsvare med leverandørskjemaboolean

Hendelser

MetodeStiBeskrivelseSvar
GET/eventServer-sendte hendelsesstrøm. Første arrangement er server.connected, deretter bussarrangementerServer-sendte hendelser stream

Dokumenter

MetodeStiBeskrivelseSvar
GET/docOpenAPI 3.1-spesifikasjonHTML side med OpenAPI-spesifikasjon