İçeriğe geç

Sunucu

opencode sunucusuyla HTTP uzerinden etkilesin.

opencode serve komutu, opencode istemcisinin kullanabileceği bir OpenAPI endpoint’i açan headless bir HTTP sunucusu çalıştırır.


Kullanım

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

Seçenekler

BayrakAçıklamaVarsayılan
--portDinlenecek bağlantı noktası4096
--hostnameDinlenecek ana bilgisayar adı127.0.0.1
--mdnsmDNS keşfini etkinleştirfalse
--mdns-domainmDNS hizmeti için özel alan adıopencode.local
--corsİzin verilecek ek tarayıcı kaynakları (origin)[]

--cors birden fazla kez geçilebilir:

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

Kimlik Doğrulama

Sunucuyu HTTP temel kimlik doğrulama (basic auth) ile korumak için OPENCODE_SERVER_PASSWORD ayarlayın. Kullanıcı adı varsayılan olarak opencode değeridir; değiştirmek isterseniz OPENCODE_SERVER_USERNAME ayarlayabilirsiniz. Bu ayar hem opencode serve hem de opencode web için geçerlidir.

Terminal window
OPENCODE_SERVER_PASSWORD=your-password opencode serve

Nasıl çalışır

opencode çalıştırdığınızda hem TUI hem de sunucu başlar. TUI, sunucuyla konuşan istemci tarafıdır. Sunucu bir OpenAPI 3.1 spesifikasyon uç noktası açar. Bu uç nokta SDK üretiminde de kullanılır.

Bu mimari, opencode’un birden fazla istemciyi desteklemesini ve programatik kullanımları mümkün kılmasını sağlar.

opencode serve ile bağımsız bir sunucu başlatabilirsiniz. opencode TUI açıksa, opencode serve yeni bir sunucu başlatır.


Mevcut sunucuya bağlanın

TUI başlarken rastgele bir port ve hostname atanır. Bunun yerine --hostname ve --port bayraklarını verebilirsiniz.

/tui uç noktası sunucu üzerinden TUI’yi sürmek için kullanılabilir. Örneğin bir istemi önceden doldurabilir veya çalıştırabilirsiniz. Bu kurulum opencode IDE eklentileri tarafından kullanılır.


Spesifikasyon

Sunucu, şu adreste görülebilen bir OpenAPI 3.1 spesifikasyonu yayınlar:

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

Örneğin http://localhost:4096/doc. İstemci oluşturmak, istek/yanit tiplerini incelemek veya Swagger gezgininde açmak için bu spec’i kullanın.


API’ler

opencode sunucusu aşağıdaki API’leri sunar.


Global

YöntemYolAçıklamaYanıt
GET/global/healthSunucu sağlığını ve sürümünü al{ healthy: true, version: string }
GET/global/eventKüresel olayları al (SSE akışı)Olay akışı

Proje

YöntemYolAçıklamaYanıt
GET/projectTüm projeleri listeleProject[]
GET/project/currentMevcut projeyi alProject

Yol & VCS

YöntemYolAçıklamaYanıt
GET/pathMevcut yolu alPath
GET/vcsMevcut proje için VCS bilgisini alVcsInfo

Örnek (Instance)

YöntemYolAçıklamaYanıt
POST/instance/disposeMevcut örneği (instance) kapatboolean

Config

YöntemYolAçıklamaYanıt
GET/configYapılandırma bilgisini alConfig
PATCH/configYapılandırmayı güncelleConfig
GET/config/providersSağlayıcıları ve varsayılan modelleri listele{ providers: Provider[], default: { [key: string]: string } }

Sağlayıcı (Provider)

YöntemYolAçıklamaYanıt
GET/providerTüm sağlayıcıları listele{ all: Provider[], default: {...}, connected: string[] }
GET/provider/authSağlayıcı kimlik doğrulama yöntemlerini al{ [providerID: string]: ProviderAuthMethod[] }
POST/provider/{id}/oauth/authorizeOAuth kullanarak bir sağlayıcıyı yetkilendirProviderAuthAuthorization
POST/provider/{id}/oauth/callbackBir sağlayıcı için OAuth geri çağrısını işleboolean

Oturumlar (Sessions)

YöntemYolAçıklamaNotlar
GET/sessionTüm oturumları listeleSession[] döndürür
POST/sessionYeni bir oturum oluşturgövde: { parentID?, title? }, Session döndürür
GET/session/statusTüm oturumlar için durumu al{ [sessionID: string]: SessionStatus } döndürür
GET/session/:idOturum ayrıntılarını alSession döndürür
DELETE/session/:idBir oturumu ve tüm verilerini silboolean döndürür
PATCH/session/:idOturum özelliklerini güncellegövde: { title? }, Session döndürür
GET/session/:id/childrenBir oturumun alt oturumlarını alSession[] döndürür
GET/session/:id/todoBir oturum için yapılacaklar listesini alTodo[] döndürür
POST/session/:id/initUygulamayı analiz et ve AGENTS.md oluşturgövde: { messageID, providerID, modelID }, boolean döndürür
POST/session/:id/forkMevcut bir oturumu bir mesajda çatallagövde: { messageID? }, Session döndürür
POST/session/:id/abortÇalışan bir oturumu iptal etboolean döndürür
POST/session/:id/shareBir oturumu paylaşSession döndürür
DELETE/session/:id/shareBir oturumun paylaşımını kaldırSession döndürür
GET/session/:id/diffBu oturum için farkı (diff) alsorgu: messageID?, FileDiff[] döndürür
POST/session/:id/summarizeOturumu özetlegövde: { providerID, modelID }, boolean döndürür
POST/session/:id/revertBir mesajı geri algövde: { messageID, partID? }, boolean döndürür
POST/session/:id/unrevertGeri alınan tüm mesajları geri yükleboolean döndürür
POST/session/:id/permissions/:permissionIDBir izin isteğine yanıt vergövde: { response, remember? }, boolean döndürür

