Gå til innholdet

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 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 for å 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 å beskytte serveren med HTTP grunnleggende autentisering. Brukernavnet er standard til opencode, 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/projectListe over alle prosjekterProject[]
GET/project/currentFå det nåværende prosjektetProject

Bane og VCS

MetodeStiBeskrivelseSvar
GET/pathFå gjeldende banePath
GET/vcsFå VCS info for gjeldende prosjektVcsInfo

Forekomst

MetodeStiBeskrivelseSvar
POST/instance/disposeKast gjeldende forekomstboolean

Konfig

MetodeStiBeskrivelseSvar
GET/configFå konfigurasjonsinformasjonConfig
PATCH/configOppdater 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 å bruke OAuthProviderAuthAuthorization
POST/provider/{id}/oauth/callbackHåndtere OAuth-tilbakeringing for en leverandørboolean

Sesjoner

MetodeStiBeskrivelseMerknader
GET/sessionListe alle økterReturnerer Session[]
POST/sessionOpprett en ny øktbody: { parentID?, title? }, returnerer Session
GET/session/statusFå øktstatus for alle økterReturnerer { [sessionID: string]: SessionStatus }
GET/session/:idFå øktdetaljerReturnerer Session
DELETE/session/:idSlett en økt og alle dens dataReturnerer boolean
PATCH/session/:idOppdater øktegenskaperbody: { title? }, returnerer Session
GET/session/:id/childrenFå en økts barneøkterReturnerer Session[]
GET/session/:id/todoFå 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 løpeøktReturnerer boolean
POST/session/:id/shareDel en øktReturnerer Session
DELETE/session/:id/shareSlutt å dele en øktReturnerer Session
GET/session/:id/diffFå 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/messageListe 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/: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 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 arbeidsområdesymbolerSymbol[]
GET/file?path=<path>Liste filer og katalogerFileNode[]
GET/file/content?path=<p>Les en filFileContent
GET/file/statusFå 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/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 tilgjengelige 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 øktvelgerenboolean
POST/tui/open-themesÅpne temavelgerenboolean
POST/tui/open-modelsÅpne modellvelgerenboolean
POST/tui/submit-promptSend inn gjeldende 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

Dokumentasjon

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