Przejdź do głównej zawartości

Serwer

Interakcja z serwerem opencode za pośrednictwem protokołu HTTP.

Komenda opencode serve uruchamia bezgłowy serwer HTTP, który udostępnia punkt końcowy OpenAPI, z którego może korzystać klient opencode.


Użycie

Okno terminala
opencode serve [--port <number>] [--hostname <string>] [--cors <origin>]

Opcje

FlagaOpisDomyślne
--portPort nasłuchiwania4096
--hostnameNazwa hosta do nasłuchiwania127.0.0.1
--mdnsWłącz wykrywanie mDNSfalse
--mdns-domainNiestandardowa nazwa domeny dla usługi mDNSopencode.local
--corsDodatkowe originy przeglądarki do dozwolenia[]

--cors można przekazać wiele razy:

Okno terminala
opencode serve --cors http://localhost:5173 --cors https://app.example.com

Uwierzytelnianie

Ustaw OPENCODE_SERVER_PASSWORD, aby chronić serwer za pomocą podstawowego uwierzytelniania HTTP. Domyślną nazwą użytkownika jest opencode lub ustaw OPENCODE_SERVER_USERNAME, aby ją zastąpić. Dotyczy to zarówno opencode serve, jak i opencode web.

Okno terminala
OPENCODE_SERVER_PASSWORD=your-password opencode serve

How it works

Kiedy uruchomisz opencode, uruchomi się TUI i serwer. Gdzie jest TUI klient komunikujący się z serwerem. Serwer udostępnia specyfikację OpenAPI 3.1 punkt końcowy. Ten punkt końcowy jest również używany do generowania SDK.

Ta architektura umożliwia obsługę wielu klientów przez opencode i programową interakcję z kodem otwartym.

Możesz uruchomić opencode serve, aby uruchomić samodzielny serwer. Jeśli masz opencode TUI działa, opencode serve uruchomi nowy serwer.


Połącz się z istniejącym serwerem

Po uruchomieniu TUI losowo przypisuje port i nazwę hosta. Zamiast tego możesz przekazać --hostname i --port flagi. Następnie użyj tego, aby połączyć się z serwerem.

Punktu końcowego /tui można użyć do sterowania TUI przez serwer. Można na przykład wstępnie wypełnić lub uruchomić monit. Ta konfiguracja jest używana przez wtyczki opencode IDE.


Spec

Serwer publikuje specyfikację OpenAPI 3.1, którą można obejrzeć pod adresem:

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

Na przykład http://localhost:4096/doc. Użyj specyfikacji, aby wygenerować klientów lub sprawdzić typy żądań i odpowiedzi. Możesz też wyświetlić go w eksploratorze Swagger.


APIs

Serwer opencode udostępnia następujące interfejsy API.


Global

MethodPathDescriptionResponse
GET/global/healthUzyskaj stan i wersję serwera{ healthy: true, version: string }
GET/global/eventGet global events (SSE stream)Event stream

Project

MethodPathDescriptionResponse
GET/projectLista wszystkich projektówProject[]
GET/project/currentPobierz bieżący projektProject

Path & VCS

MethodPathDescriptionResponse
GET/pathPobierz bieżącą ścieżkęPath
GET/vcsUzyskaj informacje VCS dla bieżącego projektuVcsInfo

Instance

MethodPathDescriptionResponse
POST/instance/disposeUsuń bieżącą instancjęboolean

Config

MethodPathDescriptionResponse
GET/configGet config infoConfig
PATCH/configUpdate configConfig
GET/config/providersLista dostawców i modeli domyślnych{ providers: Dostawca[], default: { [key: string]: string } }

Dostawca

MethodPathDescriptionResponse
GET/providerLista wszystkich dostawców{ all: Dostawca[], default: {...}, connected: string[] }
GET/provider/authUzyskaj metody uwierzytelniania dostawcy{ [providerID: string]: ProviderAuthMethod[] }
POST/provider/{id}/oauth/authorizeAutoryzuj dostawcę za pomocą protokołu OAuthProviderAuthAuthorization
POST/provider/{id}/oauth/callbackObsługa wywołania zwrotnego OAuth dla dostawcyboolean

Sessions

MethodPathDescriptionNotes
GET/sessionLista wszystkich sesjiZwraca Session[]
POST/sessionUtwórz nową sesjętreść: { parentID?, title? }, zwraca Session
GET/session/statusUzyskaj status sesji dla wszystkich sesjiZwraca { [sessionID: string]: Status sesji }
GET/session/:idUzyskaj szczegóły sesjiZwraca Session
DELETE/session/:idUsuń sesję i wszystkie jej daneZwraca boolean
PATCH/session/:idAktualizuj właściwości sesjitreść: { title? }, zwraca Session
GET/session/:id/childrenPobierz sesje podrzędne sesjiZwraca Session[]
GET/session/:id/todoPobierz listę rzeczy do zrobienia dla sesjiZwraca Todo[]
POST/session/:id/initPrzeanalizuj aplikację i utwórz AGENTS.mdtreść: { messageID, providerID, modelID }, zwraca boolean
POST/session/:id/forkRozwiń istniejącą sesję w wiadomościtreść: { messageID? }, zwraca Session
POST/session/:id/abortPrzerwij trwającą sesjęZwraca boolean
POST/session/:id/shareUdostępnij sesjęZwraca Session
DELETE/session/:id/shareAnuluj udostępnianie sesjiZwraca Session
GET/session/:id/diffPobierz różnicę dla tej sesjizapytanie: messageID?, zwraca FileDiff[]
POST/session/:id/summarizePodsumuj sesjętreść: { providerID, modelID }, zwraca boolean
POST/session/:id/revertPrzywróć wiadomośćtreść: { messageID, partID? }, zwraca boolean
POST/session/:id/unrevertPrzywróć wszystkie przywrócone wiadomościZwraca boolean
POST/session/:id/permissions/:permissionIDOdpowiedz na prośbę o pozwolenietreść: { response, remember? }, zwraca boolean

