opencode_go, który ma domyślny bazowy URL, więc potrzebujesz tylko klucza API.
Konfiguracja
config.yaml:
https://opencode.ai/zen/go/v1. Uwierzytelnianie używa
Authorization: Bearer <api_key> z kluczem wygenerowanym w konsoli OpenCode Zen.
Modele
GET /v1/models przekazuje listę modeli OpenCode Zen, udostępniając ID takie jak
glm-5.1, kimi-k2.7-code, deepseek-v4-pro i mimo-v2.5-pro. Jeśli chcesz
tylko podzbioru, ogranicz udostępniany zestaw skonfigurowaną listą:
Endpointy
OpenCode Zen obsługuje większość modeli na/chat/completions w stylu OpenAI
(uwierzytelnianie Bearer), a kilka modeli tylko na natywnym endpoincie Anthropic
/messages (uwierzytelnianie x-api-key). GoModel kieruje requesty według modelu:
- Modele w stylu OpenAI (GLM, Kimi, DeepSeek, MiMo, MiniMax, większość Qwen)
trafiają do
/chat/completions./modelsi/v1/responses(tłumaczone na chat completions) używają tej samej ścieżki. - Modele dostępne tylko w Anthropic są tłumaczone na dialekt Anthropic Messages
i wysyłane do
/messages, tak jak GoModel już obsługuje natywne Anthropic. Obie ścieżki są normalizowane do tej samej odpowiedzi kompatybilnej z OpenAI, więc klienty widzą jedną spójną powierzchnię niezależnie od wybranego modelu – czy wywołują/v1/chat/completions, czy/v1/messages.
/messages jest obecnie utrzymywany ręcznie
(domyślnie: qwen3.7-max), ponieważ OpenCode Zen nie udostępnia jeszcze metadanych
endpointów dla poszczególnych modeli. W razie potrzeby nadpisz go:
Ten ręczny podział jest tymczasowy i zostanie zastąpiony routingiem opartym na
metadanych, gdy upstreamowa lista modeli zacznie rozróżniać endpointy.
Nagłówek sesji
OpenCode Zen prosi każdego klienta o wysyłanie nagłówkax-opencode-session, aby
mógł kierować jedną rozmowę do tego samego upstreamu i utrzymywać rozgrzany prompt
cache. Upstream zapowiedział, że requesty bez niego mogą zacząć kończyć się błędem.
GoModel domyślnie dodaje ten nagłówek do każdego requestu OpenCode Go, zarówno na
ścieżce /chat/completions, jak i /messages, używając pierwszej dostępnej wartości:
- Nagłówek
x-opencode-sessionwysłany przez klienta (samo OpenCode, pi i inne narzędzia mówiące dialektem OpenCode Zen) jest przekazywany bez zmian. - W przeciwnym razie sesja wykryta przez GoModel w ramach
utrzymywania sesji:
X-Session-Idz OpenCode, id sesji Claude Code, pole sesji w body albo idauto-…wyprowadzone z treści dla agentów, które nie wysyłają żadnego sygnału.
x-opencode-client (przekazując własną wartość klienta, jeśli jest
obecna, a w przeciwnym razie gomodel) oraz User-Agentem gomodel/<version>, czego
wymagają upstreamowe
zasady użycia.
Wyłącz przekazywanie sesji tylko wtedy, gdy upstream o to poprosi:
Reasoning
Niektóre modele OpenCode Zen zawsze myślą i odrzucają requesty, które pomijają parametr reasoningu:reasoning_effort: "low" na /chat/completions, gdy request
w ogóle nie zawiera parametru reasoningu. Modele ignorujące ten parametr nie są tym
objęte. Podnieś wartość domyślną dla danego wdrożenia:
none (lub off), aby niczego nie wstrzykiwać i przekazywać requesty bez zmian.
Klienty zachowują kontrolę, gdy same proszą o reasoning: nic nie jest wstrzykiwane
w miejsce jawnego reasoning.effort ani reasoning_effort najwyższego poziomu.
Rozpoznawane przez GoModel poziomy effort są mapowane na najbliższy odpowiednik
w zestawie low / high / max akceptowanym przez OpenCode Zen:
Każda inna wartość (np.
turbo) jest przekazywana bez zmian do oceny przez upstream.
reasoning.effort to kanoniczne pole GoModel, więc request, który ustawia zarówno je,
jak i reasoning_effort najwyższego poziomu, jest wysyłany ze zmapowanym
reasoning.effort – to ta sama kolejność pierwszeństwa, którą stosuje każdy inny
provider GoModel.
Modele kierowane do /messages używają zamiast tego dialektu thinking Anthropic
i nie podlegają temu mapowaniu.
Modele DeepSeek
ID modeli zaczynające się oddeepseek są obsługiwane tak samo jak w natywnym
providerze DeepSeek, także gdy kieruje do nich model wirtualny:
reasoning_content jest uzupełniane we wcześniejszych turach asystenta, gdy obecne
są narzędzia, a structured output json_schema działa zgodnie z
DEEPSEEK_JSON_SCHEMA_MODE. Szczegóły znajdziesz na stronie
DeepSeek.
Nieobsługiwane
- Embeddingi (zwracają
invalid_request_error).