Gå til innholdet

Tjener

Samhandle med OpenCode-tjener over HTTP.

Kommandoen opencode serve kjører en hodeløs HTTP-server som eksponerer et OpenAPI-endepunkt som en OpenCode-klient kan bruke.


Bruk

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

Alternativer

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

--cors kan angis flere ganger:

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

Autentisering

Sett OPENCODE_SERVER_PASSWORD for å beskytte serveren med HTTP grunnleggende autentisering. Brukernavnet er satt til opencode som standard, eller sett OPENCODE_SERVER_USERNAME for å 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 brukes også til å 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 å 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. Bruk deretter denne til å koble til serveren.

/tui endepunktet kan brukes til å kjøre TUI gjennom serveren. Du kan for eksempel forhåndsutfylle eller kjøre en forespørsel. Dette oppsettet brukes 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. Bruk spesifikasjonen til å 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/projectList alle prosjekterProject[]
GET/project/currentHent gjeldende prosjektProject

Bane og VCS

MetodeStiBeskrivelseSvar
GET/pathHent gjeldende banePath
GET/vcsHent VCS-info for gjeldende prosjektVcsInfo

Forekomst

MetodeStiBeskrivelseSvar
POST/instance/disposeAvslutt gjeldende forekomstboolean

Konfigurasjon

MetodeStiBeskrivelseSvar
GET/configHent konfigurasjonsinformasjonConfig
PATCH/configOppdater konfigurasjonConfig
GET/config/providersList leverandører og standardmodeller{ providers: Provider[], default: { [key: string]: string } }

Leverandør

MetodeStiBeskrivelseSvar
GET/providerList alle leverandører{ all: Provider[], default: {...}, connected: string[] }
GET/provider/authHent autentiseringsmetoder for leverandør{ [providerID: string]: ProviderAuthMethod[] }
POST/provider/{id}/oauth/authorizeAutoriser en leverandør ved å bruke OAuthProviderAuthAuthorization
POST/provider/{id}/oauth/callbackHåndter OAuth-tilbakeringing for en leverandørboolean

Sesjoner

MetodeStiBeskrivelseMerknader
GET/sessionList alle økterReturnerer Session[]
POST/sessionOpprett en ny øktbody: { parentID?, title? }, returnerer Session
GET/session/statusHent øktstatus for alle økterReturnerer { [sessionID: string]: SessionStatus }
GET/session/:idHent øktdetaljerReturnerer Session
DELETE/session/:idSlett en økt og alle dens dataReturnerer boolean
PATCH/session/:idOppdater øktegenskaperbody: { title? }, returnerer Session
GET/session/:id/childrenHent en økts barneøkterReturnerer Session[]
GET/session/:id/todoHent gjøremålslisten for en øktReturnerer Todo[]
POST/session/:id/initAnalyser appen og lag AGENTS.mdbody: { messageID, providerID, modelID }, returnerer boolean
POST/session/:id/forkFork en eksisterende økt ved en meldingbody: { messageID? }, returnerer Session
POST/session/:id/abortAvbryt en kjørende øktReturnerer boolean
POST/session/:id/shareDel en øktReturnerer Session
DELETE/session/:id/shareSlutt å dele en øktReturnerer Session
GET/session/:id/diffHent diff for denne øktenspørring: messageID?, returnerer FileDiff[]
POST/session/:id/summarizeOppsummer øktenbody: { providerID, modelID }, returnerer boolean
POST/session/:id/revertTilbakestill en meldingbody: { messageID, partID? }, returnerer boolean
POST/session/:id/unrevertGjenopprett alle tilbakestilte meldingerReturnerer boolean
POST/session/:id/permissions/:permissionIDSvar på en tillatelsesforespørselbody: { response, remember? }, returnerer boolean

Meldinger

MetodeStiBeskrivelseMerknader
GET/session/:id/messageList meldinger i en øktspø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/:messageIDHent 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 slash-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/commandList alle kommandoerCommand[]

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 symboler i arbeidsområdetSymbol[]
GET/file?path=<path>List filer og katalogerFileNode[]
GET/file/content?path=<p>Les en filFileContent
GET/file/statusHent status for sporede filerFile[]

/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/lspHent LSP-serverstatusLSPStatus[]
GET/formatterHent formateringsstatusFormatterStatus[]
GET/mcpHent MCP-serverstatus{ [name: string]: MCPStatus }
POST/mcpLegg til MCP-server dynamiskbody: { name, config }, returnerer MCP statusobjekt

Agenter

MetodeStiBeskrivelseSvar
GET/agentList alle tilgjengelige agenterAgent[]

Logging

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

TUI

MetodeStiBeskrivelseSvar
POST/tui/append-promptLegg til tekst i promptenboolean
POST/tui/open-helpÅpne hjelpedialogenboolean
POST/tui/open-sessionsÅpne øktvelgerenboolean
POST/tui/open-themesÅpne temavelgerenboolean
POST/tui/open-modelsÅpne modellvelgerenboolean
POST/tui/submit-promptSend inn gjeldende promptboolean
POST/tui/clear-promptTøm promptenboolean
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 autentiseringsinformasjon. Body må samsvare med leverandørskjemaboolean

Hendelser

MetodeStiBeskrivelseSvar
GET/eventStrøm av server-sendte hendelser. Første hendelse er server.connected, deretter busshendelserStrøm av server-sendte hendelser

Dokumentasjon

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