Back to Opencode

Tjener

packages/web/src/content/docs/nb/server.mdx

1.14.3918.5 KB
Original Source

import config from "../../../../config.mjs" export const typesUrl = ${config.github}/blob/dev/packages/sdk/js/src/gen/types.gen.ts

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


Bruk

bash
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:

bash
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.

bash
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.

:::tip Bruk OpenCode-serveren til å samhandle med OpenCode programmatisk. :::

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 prosjekter<a href={typesUrl}><code>Project[]</code></a>
GET/project/currentHent gjeldende prosjekt<a href={typesUrl}><code>Project</code></a>

Bane og VCS

MetodeStiBeskrivelseSvar
GET/pathHent gjeldende bane<a href={typesUrl}><code>Path</code></a>
GET/vcsHent VCS-info for gjeldende prosjekt<a href={typesUrl}><code>VcsInfo</code></a>

Forekomst

MetodeStiBeskrivelseSvar
POST/instance/disposeAvslutt gjeldende forekomstboolean

Konfigurasjon

MetodeStiBeskrivelseSvar
GET/configHent konfigurasjonsinformasjon<a href={typesUrl}><code>Config</code></a>
PATCH/configOppdater konfigurasjon<a href={typesUrl}><code>Config</code></a>
GET/config/providersList leverandører og standardmodeller{ providers: <a href={typesUrl}>Provider[]</a>, default: { [key: string]: string } }

Leverandør

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

Sesjoner

MetodeStiBeskrivelseMerknader
GET/sessionList alle økterReturnerer <a href={typesUrl}><code>Session[]</code></a>
POST/sessionOpprett en ny øktbody: { parentID?, title? }, returnerer <a href={typesUrl}><code>Session</code></a>
GET/session/statusHent øktstatus for alle økterReturnerer { [sessionID: string]: <a href={typesUrl}>SessionStatus</a> }
GET/session/:idHent øktdetaljerReturnerer <a href={typesUrl}><code>Session</code></a>
DELETE/session/:idSlett en økt og alle dens dataReturnerer boolean
PATCH/session/:idOppdater øktegenskaperbody: { title? }, returnerer <a href={typesUrl}><code>Session</code></a>
GET/session/:id/childrenHent en økts barneøkterReturnerer <a href={typesUrl}><code>Session[]</code></a>
GET/session/:id/todoHent gjøremålslisten for en øktReturnerer <a href={typesUrl}><code>Todo[]</code></a>
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 <a href={typesUrl}><code>Session</code></a>
POST/session/:id/abortAvbryt en kjørende øktReturnerer boolean
POST/session/:id/shareDel en øktReturnerer <a href={typesUrl}><code>Session</code></a>
DELETE/session/:id/shareSlutt å dele en øktReturnerer <a href={typesUrl}><code>Session</code></a>
GET/session/:id/diffHent diff for denne øktenspørring: messageID?, returnerer <a href={typesUrl}><code>FileDiff[]</code></a>
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: <a href={typesUrl}>Message</a>, parts: <a href={typesUrl}>Part[]</a>}[]
POST/session/:id/messageSend en melding og vent på svarbody: { messageID?, model?, agent?, noReply?, system?, tools?, parts }, returnerer { info: <a href={typesUrl}>Message</a>, parts: <a href={typesUrl}>Part[]</a>}
GET/session/:id/message/:messageIDHent meldingsdetaljerReturnerer { info: <a href={typesUrl}>Message</a>, parts: <a href={typesUrl}>Part[]</a>}
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: <a href={typesUrl}>Message</a>, parts: <a href={typesUrl}>Part[]</a>}
POST/session/:id/shellKjør en shell-kommandobody: { agent, model?, command }, returnerer { info: <a href={typesUrl}>Message</a>, parts: <a href={typesUrl}>Part[]</a>}

Kommandoer

MetodeStiBeskrivelseSvar
GET/commandList alle kommandoer<a href={typesUrl}><code>Command[]</code></a>

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ådet<a href={typesUrl}><code>Symbol[]</code></a>
GET/file?path=<path>List filer og kataloger<a href={typesUrl}><code>FileNode[]</code></a>
GET/file/content?path=<p>Les en fil<a href={typesUrl}><code>FileContent</code></a>
GET/file/statusHent status for sporede filer<a href={typesUrl}><code>File[]</code></a>

/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-er<a href={typesUrl}><code>ToolIDs</code></a>
GET/experimental/tool?provider=<p>&model=<m>List verktøy med JSON-skjemaer for en modell<a href={typesUrl}><code>ToolList</code></a>

LSP, formattere og MCP

MetodeStiBeskrivelseSvar
GET/lspHent LSP-serverstatus<a href={typesUrl}><code>LSPStatus[]</code></a>
GET/formatterHent formateringsstatus<a href={typesUrl}><code>FormatterStatus[]</code></a>
GET/mcpHent MCP-serverstatus{ [name: string]: <a href={typesUrl}>MCPStatus</a> }
POST/mcpLegg til MCP-server dynamiskbody: { name, config }, returnerer MCP statusobjekt

Agenter

MetodeStiBeskrivelseSvar
GET/agentList alle tilgjengelige agenter<a href={typesUrl}><code>Agent[]</code></a>

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