Messages

MethodPathDescriptionNotes
GET/session/:id/messageLista wiadomości w sesjizapytanie: limit?, zwraca { info: Wiadomość, parts: Część[]}[]
POST/session/:id/messageWyślij wiadomość i poczekaj na odpowiedźtreść: { messageID?, model?, agent?, noReply?, system?, tools?, parts }, zwraca { info: Wiadomość, parts: Część[]}
GET/session/:id/message/:messageIDUzyskaj szczegóły wiadomościZwraca { info: Wiadomość, parts: Część[]}
POST/session/:id/prompt_asyncWyślij wiadomość asynchronicznie (bez czekania)treść: taka sama jak /session/:id/message, zwraca 204 No Content
POST/session/:id/commandWykonaj slash commandtreść: { messageID?, agent?, model?, command, arguments }, zwraca { info: Wiadomość, parts: Część[]}
POST/session/:id/shellUruchom polecenie shelltreść: { agent, model?, command }, zwraca { info: Wiadomość, parts: Część[]}

Komendy

MetodaŚcieżkaOpisOdpowiedź
GET/commandLista wszystkich poleceńCommand[]

Pliki

MethodPathDescriptionResponse
GET/find?pattern=<pat>Szukaj tekstu w plikachTablica obiektów dopasowania z path, lines, line_number, absolute_offset, submatches
GET/find/file?query=<q>Znajdź pliki i katalogi według nazwystring[] (ścieżki)
GET/find/symbol?query=<q>Find workspace symbolsSymbol[]
GET/file?path=<path>Lista plików i katalogówFileNode[]
GET/file/content?path=<p>Read a fileFileContent
GET/file/statusUzyskaj status śledzonych plikówFile[]

/find/file query parameters

  • query (required) — search string (fuzzy match)
  • type (optional) — limit results to "file" or "directory"
  • directory (opcjonalnie) — zastąp katalog główny projektu dla wyszukiwania
  • limit (optional) — max results (1–200)
  • dirs (optional) — legacy flag ("false" returns only files)

Tools (Experimental)

MethodPathDescriptionResponse
GET/experimental/tool/idsLista wszystkich identyfikatorów narzędziToolIDs
GET/experimental/tool?provider=<p>&model=<m>Lista narzędzi ze schematami JSON dla modeluToolList

LSP, Formatters & MCP

MethodPathDescriptionResponse
GET/lspUzyskaj status serwera LSPLSPStatus[]
GET/formatterGet formatter statusFormatterStatus[]
GET/mcpUzyskaj status serwera MCP{ [name: string]: MCPStatus }
POST/mcpDodaj dynamicznie serwer MCPtreść: { name, config }, zwraca obiekt stanu MCP

Agents

MethodPathDescriptionResponse
GET/agentLista wszystkich dostępnych agentówAgent[]

Logging

MethodPathDescriptionResponse
POST/logWrite log entry. Body: { service, level, message, extra? }boolean

TUI

MethodPathDescriptionResponse
POST/tui/append-promptDołącz tekst do promptuboolean
POST/tui/open-helpOtwórz okno pomocyboolean
POST/tui/open-sessionsOtwórz selektor sesjiboolean
POST/tui/open-themesOtwórz selektor motywówboolean
POST/tui/open-modelsOtwórz selektor modeluboolean
POST/tui/submit-promptPrześlij bieżący promptboolean
POST/tui/clear-promptWyczyść promptboolean
POST/tui/execute-commandWykonaj polecenie ({ command })boolean
POST/tui/show-toastPokaż toast ({ title?, message, variant })boolean
GET/tui/control/nextPoczekaj na następne żądanie kontroliObiekt żądania kontroli
POST/tui/control/responseRespond to a control request ({ body })boolean

Auth

MethodPathDescriptionResponse
PUT/auth/:idUstaw dane uwierzytelniające. Treść musi pasować do schematu dostawcyboolean

Events

MethodPathDescriptionResponse
GET/eventStrumień zdarzeń wysyłanych przez serwer. Pierwsze wydarzenie to server.connected, następnie wydarzenia autobusoweStrumień zdarzeń wysłanych przez serwer

Docs

MethodPathDescriptionResponse
GET/docSpecyfikacja OpenAPI 3.1Strona HTML ze specyfikacją OpenAPI