Mesajlar

YöntemYolAçıklamaNotlar
GET/session/:id/messageBir oturumdaki mesajları listelesorgu: limit?, { info: Message, parts: Part[]}[] döndürür
POST/session/:id/messageBir mesaj gönder ve yanıt beklegövde: { messageID?, model?, agent?, noReply?, system?, tools?, parts }, { info: Message, parts: Part[]} döndürür
GET/session/:id/message/:messageIDMesaj ayrıntılarını al{ info: Message, parts: Part[]} döndürür
POST/session/:id/prompt_asyncEşzamansız bir mesaj gönder (bekleme yok)gövde: /session/:id/message ile aynı, 204 No Content döndürür
POST/session/:id/commandBir eğik çizgi (slash) komutu çalıştırgövde: { messageID?, agent?, model?, command, arguments }, { info: Message, parts: Part[]} döndürür
POST/session/:id/shellBir kabuk komutu çalıştırgövde: { agent, model?, command }, { info: Message, parts: Part[]} döndürür

Komutlar

YöntemYolAçıklamaYanıt
GET/commandTüm komutları listeleCommand[]

Dosyalar

YöntemYolAçıklamaYanıt
GET/find?pattern=<pat>Dosyalarda metin arapath, lines, line_number, absolute_offset, submatches içeren eşleşme nesneleri dizisi
GET/find/file?query=<q>Dosya ve dizinleri isme göre bulstring[] (yollar)
GET/find/symbol?query=<q>Çalışma alanı sembollerini bulSymbol[]
GET/file?path=<path>Dosya ve dizinleri listeleFileNode[]
GET/file/content?path=<p>Bir dosyayı okuFileContent
GET/file/statusİzlenen dosyalar için durumu alFile[]

/find/file sorgu parametreleri

  • query (gerekli) - arama metni (bulanık eşleşme)
  • type (isteğe bağlı) - sonuçları "file" veya "directory" ile sınırlama
  • directory (isteğe bağlı) - arama için proje kökünü geçersiz kılma
  • limit (isteğe bağlı) - en fazla sonuç (1-200)
  • dirs (isteğe bağlı) - eski bayrak ("false" sadece dosyaları döndürür)

Araçlar (Deneysel)

YöntemYolAçıklamaYanıt
GET/experimental/tool/idsTüm araç kimliklerini listeleToolIDs
GET/experimental/tool?provider=<p>&model=<m>Bir model için araçları JSON şemalarıyla listeleToolList

LSP, Biçimlendiriciler & MCP

YöntemYolAçıklamaYanıt
GET/lspLSP sunucu durumunu alLSPStatus[]
GET/formatterBiçimlendirici durumunu alFormatterStatus[]
GET/mcpMCP sunucu durumunu al{ [name: string]: MCPStatus }
POST/mcpDinamik olarak MCP sunucusu eklegövde: { name, config }, MCP durum nesnesi döndürür

Agent’lar

YöntemYolAçıklamaYanıt
GET/agentTüm mevcut agent’ları listeleAgent[]

Günlük (Logging)

YöntemYolAçıklamaYanıt
POST/logGünlük girdisi yaz. Gövde: { service, level, message, extra? }boolean

TUI

YöntemYolAçıklamaYanıt
POST/tui/append-promptİsteme metin ekleboolean
POST/tui/open-helpYardım iletişim kutusunu açboolean
POST/tui/open-sessionsOturum seçiciyi açboolean
POST/tui/open-themesTema seçiciyi açboolean
POST/tui/open-modelsModel seçiciyi açboolean
POST/tui/submit-promptMevcut istemi gönderboolean
POST/tui/clear-promptİstemi temizleboolean
POST/tui/execute-commandBir komut çalıştır ({ command })boolean
POST/tui/show-toastToast bildirimi göster ({ title?, message, variant })boolean
GET/tui/control/nextBir sonraki kontrol isteğini bekleKontrol isteği nesnesi
POST/tui/control/responseBir kontrol isteğine yanıt ver ({ body })boolean

Kimlik Doğrulama (Auth)

YöntemYolAçıklamaYanıt
PUT/auth/:idKimlik bilgilerini ayarla. Gövde sağlayıcı şemasıyla eşleşmelidirboolean

Olaylar (Events)

YöntemYolAçıklamaYanıt
GET/eventSunucu tarafından gönderilen olay akışı (SSE). İlk olay server.connected, ardından veriyolu olaylarıSunucu tarafından gönderilen olay akışı

Dokümanlar (Docs)

YöntemYolAçıklamaYanıt
GET/docOpenAPI 3.1 spesifikasyonuOpenAPI spec içeren HTML sayfası