chore(i18n): refresh id translations
This commit is contained in:
parent
548caaa1bb
commit
d7fec5d181
@ -5,17 +5,17 @@ read_when:
|
||||
summary: Ikhtisar penyedia model dengan contoh konfigurasi + alur CLI
|
||||
title: Penyedia Model
|
||||
x-i18n:
|
||||
generated_at: "2026-04-11T02:44:22Z"
|
||||
generated_at: "2026-04-13T08:50:45Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 910ea7895e74c03910757d9d3e02825754b779b204eca7275b28422647ed0151
|
||||
source_hash: 66ba688c4b4366eec07667571e835d4cfeee684896e2ffae11d601b5fa0a4b98
|
||||
source_path: concepts/model-providers.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# Penyedia model
|
||||
|
||||
Halaman ini membahas **penyedia LLM/model** (bukan channel chat seperti WhatsApp/Telegram).
|
||||
Halaman ini membahas **penyedia LLM/model** (bukan saluran chat seperti WhatsApp/Telegram).
|
||||
Untuk aturan pemilihan model, lihat [/concepts/models](/id/concepts/models).
|
||||
|
||||
## Aturan cepat
|
||||
@ -27,15 +27,15 @@ Untuk aturan pemilihan model, lihat [/concepts/models](/id/concepts/models).
|
||||
didokumentasikan di [/concepts/model-failover](/id/concepts/model-failover).
|
||||
- `models.providers.*.models[].contextWindow` adalah metadata model native;
|
||||
`models.providers.*.models[].contextTokens` adalah batas runtime efektif.
|
||||
- Plugin provider dapat menyuntikkan katalog model melalui `registerProvider({ catalog })`;
|
||||
OpenClaw menggabungkan output tersebut ke dalam `models.providers` sebelum menulis
|
||||
- Plugin penyedia dapat menyuntikkan katalog model melalui `registerProvider({ catalog })`;
|
||||
OpenClaw menggabungkan keluaran tersebut ke dalam `models.providers` sebelum menulis
|
||||
`models.json`.
|
||||
- Manifes provider dapat mendeklarasikan `providerAuthEnvVars` dan
|
||||
`providerAuthAliases` sehingga probe autentikasi berbasis env generik dan varian provider
|
||||
tidak perlu memuat runtime plugin. Peta env-var inti yang tersisa sekarang
|
||||
hanya untuk provider inti/non-plugin dan beberapa kasus prioritas generik
|
||||
- Manifes penyedia dapat mendeklarasikan `providerAuthEnvVars` dan
|
||||
`providerAuthAliases` sehingga probe autentikasi generik berbasis env dan varian penyedia
|
||||
tidak perlu memuat runtime Plugin. Peta env-var inti yang tersisa sekarang
|
||||
hanya untuk penyedia non-Plugin/inti dan beberapa kasus prioritas generik
|
||||
seperti onboarding Anthropic yang mengutamakan API key.
|
||||
- Plugin provider juga dapat memiliki perilaku runtime provider melalui
|
||||
- Plugin penyedia juga dapat memiliki perilaku runtime penyedia melalui
|
||||
`normalizeModelId`, `normalizeTransport`, `normalizeConfig`,
|
||||
`applyNativeStreamingUsageCompat`, `resolveConfigApiKey`,
|
||||
`resolveSyntheticAuth`, `shouldDeferSyntheticProfileAuth`,
|
||||
@ -53,223 +53,179 @@ Untuk aturan pemilihan model, lihat [/concepts/models](/id/concepts/models).
|
||||
`resolveDefaultThinkingLevel`, `applyConfigDefaults`, `isModernModelRef`,
|
||||
`prepareRuntimeAuth`, `resolveUsageAuth`, `fetchUsageSnapshot`, dan
|
||||
`onModelSelected`.
|
||||
- Catatan: `capabilities` runtime provider adalah metadata runner bersama (keluarga provider,
|
||||
keunikan transkrip/tooling, petunjuk transport/cache). Ini bukan hal yang
|
||||
sama dengan [model capability publik](/id/plugins/architecture#public-capability-model)
|
||||
yang menjelaskan apa yang didaftarkan oleh sebuah plugin (inferensi teks, ucapan, dll.).
|
||||
- Provider `codex` bawaan dipasangkan dengan harness agen Codex bawaan.
|
||||
Gunakan `codex/gpt-*` saat Anda menginginkan login milik Codex, penemuan model,
|
||||
resume thread native, dan eksekusi app-server. Referensi `openai/gpt-*` biasa tetap
|
||||
menggunakan provider OpenAI dan transport provider OpenClaw normal.
|
||||
- Catatan: runtime penyedia `capabilities` adalah metadata runner bersama (keluarga penyedia, kekhasan transkrip/tooling, petunjuk transport/cache). Ini bukan
|
||||
hal yang sama dengan [model capability publik](/id/plugins/architecture#public-capability-model)
|
||||
yang menjelaskan apa yang didaftarkan oleh sebuah Plugin (inferensi teks, ucapan, dll.).
|
||||
- Penyedia `codex` bawaan dipasangkan dengan harness agen Codex bawaan.
|
||||
Gunakan `codex/gpt-*` saat Anda menginginkan login yang dimiliki Codex, penemuan model, resume thread native, dan eksekusi server aplikasi. Referensi `openai/gpt-*` biasa tetap
|
||||
menggunakan penyedia OpenAI dan transport penyedia OpenClaw normal.
|
||||
Deployment khusus Codex dapat menonaktifkan fallback PI otomatis dengan
|
||||
`agents.defaults.embeddedHarness.fallback: "none"`; lihat
|
||||
[Codex Harness](/id/plugins/codex-harness).
|
||||
|
||||
## Perilaku provider yang dimiliki plugin
|
||||
## Perilaku penyedia yang dimiliki Plugin
|
||||
|
||||
Plugin provider kini dapat memiliki sebagian besar logika khusus provider sementara OpenClaw tetap menangani
|
||||
Plugin penyedia kini dapat memiliki sebagian besar logika khusus penyedia sementara OpenClaw mempertahankan
|
||||
loop inferensi generik.
|
||||
|
||||
Pembagian umumnya:
|
||||
Pembagian umum:
|
||||
|
||||
- `auth[].run` / `auth[].runNonInteractive`: provider memiliki alur onboarding/login
|
||||
untuk `openclaw onboard`, `openclaw models auth`, dan setup headless
|
||||
- `wizard.setup` / `wizard.modelPicker`: provider memiliki label pilihan autentikasi,
|
||||
alias lama, petunjuk allowlist onboarding, dan entri setup di pemilih onboarding/model
|
||||
- `catalog`: provider muncul di `models.providers`
|
||||
- `normalizeModelId`: provider menormalkan id model legacy/pratinjau sebelum
|
||||
lookup atau kanonikalisasi
|
||||
- `normalizeTransport`: provider menormalkan keluarga transport `api` / `baseUrl`
|
||||
sebelum perakitan model generik; OpenClaw memeriksa provider yang cocok terlebih dahulu,
|
||||
lalu plugin provider lain yang mendukung hook sampai salah satunya benar-benar mengubah
|
||||
- `auth[].run` / `auth[].runNonInteractive`: penyedia memiliki alur onboarding/login
|
||||
untuk `openclaw onboard`, `openclaw models auth`, dan penyiapan headless
|
||||
- `wizard.setup` / `wizard.modelPicker`: penyedia memiliki label pilihan autentikasi,
|
||||
alias lama, petunjuk allowlist onboarding, dan entri penyiapan di pemilih onboarding/model
|
||||
- `catalog`: penyedia muncul di `models.providers`
|
||||
- `normalizeModelId`: penyedia menormalkan id model lama/pratinjau sebelum
|
||||
pencarian atau kanonisasi
|
||||
- `normalizeTransport`: penyedia menormalkan `api` / `baseUrl` keluarga transport
|
||||
sebelum perakitan model generik; OpenClaw memeriksa penyedia yang cocok terlebih dahulu,
|
||||
lalu Plugin penyedia lain yang mampu menjalankan hook sampai salah satunya benar-benar mengubah
|
||||
transport
|
||||
- `normalizeConfig`: provider menormalkan konfigurasi `models.providers.<id>` sebelum
|
||||
runtime menggunakannya; OpenClaw memeriksa provider yang cocok terlebih dahulu, lalu plugin provider
|
||||
lain yang mendukung hook sampai salah satunya benar-benar mengubah konfigurasi. Jika tidak ada
|
||||
hook provider yang menulis ulang konfigurasi, helper keluarga Google bawaan tetap
|
||||
menormalkan entri provider Google yang didukung.
|
||||
- `applyNativeStreamingUsageCompat`: provider menerapkan penulisan ulang kompatibilitas penggunaan streaming native berbasis endpoint untuk provider konfigurasi
|
||||
- `resolveConfigApiKey`: provider menyelesaikan autentikasi penanda env untuk provider konfigurasi
|
||||
- `normalizeConfig`: penyedia menormalkan konfigurasi `models.providers.<id>` sebelum
|
||||
runtime menggunakannya; OpenClaw memeriksa penyedia yang cocok terlebih dahulu, lalu Plugin penyedia lain
|
||||
yang mampu menjalankan hook sampai salah satunya benar-benar mengubah konfigurasi. Jika tidak ada
|
||||
hook penyedia yang menulis ulang konfigurasi, helper keluarga Google bawaan tetap
|
||||
menormalkan entri penyedia Google yang didukung.
|
||||
- `applyNativeStreamingUsageCompat`: penyedia menerapkan penulisan ulang kompatibilitas penggunaan streaming native berbasis endpoint untuk penyedia konfigurasi
|
||||
- `resolveConfigApiKey`: penyedia menyelesaikan autentikasi penanda env untuk penyedia konfigurasi
|
||||
tanpa memaksa pemuatan autentikasi runtime penuh. `amazon-bedrock` juga memiliki
|
||||
resolver penanda env AWS bawaan di sini, meskipun autentikasi runtime Bedrock menggunakan
|
||||
rantai default AWS SDK.
|
||||
- `resolveSyntheticAuth`: provider dapat mengekspos ketersediaan autentikasi lokal/self-hosted atau autentikasi berbasis konfigurasi lainnya
|
||||
tanpa menyimpan secret plaintext
|
||||
- `shouldDeferSyntheticProfileAuth`: provider dapat menandai placeholder profil sintetis yang disimpan
|
||||
- `resolveSyntheticAuth`: penyedia dapat mengekspos ketersediaan autentikasi lokal/self-hosted atau
|
||||
autentikasi lain yang didukung konfigurasi tanpa menyimpan secret plaintext
|
||||
- `shouldDeferSyntheticProfileAuth`: penyedia dapat menandai placeholder profil sintetis yang disimpan
|
||||
sebagai prioritas lebih rendah daripada autentikasi berbasis env/konfigurasi
|
||||
- `resolveDynamicModel`: provider menerima id model yang belum ada di katalog statis lokal
|
||||
- `prepareDynamicModel`: provider memerlukan penyegaran metadata sebelum mencoba kembali
|
||||
- `resolveDynamicModel`: penyedia menerima id model yang belum ada di
|
||||
katalog statis lokal
|
||||
- `prepareDynamicModel`: penyedia memerlukan refresh metadata sebelum mencoba lagi
|
||||
resolusi model dinamis
|
||||
- `normalizeResolvedModel`: provider memerlukan penulisan ulang transport atau base URL
|
||||
- `contributeResolvedModelCompat`: provider menyumbangkan flag kompatibilitas untuk
|
||||
model vendor miliknya bahkan ketika model tersebut datang melalui transport kompatibel lain
|
||||
- `capabilities`: provider memublikasikan keunikan transkrip/tooling/keluarga provider
|
||||
- `normalizeToolSchemas`: provider membersihkan skema tool sebelum runner tersemat
|
||||
melihatnya
|
||||
- `inspectToolSchemas`: provider menampilkan peringatan skema khusus transport
|
||||
- `normalizeResolvedModel`: penyedia memerlukan penulisan ulang transport atau base URL
|
||||
- `contributeResolvedModelCompat`: penyedia menyumbangkan flag kompatibilitas untuk
|
||||
model vendor mereka bahkan ketika model tersebut datang melalui transport kompatibel lain
|
||||
- `capabilities`: penyedia memublikasikan kekhasan transkrip/tooling/keluarga penyedia
|
||||
- `normalizeToolSchemas`: penyedia membersihkan skema tool sebelum
|
||||
runner tertanam melihatnya
|
||||
- `inspectToolSchemas`: penyedia menampilkan peringatan skema khusus transport
|
||||
setelah normalisasi
|
||||
- `resolveReasoningOutputMode`: provider memilih kontrak output reasoning
|
||||
- `resolveReasoningOutputMode`: penyedia memilih kontrak keluaran reasoning
|
||||
native vs bertag
|
||||
- `prepareExtraParams`: provider menetapkan default atau menormalkan parameter permintaan per model
|
||||
- `createStreamFn`: provider menggantikan jalur stream normal dengan transport
|
||||
- `prepareExtraParams`: penyedia menetapkan default atau menormalkan parameter permintaan per model
|
||||
- `createStreamFn`: penyedia mengganti jalur stream normal dengan transport
|
||||
kustom sepenuhnya
|
||||
- `wrapStreamFn`: provider menerapkan wrapper kompatibilitas header/body/model permintaan
|
||||
- `resolveTransportTurnState`: provider menyediakan header transport native per giliran
|
||||
atau metadata
|
||||
- `resolveWebSocketSessionPolicy`: provider menyediakan header sesi WebSocket native
|
||||
atau kebijakan cooldown sesi
|
||||
- `createEmbeddingProvider`: provider memiliki perilaku embedding memori saat hal itu
|
||||
berada bersama plugin provider, bukan switchboard embedding inti
|
||||
- `formatApiKey`: provider memformat profil autentikasi yang disimpan ke dalam string
|
||||
`apiKey` runtime yang diharapkan oleh transport
|
||||
- `refreshOAuth`: provider memiliki penyegaran OAuth saat refresher bersama `pi-ai`
|
||||
- `wrapStreamFn`: penyedia menerapkan wrapper kompatibilitas header/body/model permintaan
|
||||
- `resolveTransportTurnState`: penyedia menyediakan header atau metadata
|
||||
transport native per giliran
|
||||
- `resolveWebSocketSessionPolicy`: penyedia menyediakan header sesi WebSocket native
|
||||
atau kebijakan cool-down sesi
|
||||
- `createEmbeddingProvider`: penyedia memiliki perilaku embedding memori saat
|
||||
perilaku tersebut seharusnya berada pada Plugin penyedia, bukan switchboard embedding inti
|
||||
- `formatApiKey`: penyedia memformat profil autentikasi yang disimpan menjadi string
|
||||
runtime `apiKey` yang diharapkan oleh transport
|
||||
- `refreshOAuth`: penyedia memiliki refresh OAuth ketika refresher bersama `pi-ai`
|
||||
tidak memadai
|
||||
- `buildAuthDoctorHint`: provider menambahkan panduan perbaikan saat penyegaran OAuth
|
||||
- `buildAuthDoctorHint`: penyedia menambahkan panduan perbaikan saat refresh OAuth
|
||||
gagal
|
||||
- `matchesContextOverflowError`: provider mengenali error overflow context-window
|
||||
khusus provider yang akan terlewat oleh heuristik generik
|
||||
- `classifyFailoverReason`: provider memetakan error transport/API mentah khusus provider
|
||||
- `matchesContextOverflowError`: penyedia mengenali error luapan jendela konteks
|
||||
khusus penyedia yang terlewat oleh heuristik generik
|
||||
- `classifyFailoverReason`: penyedia memetakan error transport/API mentah khusus penyedia
|
||||
ke alasan failover seperti rate limit atau overload
|
||||
- `isCacheTtlEligible`: provider menentukan id model upstream mana yang mendukung TTL prompt-cache
|
||||
- `buildMissingAuthMessage`: provider menggantikan error penyimpanan autentikasi generik
|
||||
dengan petunjuk pemulihan khusus provider
|
||||
- `suppressBuiltInModel`: provider menyembunyikan baris upstream yang usang dan dapat mengembalikan
|
||||
error milik vendor untuk kegagalan resolusi langsung
|
||||
- `augmentModelCatalog`: provider menambahkan baris katalog sintetis/akhir setelah
|
||||
discovery dan penggabungan konfigurasi
|
||||
- `isBinaryThinking`: provider memiliki UX thinking biner hidup/mati
|
||||
- `supportsXHighThinking`: provider mengikutsertakan model tertentu ke `xhigh`
|
||||
- `resolveDefaultThinkingLevel`: provider memiliki kebijakan default `/think` untuk
|
||||
sebuah keluarga model
|
||||
- `applyConfigDefaults`: provider menerapkan default global khusus provider
|
||||
- `isCacheTtlEligible`: penyedia menentukan id model upstream mana yang mendukung TTL prompt cache
|
||||
- `buildMissingAuthMessage`: penyedia mengganti error auth-store generik
|
||||
dengan petunjuk pemulihan khusus penyedia
|
||||
- `suppressBuiltInModel`: penyedia menyembunyikan baris upstream yang usang dan dapat mengembalikan
|
||||
error yang dimiliki vendor untuk kegagalan resolusi langsung
|
||||
- `augmentModelCatalog`: penyedia menambahkan baris katalog sintetis/final setelah
|
||||
penemuan dan penggabungan konfigurasi
|
||||
- `isBinaryThinking`: penyedia memiliki UX thinking biner nyala/mati
|
||||
- `supportsXHighThinking`: penyedia memilih model tertentu agar mendukung `xhigh`
|
||||
- `resolveDefaultThinkingLevel`: penyedia memiliki kebijakan default `/think` untuk
|
||||
keluarga model
|
||||
- `applyConfigDefaults`: penyedia menerapkan default global khusus penyedia
|
||||
selama materialisasi konfigurasi berdasarkan mode autentikasi, env, atau keluarga model
|
||||
- `isModernModelRef`: provider memiliki pencocokan model pilihan live/smoke
|
||||
- `prepareRuntimeAuth`: provider mengubah kredensial yang dikonfigurasi menjadi token runtime
|
||||
jangka pendek
|
||||
- `resolveUsageAuth`: provider menyelesaikan kredensial penggunaan/kuota untuk `/usage`
|
||||
- `isModernModelRef`: penyedia memiliki pencocokan model pilihan live/smoke
|
||||
- `prepareRuntimeAuth`: penyedia mengubah kredensial yang dikonfigurasi menjadi token runtime
|
||||
berumur pendek
|
||||
- `resolveUsageAuth`: penyedia menyelesaikan kredensial penggunaan/kuota untuk `/usage`
|
||||
dan permukaan status/pelaporan terkait
|
||||
- `fetchUsageSnapshot`: provider memiliki pengambilan/penguraian endpoint penggunaan sementara
|
||||
inti tetap memiliki shell ringkasan dan pemformatan
|
||||
- `onModelSelected`: provider menjalankan efek samping setelah pemilihan model seperti
|
||||
telemetri atau pencatatan sesi milik provider
|
||||
- `fetchUsageSnapshot`: penyedia memiliki pengambilan/penguraian endpoint penggunaan sementara
|
||||
inti tetap memiliki shell ringkasan dan pemformatannya
|
||||
- `onModelSelected`: penyedia menjalankan efek samping pascapemilihan seperti
|
||||
telemetri atau pembukuan sesi yang dimiliki penyedia
|
||||
|
||||
Contoh bawaan saat ini:
|
||||
|
||||
- `anthropic`: fallback forward-compat Claude 4.6, petunjuk perbaikan autentikasi, pengambilan endpoint penggunaan,
|
||||
metadata cache-TTL/keluarga provider, dan default konfigurasi global
|
||||
yang sadar autentikasi
|
||||
- `amazon-bedrock`: pencocokan context-overflow dan klasifikasi alasan
|
||||
failover yang dimiliki provider untuk error throttle/belum-siap khusus Bedrock, ditambah
|
||||
keluarga replay bersama `anthropic-by-model` untuk guard kebijakan replay khusus Claude
|
||||
pada traffic Anthropic
|
||||
- `anthropic-vertex`: guard kebijakan replay khusus Claude pada
|
||||
traffic pesan Anthropic
|
||||
- `openrouter`: id model pass-through, wrapper permintaan, petunjuk capability provider,
|
||||
sanitasi thought-signature Gemini pada traffic proxy Gemini, injeksi
|
||||
reasoning proxy melalui keluarga stream `openrouter-thinking`, penerusan metadata
|
||||
routing, dan kebijakan cache-TTL
|
||||
- `github-copilot`: onboarding/login perangkat, fallback model forward-compat,
|
||||
petunjuk transkrip Claude-thinking, pertukaran token runtime, dan pengambilan endpoint penggunaan
|
||||
- `openai`: fallback forward-compat GPT-5.4, normalisasi transport OpenAI langsung,
|
||||
petunjuk autentikasi-hilang yang sadar Codex, suppression Spark, baris katalog
|
||||
sintetis OpenAI/Codex, kebijakan thinking/live-model, normalisasi alias token penggunaan
|
||||
(`input` / `output` dan keluarga `prompt` / `completion`), keluarga stream bersama
|
||||
`openai-responses-defaults` untuk wrapper OpenAI/Codex native, metadata keluarga provider,
|
||||
pendaftaran provider pembuatan gambar bawaan
|
||||
untuk `gpt-image-1`, dan pendaftaran provider pembuatan video bawaan
|
||||
untuk `sora-2`
|
||||
- `google` dan `google-gemini-cli`: fallback forward-compat Gemini 3.1,
|
||||
validasi replay Gemini native, sanitasi replay bootstrap, mode output
|
||||
reasoning bertag, pencocokan model modern, pendaftaran provider pembuatan gambar bawaan
|
||||
untuk model Gemini image-preview, dan pendaftaran provider
|
||||
pembuatan video bawaan untuk model Veo; OAuth Gemini CLI juga
|
||||
memiliki pemformatan token profil autentikasi, parsing token penggunaan, dan pengambilan endpoint kuota
|
||||
untuk permukaan penggunaan
|
||||
- `moonshot`: transport bersama, normalisasi payload thinking yang dimiliki plugin
|
||||
- `kilocode`: transport bersama, header permintaan yang dimiliki plugin, normalisasi payload reasoning,
|
||||
sanitasi thought-signature proxy-Gemini, dan kebijakan cache-TTL
|
||||
- `zai`: fallback forward-compat GLM-5, default `tool_stream`, kebijakan cache-TTL,
|
||||
kebijakan binary-thinking/live-model, dan autentikasi penggunaan + pengambilan kuota;
|
||||
id `glm-5*` yang tidak dikenal disintesis dari templat `glm-4.7` bawaan
|
||||
- `xai`: normalisasi transport Responses native, penulisan ulang alias `/fast` untuk
|
||||
varian cepat Grok, default `tool_stream`, pembersihan skema-tool /
|
||||
payload reasoning khusus xAI, dan pendaftaran provider pembuatan video bawaan
|
||||
untuk `grok-imagine-video`
|
||||
- `mistral`: metadata capability yang dimiliki plugin
|
||||
- `opencode` dan `opencode-go`: metadata capability yang dimiliki plugin ditambah
|
||||
sanitasi thought-signature proxy-Gemini
|
||||
- `alibaba`: katalog pembuatan video yang dimiliki plugin untuk referensi model Wan langsung
|
||||
seperti `alibaba/wan2.6-t2v`
|
||||
- `byteplus`: katalog yang dimiliki plugin ditambah pendaftaran provider pembuatan video bawaan
|
||||
untuk model text-to-video/image-to-video Seedance
|
||||
- `fal`: pendaftaran provider pembuatan video bawaan untuk model pihak ketiga yang dihosting,
|
||||
pendaftaran provider pembuatan gambar untuk model gambar FLUX, ditambah pendaftaran provider
|
||||
pembuatan video bawaan untuk model video pihak ketiga yang dihosting
|
||||
- `anthropic`: fallback kompatibilitas-maju Claude 4.6, petunjuk perbaikan autentikasi, pengambilan endpoint penggunaan, metadata keluarga penyedia/cache-TTL, dan default konfigurasi global yang sadar autentikasi
|
||||
- `amazon-bedrock`: pencocokan context-overflow yang dimiliki penyedia dan klasifikasi alasan failover untuk error throttle/not-ready khusus Bedrock, ditambah keluarga replay bersama `anthropic-by-model` untuk guard kebijakan replay khusus Claude pada trafik Anthropic
|
||||
- `anthropic-vertex`: guard kebijakan replay khusus Claude pada trafik pesan Anthropic
|
||||
- `openrouter`: id model pass-through, wrapper permintaan, petunjuk capability penyedia, sanitasi thought-signature Gemini pada trafik proxy Gemini, injeksi reasoning proxy melalui keluarga stream `openrouter-thinking`, penerusan metadata routing, dan kebijakan cache-TTL
|
||||
- `github-copilot`: onboarding/login perangkat, fallback model kompatibilitas-maju, petunjuk transkrip Claude-thinking, pertukaran token runtime, dan pengambilan endpoint penggunaan
|
||||
- `openai`: fallback kompatibilitas-maju GPT-5.4, normalisasi transport OpenAI langsung, petunjuk autentikasi hilang yang sadar Codex, penekanan Spark, baris katalog OpenAI/Codex sintetis, kebijakan thinking/model live, normalisasi alias token penggunaan (`input` / `output` dan keluarga `prompt` / `completion`), keluarga stream bersama `openai-responses-defaults` untuk wrapper OpenAI/Codex native, metadata keluarga penyedia, pendaftaran penyedia pembuatan gambar bawaan untuk `gpt-image-1`, dan pendaftaran penyedia pembuatan video bawaan untuk `sora-2`
|
||||
- `google` dan `google-gemini-cli`: fallback kompatibilitas-maju Gemini 3.1, validasi replay Gemini native, sanitasi replay bootstrap, mode keluaran reasoning bertag, pencocokan model modern, pendaftaran penyedia pembuatan gambar bawaan untuk model image-preview Gemini, dan pendaftaran penyedia pembuatan video bawaan untuk model Veo; OAuth Gemini CLI juga memiliki pemformatan token profil autentikasi, penguraian token penggunaan, dan pengambilan endpoint kuota untuk permukaan penggunaan
|
||||
- `moonshot`: transport bersama, normalisasi muatan thinking yang dimiliki Plugin
|
||||
- `kilocode`: transport bersama, header permintaan yang dimiliki Plugin, normalisasi muatan reasoning, sanitasi thought-signature proxy-Gemini, dan kebijakan cache-TTL
|
||||
- `zai`: fallback kompatibilitas-maju GLM-5, default `tool_stream`, kebijakan cache-TTL, kebijakan thinking biner/model live, dan autentikasi penggunaan + pengambilan kuota; id `glm-5*` yang tidak dikenal disintesis dari templat `glm-4.7` bawaan
|
||||
- `xai`: normalisasi transport Responses native, penulisan ulang alias `/fast` untuk varian cepat Grok, default `tool_stream`, pembersihan skema tool / muatan reasoning khusus xAI, dan pendaftaran penyedia pembuatan video bawaan untuk `grok-imagine-video`
|
||||
- `mistral`: metadata capability yang dimiliki Plugin
|
||||
- `opencode` dan `opencode-go`: metadata capability yang dimiliki Plugin ditambah sanitasi thought-signature proxy-Gemini
|
||||
- `alibaba`: katalog pembuatan video yang dimiliki Plugin untuk referensi model Wan langsung seperti `alibaba/wan2.6-t2v`
|
||||
- `byteplus`: katalog yang dimiliki Plugin ditambah pendaftaran penyedia pembuatan video bawaan untuk model Seedance text-to-video/image-to-video
|
||||
- `fal`: pendaftaran penyedia pembuatan video bawaan untuk penyedia pembuatan gambar pihak ketiga yang di-hosting untuk model gambar FLUX ditambah pendaftaran penyedia pembuatan video bawaan untuk model video pihak ketiga yang di-hosting
|
||||
- `cloudflare-ai-gateway`, `huggingface`, `kimi`, `nvidia`, `qianfan`,
|
||||
`stepfun`, `synthetic`, `venice`, `vercel-ai-gateway`, dan `volcengine`:
|
||||
hanya katalog yang dimiliki plugin
|
||||
- `qwen`: katalog yang dimiliki plugin untuk model teks ditambah pendaftaran provider
|
||||
media-understanding dan pembuatan video bersama untuk permukaan multimodalnya;
|
||||
pembuatan video Qwen menggunakan endpoint video DashScope Standar dengan
|
||||
model Wan bawaan seperti `wan2.6-t2v` dan `wan2.7-r2v`
|
||||
- `runway`: pendaftaran provider pembuatan video yang dimiliki plugin untuk model native
|
||||
berbasis tugas Runway seperti `gen4.5`
|
||||
- `minimax`: katalog yang dimiliki plugin, pendaftaran provider pembuatan video bawaan
|
||||
untuk model video Hailuo, pendaftaran provider pembuatan gambar bawaan
|
||||
untuk `image-01`, pemilihan kebijakan replay Anthropic/OpenAI hibrida,
|
||||
dan logika autentikasi/snapshot penggunaan
|
||||
- `together`: katalog yang dimiliki plugin ditambah pendaftaran provider pembuatan video bawaan
|
||||
untuk model video Wan
|
||||
- `xiaomi`: katalog yang dimiliki plugin ditambah logika autentikasi/snapshot penggunaan
|
||||
hanya katalog yang dimiliki Plugin
|
||||
- `qwen`: katalog yang dimiliki Plugin untuk model teks ditambah pendaftaran penyedia media-understanding dan pembuatan video bersama untuk permukaan multimodalnya; pembuatan video Qwen menggunakan endpoint video DashScope Standar dengan model Wan bawaan seperti `wan2.6-t2v` dan `wan2.7-r2v`
|
||||
- `runway`: pendaftaran penyedia pembuatan video yang dimiliki Plugin untuk model native berbasis tugas Runway seperti `gen4.5`
|
||||
- `minimax`: katalog yang dimiliki Plugin, pendaftaran penyedia pembuatan video bawaan untuk model video Hailuo, pendaftaran penyedia pembuatan gambar bawaan untuk `image-01`, pemilihan kebijakan replay hibrida Anthropic/OpenAI, dan logika autentikasi/snapshot penggunaan
|
||||
- `together`: katalog yang dimiliki Plugin ditambah pendaftaran penyedia pembuatan video bawaan untuk model video Wan
|
||||
- `xiaomi`: katalog yang dimiliki Plugin ditambah logika autentikasi/snapshot penggunaan
|
||||
|
||||
Plugin `openai` bawaan sekarang memiliki kedua id provider: `openai` dan
|
||||
Plugin `openai` bawaan sekarang memiliki kedua id penyedia: `openai` dan
|
||||
`openai-codex`.
|
||||
|
||||
Itu mencakup provider yang masih sesuai dengan transport normal OpenClaw. Provider
|
||||
yang membutuhkan eksekutor permintaan kustom sepenuhnya adalah permukaan ekstensi
|
||||
yang terpisah dan lebih dalam.
|
||||
Itu mencakup penyedia yang masih sesuai dengan transport normal OpenClaw. Penyedia
|
||||
yang memerlukan eksekutor permintaan kustom sepenuhnya adalah permukaan ekstensi
|
||||
terpisah yang lebih mendalam.
|
||||
|
||||
## Rotasi API key
|
||||
|
||||
- Mendukung rotasi provider generik untuk provider tertentu.
|
||||
- Mendukung rotasi penyedia generik untuk penyedia tertentu.
|
||||
- Konfigurasikan beberapa key melalui:
|
||||
- `OPENCLAW_LIVE_<PROVIDER>_KEY` (override live tunggal, prioritas tertinggi)
|
||||
- `OPENCLAW_LIVE_<PROVIDER>_KEY` (satu override live, prioritas tertinggi)
|
||||
- `<PROVIDER>_API_KEYS` (daftar dipisahkan koma atau titik koma)
|
||||
- `<PROVIDER>_API_KEY` (key utama)
|
||||
- `<PROVIDER>_API_KEY_*` (daftar bernomor, misalnya `<PROVIDER>_API_KEY_1`)
|
||||
- Untuk provider Google, `GOOGLE_API_KEY` juga disertakan sebagai fallback.
|
||||
- Untuk penyedia Google, `GOOGLE_API_KEY` juga disertakan sebagai fallback.
|
||||
- Urutan pemilihan key mempertahankan prioritas dan menghapus duplikasi nilai.
|
||||
- Permintaan dicoba ulang dengan key berikutnya hanya pada respons rate-limit (misalnya
|
||||
`429`, `rate_limit`, `quota`, `resource exhausted`, `Too many
|
||||
- Permintaan dicoba ulang dengan key berikutnya hanya pada respons rate-limit (misalnya `429`, `rate_limit`, `quota`, `resource exhausted`, `Too many
|
||||
concurrent requests`, `ThrottlingException`, `concurrency limit reached`,
|
||||
`workers_ai ... quota limit exceeded`, atau pesan batas penggunaan berkala).
|
||||
`workers_ai ... quota limit exceeded`, atau pesan batas penggunaan periodik).
|
||||
- Kegagalan non-rate-limit langsung gagal; tidak ada rotasi key yang dicoba.
|
||||
- Ketika semua key kandidat gagal, error akhir dikembalikan dari percobaan terakhir.
|
||||
- Saat semua key kandidat gagal, error final dikembalikan dari percobaan terakhir.
|
||||
|
||||
## Provider bawaan (katalog pi-ai)
|
||||
## Penyedia bawaan (katalog pi-ai)
|
||||
|
||||
OpenClaw dilengkapi dengan katalog pi‑ai. Provider ini tidak memerlukan
|
||||
OpenClaw dikirim dengan katalog pi-ai. Penyedia ini tidak memerlukan
|
||||
konfigurasi `models.providers`; cukup tetapkan autentikasi + pilih model.
|
||||
|
||||
### OpenAI
|
||||
|
||||
- Provider: `openai`
|
||||
- Auth: `OPENAI_API_KEY`
|
||||
- Rotasi opsional: `OPENAI_API_KEYS`, `OPENAI_API_KEY_1`, `OPENAI_API_KEY_2`, ditambah `OPENCLAW_LIVE_OPENAI_KEY` (override tunggal)
|
||||
- Penyedia: `openai`
|
||||
- Autentikasi: `OPENAI_API_KEY`
|
||||
- Rotasi opsional: `OPENAI_API_KEYS`, `OPENAI_API_KEY_1`, `OPENAI_API_KEY_2`, ditambah `OPENCLAW_LIVE_OPENAI_KEY` (satu override)
|
||||
- Contoh model: `openai/gpt-5.4`, `openai/gpt-5.4-pro`
|
||||
- CLI: `openclaw onboard --auth-choice openai-api-key`
|
||||
- Transport default adalah `auto` (WebSocket terlebih dahulu, fallback SSE)
|
||||
- Transport default adalah `auto` (WebSocket lebih dulu, fallback SSE)
|
||||
- Override per model melalui `agents.defaults.models["openai/<model>"].params.transport` (`"sse"`, `"websocket"`, atau `"auto"`)
|
||||
- Warm-up WebSocket OpenAI Responses defaultnya aktif melalui `params.openaiWsWarmup` (`true`/`false`)
|
||||
- Warm-up WebSocket OpenAI Responses default-nya aktif melalui `params.openaiWsWarmup` (`true`/`false`)
|
||||
- Pemrosesan prioritas OpenAI dapat diaktifkan melalui `agents.defaults.models["openai/<model>"].params.serviceTier`
|
||||
- `/fast` dan `params.fastMode` memetakan permintaan Responses `openai/*` langsung ke `service_tier=priority` di `api.openai.com`
|
||||
- Gunakan `params.serviceTier` saat Anda menginginkan tier eksplisit, bukan toggle `/fast` bersama
|
||||
- `/fast` dan `params.fastMode` memetakan permintaan Responses `openai/*` langsung ke `service_tier=priority` pada `api.openai.com`
|
||||
- Gunakan `params.serviceTier` saat Anda menginginkan tier eksplisit alih-alih toggle `/fast` bersama
|
||||
- Header atribusi OpenClaw tersembunyi (`originator`, `version`,
|
||||
`User-Agent`) hanya berlaku pada traffic OpenAI native ke `api.openai.com`, bukan
|
||||
`User-Agent`) hanya berlaku pada trafik OpenAI native ke `api.openai.com`, bukan
|
||||
proxy generik yang kompatibel dengan OpenAI
|
||||
- Rute OpenAI native juga mempertahankan Responses `store`, petunjuk prompt-cache, dan
|
||||
- Rute OpenAI native juga mempertahankan `store` Responses, petunjuk prompt-cache, dan
|
||||
pembentukan payload kompatibilitas reasoning OpenAI; rute proxy tidak
|
||||
- `openai/gpt-5.3-codex-spark` sengaja disembunyikan di OpenClaw karena API OpenAI live menolaknya; Spark diperlakukan sebagai khusus Codex
|
||||
- `openai/gpt-5.3-codex-spark` sengaja ditekan di OpenClaw karena API OpenAI live menolaknya; Spark diperlakukan sebagai khusus Codex
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -279,14 +235,14 @@ konfigurasi `models.providers`; cukup tetapkan autentikasi + pilih model.
|
||||
|
||||
### Anthropic
|
||||
|
||||
- Provider: `anthropic`
|
||||
- Auth: `ANTHROPIC_API_KEY`
|
||||
- Rotasi opsional: `ANTHROPIC_API_KEYS`, `ANTHROPIC_API_KEY_1`, `ANTHROPIC_API_KEY_2`, ditambah `OPENCLAW_LIVE_ANTHROPIC_KEY` (override tunggal)
|
||||
- Penyedia: `anthropic`
|
||||
- Autentikasi: `ANTHROPIC_API_KEY`
|
||||
- Rotasi opsional: `ANTHROPIC_API_KEYS`, `ANTHROPIC_API_KEY_1`, `ANTHROPIC_API_KEY_2`, ditambah `OPENCLAW_LIVE_ANTHROPIC_KEY` (satu override)
|
||||
- Contoh model: `anthropic/claude-opus-4-6`
|
||||
- CLI: `openclaw onboard --auth-choice apiKey`
|
||||
- Permintaan Anthropic publik langsung juga mendukung toggle `/fast` bersama dan `params.fastMode`, termasuk traffic yang diautentikasi dengan API key dan OAuth yang dikirim ke `api.anthropic.com`; OpenClaw memetakannya ke Anthropic `service_tier` (`auto` vs `standard_only`)
|
||||
- Catatan Anthropic: staf Anthropic memberi tahu kami bahwa penggunaan Claude CLI gaya OpenClaw diizinkan lagi, jadi OpenClaw memperlakukan penggunaan ulang Claude CLI dan penggunaan `claude -p` sebagai hal yang diizinkan untuk integrasi ini kecuali Anthropic menerbitkan kebijakan baru.
|
||||
- Setup-token Anthropic tetap tersedia sebagai jalur token OpenClaw yang didukung, tetapi OpenClaw sekarang lebih memilih penggunaan ulang Claude CLI dan `claude -p` jika tersedia.
|
||||
- Permintaan Anthropic publik langsung mendukung toggle `/fast` bersama dan `params.fastMode`, termasuk trafik yang diautentikasi dengan API key dan OAuth yang dikirim ke `api.anthropic.com`; OpenClaw memetakannya ke Anthropic `service_tier` (`auto` vs `standard_only`)
|
||||
- Catatan Anthropic: staf Anthropic memberi tahu kami bahwa penggunaan Claude CLI gaya OpenClaw diperbolehkan lagi, sehingga OpenClaw memperlakukan penggunaan ulang Claude CLI dan penggunaan `claude -p` sebagai diizinkan untuk integrasi ini kecuali Anthropic menerbitkan kebijakan baru.
|
||||
- Setup-token Anthropic tetap tersedia sebagai jalur token OpenClaw yang didukung, tetapi OpenClaw sekarang lebih memilih penggunaan ulang Claude CLI dan `claude -p` saat tersedia.
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -296,20 +252,20 @@ konfigurasi `models.providers`; cukup tetapkan autentikasi + pilih model.
|
||||
|
||||
### OpenAI Code (Codex)
|
||||
|
||||
- Provider: `openai-codex`
|
||||
- Auth: OAuth (ChatGPT)
|
||||
- Penyedia: `openai-codex`
|
||||
- Autentikasi: OAuth (ChatGPT)
|
||||
- Contoh model: `openai-codex/gpt-5.4`
|
||||
- CLI: `openclaw onboard --auth-choice openai-codex` atau `openclaw models auth login --provider openai-codex`
|
||||
- Transport default adalah `auto` (WebSocket terlebih dahulu, fallback SSE)
|
||||
- Transport default adalah `auto` (WebSocket lebih dulu, fallback SSE)
|
||||
- Override per model melalui `agents.defaults.models["openai-codex/<model>"].params.transport` (`"sse"`, `"websocket"`, atau `"auto"`)
|
||||
- `params.serviceTier` juga diteruskan pada permintaan Codex Responses native (`chatgpt.com/backend-api`)
|
||||
- `params.serviceTier` juga diteruskan pada permintaan Responses Codex native (`chatgpt.com/backend-api`)
|
||||
- Header atribusi OpenClaw tersembunyi (`originator`, `version`,
|
||||
`User-Agent`) hanya dilampirkan pada traffic Codex native ke
|
||||
`User-Agent`) hanya dilampirkan pada trafik Codex native ke
|
||||
`chatgpt.com/backend-api`, bukan proxy generik yang kompatibel dengan OpenAI
|
||||
- Berbagi toggle `/fast` dan konfigurasi `params.fastMode` yang sama seperti `openai/*` langsung; OpenClaw memetakannya ke `service_tier=priority`
|
||||
- `openai-codex/gpt-5.3-codex-spark` tetap tersedia ketika katalog OAuth Codex mengeksposnya; bergantung pada entitlement
|
||||
- Berbagi toggle `/fast` dan konfigurasi `params.fastMode` yang sama dengan `openai/*` langsung; OpenClaw memetakannya ke `service_tier=priority`
|
||||
- `openai-codex/gpt-5.3-codex-spark` tetap tersedia saat katalog OAuth Codex mengeksposnya; bergantung pada entitlement
|
||||
- `openai-codex/gpt-5.4` mempertahankan `contextWindow = 1050000` native dan `contextTokens = 272000` runtime default; override batas runtime dengan `models.providers.openai-codex.models[].contextTokens`
|
||||
- Catatan kebijakan: OAuth OpenAI Codex didukung secara eksplisit untuk tool/alur kerja eksternal seperti OpenClaw.
|
||||
- Catatan kebijakan: OAuth OpenAI Codex secara eksplisit didukung untuk tool/alur kerja eksternal seperti OpenClaw.
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -329,17 +285,17 @@ konfigurasi `models.providers`; cukup tetapkan autentikasi + pilih model.
|
||||
}
|
||||
```
|
||||
|
||||
### Opsi host bergaya langganan lainnya
|
||||
### Opsi hosted bergaya langganan lainnya
|
||||
|
||||
- [Qwen Cloud](/id/providers/qwen): permukaan provider Qwen Cloud ditambah pemetaan endpoint Alibaba DashScope dan Coding Plan
|
||||
- [MiniMax](/id/providers/minimax): akses OAuth atau API key MiniMax Coding Plan
|
||||
- [GLM Models](/id/providers/glm): endpoint Z.AI Coding Plan atau API umum
|
||||
- [Qwen Cloud](/id/providers/qwen): permukaan penyedia Qwen Cloud ditambah pemetaan endpoint Alibaba DashScope dan Coding Plan
|
||||
- [MiniMax](/id/providers/minimax): OAuth MiniMax Coding Plan atau akses API key
|
||||
- [GLM Models](/id/providers/glm): Z.AI Coding Plan atau endpoint API umum
|
||||
|
||||
### OpenCode
|
||||
|
||||
- Auth: `OPENCODE_API_KEY` (atau `OPENCODE_ZEN_API_KEY`)
|
||||
- Provider runtime Zen: `opencode`
|
||||
- Provider runtime Go: `opencode-go`
|
||||
- Autentikasi: `OPENCODE_API_KEY` (atau `OPENCODE_ZEN_API_KEY`)
|
||||
- Penyedia runtime Zen: `opencode`
|
||||
- Penyedia runtime Go: `opencode-go`
|
||||
- Contoh model: `opencode/claude-opus-4-6`, `opencode-go/kimi-k2.5`
|
||||
- CLI: `openclaw onboard --auth-choice opencode-zen` atau `openclaw onboard --auth-choice opencode-go`
|
||||
|
||||
@ -351,22 +307,22 @@ konfigurasi `models.providers`; cukup tetapkan autentikasi + pilih model.
|
||||
|
||||
### Google Gemini (API key)
|
||||
|
||||
- Provider: `google`
|
||||
- Auth: `GEMINI_API_KEY`
|
||||
- Rotasi opsional: `GEMINI_API_KEYS`, `GEMINI_API_KEY_1`, `GEMINI_API_KEY_2`, fallback `GOOGLE_API_KEY`, dan `OPENCLAW_LIVE_GEMINI_KEY` (override tunggal)
|
||||
- Penyedia: `google`
|
||||
- Autentikasi: `GEMINI_API_KEY`
|
||||
- Rotasi opsional: `GEMINI_API_KEYS`, `GEMINI_API_KEY_1`, `GEMINI_API_KEY_2`, fallback `GOOGLE_API_KEY`, dan `OPENCLAW_LIVE_GEMINI_KEY` (satu override)
|
||||
- Contoh model: `google/gemini-3.1-pro-preview`, `google/gemini-3-flash-preview`
|
||||
- Kompatibilitas: konfigurasi OpenClaw lama yang menggunakan `google/gemini-3.1-flash-preview` dinormalkan menjadi `google/gemini-3-flash-preview`
|
||||
- Kompatibilitas: konfigurasi OpenClaw lama yang menggunakan `google/gemini-3.1-flash-preview` dinormalisasi menjadi `google/gemini-3-flash-preview`
|
||||
- CLI: `openclaw onboard --auth-choice gemini-api-key`
|
||||
- Eksekusi Gemini langsung juga menerima `agents.defaults.models["google/<model>"].params.cachedContent`
|
||||
(atau `cached_content` lama) untuk meneruskan handle
|
||||
`cachedContents/...` native milik provider; cache hit Gemini muncul sebagai OpenClaw `cacheRead`
|
||||
`cachedContents/...` native penyedia; cache hit Gemini muncul sebagai OpenClaw `cacheRead`
|
||||
|
||||
### Google Vertex dan Gemini CLI
|
||||
|
||||
- Provider: `google-vertex`, `google-gemini-cli`
|
||||
- Auth: Vertex menggunakan gcloud ADC; Gemini CLI menggunakan alur OAuth-nya
|
||||
- Penyedia: `google-vertex`, `google-gemini-cli`
|
||||
- Autentikasi: Vertex menggunakan gcloud ADC; Gemini CLI menggunakan alur OAuth-nya
|
||||
- Perhatian: OAuth Gemini CLI di OpenClaw adalah integrasi tidak resmi. Beberapa pengguna melaporkan pembatasan akun Google setelah menggunakan klien pihak ketiga. Tinjau ketentuan Google dan gunakan akun yang tidak kritis jika Anda memilih untuk melanjutkan.
|
||||
- OAuth Gemini CLI dikirim sebagai bagian dari plugin `google` bawaan.
|
||||
- OAuth Gemini CLI dikirim sebagai bagian dari Plugin `google` bawaan.
|
||||
- Instal Gemini CLI terlebih dahulu:
|
||||
- `brew install gemini-cli`
|
||||
- atau `npm install -g @google/gemini-cli`
|
||||
@ -374,66 +330,66 @@ konfigurasi `models.providers`; cukup tetapkan autentikasi + pilih model.
|
||||
- Login: `openclaw models auth login --provider google-gemini-cli --set-default`
|
||||
- Model default: `google-gemini-cli/gemini-3-flash-preview`
|
||||
- Catatan: Anda **tidak** menempelkan client id atau secret ke `openclaw.json`. Alur login CLI menyimpan
|
||||
token dalam profil autentikasi di host gateway.
|
||||
- Jika permintaan gagal setelah login, setel `GOOGLE_CLOUD_PROJECT` atau `GOOGLE_CLOUD_PROJECT_ID` di host gateway.
|
||||
- Balasan JSON Gemini CLI diurai dari `response`; penggunaan fallback ke
|
||||
`stats`, dengan `stats.cached` dinormalkan menjadi OpenClaw `cacheRead`.
|
||||
token dalam profil autentikasi di host Gateway.
|
||||
- Jika permintaan gagal setelah login, setel `GOOGLE_CLOUD_PROJECT` atau `GOOGLE_CLOUD_PROJECT_ID` di host Gateway.
|
||||
- Balasan JSON Gemini CLI diurai dari `response`; penggunaan akan fallback ke
|
||||
`stats`, dengan `stats.cached` dinormalisasi menjadi OpenClaw `cacheRead`.
|
||||
|
||||
### Z.AI (GLM)
|
||||
|
||||
- Provider: `zai`
|
||||
- Auth: `ZAI_API_KEY`
|
||||
- Penyedia: `zai`
|
||||
- Autentikasi: `ZAI_API_KEY`
|
||||
- Contoh model: `zai/glm-5.1`
|
||||
- CLI: `openclaw onboard --auth-choice zai-api-key`
|
||||
- Alias: `z.ai/*` dan `z-ai/*` dinormalkan menjadi `zai/*`
|
||||
- Alias: `z.ai/*` dan `z-ai/*` dinormalisasi menjadi `zai/*`
|
||||
- `zai-api-key` mendeteksi otomatis endpoint Z.AI yang cocok; `zai-coding-global`, `zai-coding-cn`, `zai-global`, dan `zai-cn` memaksa permukaan tertentu
|
||||
|
||||
### Vercel AI Gateway
|
||||
|
||||
- Provider: `vercel-ai-gateway`
|
||||
- Auth: `AI_GATEWAY_API_KEY`
|
||||
- Penyedia: `vercel-ai-gateway`
|
||||
- Autentikasi: `AI_GATEWAY_API_KEY`
|
||||
- Contoh model: `vercel-ai-gateway/anthropic/claude-opus-4.6`
|
||||
- CLI: `openclaw onboard --auth-choice ai-gateway-api-key`
|
||||
|
||||
### Kilo Gateway
|
||||
|
||||
- Provider: `kilocode`
|
||||
- Auth: `KILOCODE_API_KEY`
|
||||
- Penyedia: `kilocode`
|
||||
- Autentikasi: `KILOCODE_API_KEY`
|
||||
- Contoh model: `kilocode/kilo/auto`
|
||||
- CLI: `openclaw onboard --auth-choice kilocode-api-key`
|
||||
- Base URL: `https://api.kilo.ai/api/gateway/`
|
||||
- Katalog fallback statis menyertakan `kilocode/kilo/auto`; discovery live
|
||||
- Katalog fallback statis dikirim dengan `kilocode/kilo/auto`; penemuan live
|
||||
`https://api.kilo.ai/api/gateway/models` dapat memperluas katalog runtime
|
||||
lebih lanjut.
|
||||
- Rute upstream yang tepat di balik `kilocode/kilo/auto` dimiliki oleh Kilo Gateway,
|
||||
bukan di-hardcode di OpenClaw.
|
||||
- Routing upstream yang tepat di balik `kilocode/kilo/auto` dimiliki oleh Kilo Gateway,
|
||||
tidak di-hardcode di OpenClaw.
|
||||
|
||||
Lihat [/providers/kilocode](/id/providers/kilocode) untuk detail penyiapan.
|
||||
|
||||
### Plugin provider bawaan lainnya
|
||||
### Plugin penyedia bawaan lainnya
|
||||
|
||||
- OpenRouter: `openrouter` (`OPENROUTER_API_KEY`)
|
||||
- Contoh model: `openrouter/auto`
|
||||
- OpenClaw menerapkan header atribusi aplikasi terdokumentasi milik OpenRouter hanya ketika
|
||||
- OpenClaw menerapkan header atribusi aplikasi yang didokumentasikan OpenRouter hanya saat
|
||||
permintaan benar-benar menargetkan `openrouter.ai`
|
||||
- Penanda `cache_control` Anthropic khusus OpenRouter juga dibatasi ke
|
||||
rute OpenRouter yang terverifikasi, bukan URL proxy sembarang
|
||||
- OpenRouter tetap berada di jalur gaya proxy yang kompatibel dengan OpenAI, sehingga
|
||||
- OpenRouter tetap berada di jalur kompatibel OpenAI bergaya proxy, sehingga
|
||||
pembentukan permintaan khusus OpenAI native (`serviceTier`, Responses `store`,
|
||||
petunjuk prompt-cache, payload kompatibilitas reasoning OpenAI) tidak diteruskan
|
||||
- Referensi OpenRouter berbasis Gemini hanya mempertahankan sanitasi thought-signature proxy-Gemini;
|
||||
validasi replay Gemini native dan penulisan ulang bootstrap tetap nonaktif
|
||||
validasi replay Gemini native dan penulisan ulang bootstrap tetap dinonaktifkan
|
||||
- Kilo Gateway: `kilocode` (`KILOCODE_API_KEY`)
|
||||
- Contoh model: `kilocode/kilo/auto`
|
||||
- Referensi Kilo berbasis Gemini mempertahankan jalur sanitasi thought-signature
|
||||
proxy-Gemini yang sama; `kilocode/kilo/auto` dan petunjuk proxy-reasoning-tidak-didukung lainnya
|
||||
melewati injeksi reasoning proxy
|
||||
- MiniMax: `minimax` (API key) dan `minimax-portal` (OAuth)
|
||||
- Auth: `MINIMAX_API_KEY` untuk `minimax`; `MINIMAX_OAUTH_TOKEN` atau `MINIMAX_API_KEY` untuk `minimax-portal`
|
||||
- Autentikasi: `MINIMAX_API_KEY` untuk `minimax`; `MINIMAX_OAUTH_TOKEN` atau `MINIMAX_API_KEY` untuk `minimax-portal`
|
||||
- Contoh model: `minimax/MiniMax-M2.7` atau `minimax-portal/MiniMax-M2.7`
|
||||
- Penyiapan onboarding/API key MiniMax menulis definisi model M2.7 eksplisit dengan
|
||||
`input: ["text", "image"]`; katalog provider bawaan menjaga referensi chat
|
||||
tetap hanya teks sampai konfigurasi provider tersebut dimaterialisasi
|
||||
- Onboarding MiniMax/penyiapan API key menulis definisi model M2.7 eksplisit dengan
|
||||
`input: ["text", "image"]`; katalog penyedia bawaan mempertahankan referensi chat
|
||||
hanya teks sampai konfigurasi penyedia tersebut dimaterialisasi
|
||||
- Moonshot: `moonshot` (`MOONSHOT_API_KEY`)
|
||||
- Contoh model: `moonshot/kimi-k2.5`
|
||||
- Kimi Coding: `kimi` (`KIMI_API_KEY` atau `KIMICODE_API_KEY`)
|
||||
@ -459,10 +415,10 @@ Lihat [/providers/kilocode](/id/providers/kilocode) untuk detail penyiapan.
|
||||
- BytePlus: `byteplus` (`BYTEPLUS_API_KEY`)
|
||||
- Contoh model: `byteplus-plan/ark-code-latest`
|
||||
- xAI: `xai` (`XAI_API_KEY`)
|
||||
- Permintaan xAI bawaan native menggunakan jalur xAI Responses
|
||||
- Permintaan xAI native bawaan menggunakan jalur xAI Responses
|
||||
- `/fast` atau `params.fastMode: true` menulis ulang `grok-3`, `grok-3-mini`,
|
||||
`grok-4`, dan `grok-4-0709` ke varian `*-fast` mereka
|
||||
- `tool_stream` defaultnya aktif; setel
|
||||
- `tool_stream` aktif secara default; setel
|
||||
`agents.defaults.models["xai/<model>"].params.tool_stream` ke `false` untuk
|
||||
menonaktifkannya
|
||||
- Mistral: `mistral` (`MISTRAL_API_KEY`)
|
||||
@ -471,27 +427,27 @@ Lihat [/providers/kilocode](/id/providers/kilocode) untuk detail penyiapan.
|
||||
- Groq: `groq` (`GROQ_API_KEY`)
|
||||
- Cerebras: `cerebras` (`CEREBRAS_API_KEY`)
|
||||
- Model GLM di Cerebras menggunakan id `zai-glm-4.7` dan `zai-glm-4.6`.
|
||||
- Base URL yang kompatibel dengan OpenAI: `https://api.cerebras.ai/v1`.
|
||||
- Base URL kompatibel OpenAI: `https://api.cerebras.ai/v1`.
|
||||
- GitHub Copilot: `github-copilot` (`COPILOT_GITHUB_TOKEN` / `GH_TOKEN` / `GITHUB_TOKEN`)
|
||||
- Contoh model Hugging Face Inference: `huggingface/deepseek-ai/DeepSeek-R1`; CLI: `openclaw onboard --auth-choice huggingface-api-key`. Lihat [Hugging Face (Inference)](/id/providers/huggingface).
|
||||
|
||||
## Provider melalui `models.providers` (kustom/base URL)
|
||||
## Penyedia melalui `models.providers` (kustom/base URL)
|
||||
|
||||
Gunakan `models.providers` (atau `models.json`) untuk menambahkan provider **kustom** atau
|
||||
proxy yang kompatibel dengan OpenAI/Anthropic.
|
||||
Gunakan `models.providers` (atau `models.json`) untuk menambahkan penyedia
|
||||
**kustom** atau proxy yang kompatibel dengan OpenAI/Anthropic.
|
||||
|
||||
Banyak plugin provider bawaan di bawah ini sudah memublikasikan katalog default.
|
||||
Gunakan entri `models.providers.<id>` eksplisit hanya ketika Anda ingin menimpa
|
||||
Banyak Plugin penyedia bawaan di bawah ini sudah memublikasikan katalog default.
|
||||
Gunakan entri `models.providers.<id>` eksplisit hanya saat Anda ingin mengganti
|
||||
base URL, header, atau daftar model default.
|
||||
|
||||
### Moonshot AI (Kimi)
|
||||
|
||||
Moonshot dikirim sebagai plugin provider bawaan. Gunakan provider bawaan secara default,
|
||||
dan tambahkan entri `models.providers.moonshot` eksplisit hanya ketika Anda
|
||||
perlu menimpa base URL atau metadata model:
|
||||
Moonshot dikirim sebagai Plugin penyedia bawaan. Gunakan penyedia bawaan secara
|
||||
default, dan tambahkan entri `models.providers.moonshot` eksplisit hanya saat Anda
|
||||
perlu mengganti base URL atau metadata model:
|
||||
|
||||
- Provider: `moonshot`
|
||||
- Auth: `MOONSHOT_API_KEY`
|
||||
- Penyedia: `moonshot`
|
||||
- Autentikasi: `MOONSHOT_API_KEY`
|
||||
- Contoh model: `moonshot/kimi-k2.5`
|
||||
- CLI: `openclaw onboard --auth-choice moonshot-api-key` atau `openclaw onboard --auth-choice moonshot-api-key-cn`
|
||||
|
||||
@ -529,8 +485,8 @@ ID model Kimi K2:
|
||||
|
||||
Kimi Coding menggunakan endpoint Moonshot AI yang kompatibel dengan Anthropic:
|
||||
|
||||
- Provider: `kimi`
|
||||
- Auth: `KIMI_API_KEY`
|
||||
- Penyedia: `kimi`
|
||||
- Autentikasi: `KIMI_API_KEY`
|
||||
- Contoh model: `kimi/kimi-code`
|
||||
|
||||
```json5
|
||||
@ -546,10 +502,10 @@ Kimi Coding menggunakan endpoint Moonshot AI yang kompatibel dengan Anthropic:
|
||||
|
||||
### Volcano Engine (Doubao)
|
||||
|
||||
Volcano Engine (火山引擎) menyediakan akses ke Doubao dan model lain di China.
|
||||
Volcano Engine (火山引擎) menyediakan akses ke Doubao dan model lainnya di Tiongkok.
|
||||
|
||||
- Provider: `volcengine` (coding: `volcengine-plan`)
|
||||
- Auth: `VOLCANO_ENGINE_API_KEY`
|
||||
- Penyedia: `volcengine` (coding: `volcengine-plan`)
|
||||
- Autentikasi: `VOLCANO_ENGINE_API_KEY`
|
||||
- Contoh model: `volcengine-plan/ark-code-latest`
|
||||
- CLI: `openclaw onboard --auth-choice volcengine-api-key`
|
||||
|
||||
@ -561,13 +517,13 @@ Volcano Engine (火山引擎) menyediakan akses ke Doubao dan model lain di Chin
|
||||
}
|
||||
```
|
||||
|
||||
Onboarding default ke permukaan coding, tetapi katalog umum `volcengine/*`
|
||||
Onboarding secara default menggunakan permukaan coding, tetapi katalog umum `volcengine/*`
|
||||
juga didaftarkan pada saat yang sama.
|
||||
|
||||
Di pemilih model onboarding/konfigurasi, pilihan autentikasi Volcengine lebih mengutamakan baris
|
||||
`volcengine/*` dan `volcengine-plan/*`. Jika model tersebut belum dimuat,
|
||||
OpenClaw fallback ke katalog yang tidak difilter alih-alih menampilkan pemilih
|
||||
bercakupan provider yang kosong.
|
||||
Dalam pemilih onboarding/konfigurasi model, pilihan autentikasi Volcengine lebih mengutamakan baris
|
||||
`volcengine/*` dan `volcengine-plan/*`. Jika model-model tersebut belum dimuat,
|
||||
OpenClaw akan fallback ke katalog yang tidak difilter alih-alih menampilkan pemilih
|
||||
bercakupan penyedia yang kosong.
|
||||
|
||||
Model yang tersedia:
|
||||
|
||||
@ -589,8 +545,8 @@ Model coding (`volcengine-plan`):
|
||||
|
||||
BytePlus ARK menyediakan akses ke model yang sama seperti Volcano Engine untuk pengguna internasional.
|
||||
|
||||
- Provider: `byteplus` (coding: `byteplus-plan`)
|
||||
- Auth: `BYTEPLUS_API_KEY`
|
||||
- Penyedia: `byteplus` (coding: `byteplus-plan`)
|
||||
- Autentikasi: `BYTEPLUS_API_KEY`
|
||||
- Contoh model: `byteplus-plan/ark-code-latest`
|
||||
- CLI: `openclaw onboard --auth-choice byteplus-api-key`
|
||||
|
||||
@ -602,13 +558,13 @@ BytePlus ARK menyediakan akses ke model yang sama seperti Volcano Engine untuk p
|
||||
}
|
||||
```
|
||||
|
||||
Onboarding default ke permukaan coding, tetapi katalog umum `byteplus/*`
|
||||
Onboarding secara default menggunakan permukaan coding, tetapi katalog umum `byteplus/*`
|
||||
juga didaftarkan pada saat yang sama.
|
||||
|
||||
Di pemilih model onboarding/konfigurasi, pilihan autentikasi BytePlus lebih mengutamakan baris
|
||||
`byteplus/*` dan `byteplus-plan/*`. Jika model tersebut belum dimuat,
|
||||
OpenClaw fallback ke katalog yang tidak difilter alih-alih menampilkan pemilih
|
||||
bercakupan provider yang kosong.
|
||||
Dalam pemilih onboarding/konfigurasi model, pilihan autentikasi BytePlus lebih mengutamakan baris
|
||||
`byteplus/*` dan `byteplus-plan/*`. Jika model-model tersebut belum dimuat,
|
||||
OpenClaw akan fallback ke katalog yang tidak difilter alih-alih menampilkan pemilih
|
||||
bercakupan penyedia yang kosong.
|
||||
|
||||
Model yang tersedia:
|
||||
|
||||
@ -626,10 +582,10 @@ Model coding (`byteplus-plan`):
|
||||
|
||||
### Synthetic
|
||||
|
||||
Synthetic menyediakan model yang kompatibel dengan Anthropic di balik provider `synthetic`:
|
||||
Synthetic menyediakan model yang kompatibel dengan Anthropic di balik penyedia `synthetic`:
|
||||
|
||||
- Provider: `synthetic`
|
||||
- Auth: `SYNTHETIC_API_KEY`
|
||||
- Penyedia: `synthetic`
|
||||
- Autentikasi: `SYNTHETIC_API_KEY`
|
||||
- Contoh model: `synthetic/hf:MiniMaxAI/MiniMax-M2.5`
|
||||
- CLI: `openclaw onboard --auth-choice synthetic-api-key`
|
||||
|
||||
@ -660,33 +616,55 @@ MiniMax dikonfigurasi melalui `models.providers` karena menggunakan endpoint kus
|
||||
- OAuth MiniMax (CN): `--auth-choice minimax-cn-oauth`
|
||||
- API key MiniMax (Global): `--auth-choice minimax-global-api`
|
||||
- API key MiniMax (CN): `--auth-choice minimax-cn-api`
|
||||
- Auth: `MINIMAX_API_KEY` untuk `minimax`; `MINIMAX_OAUTH_TOKEN` atau
|
||||
- Autentikasi: `MINIMAX_API_KEY` untuk `minimax`; `MINIMAX_OAUTH_TOKEN` atau
|
||||
`MINIMAX_API_KEY` untuk `minimax-portal`
|
||||
|
||||
Lihat [/providers/minimax](/id/providers/minimax) untuk detail penyiapan, opsi model, dan cuplikan konfigurasi.
|
||||
|
||||
Pada jalur streaming MiniMax yang kompatibel dengan Anthropic, OpenClaw menonaktifkan thinking secara default
|
||||
kecuali Anda secara eksplisit mengaturnya, dan `/fast on` menulis ulang
|
||||
kecuali Anda menetapkannya secara eksplisit, dan `/fast on` menulis ulang
|
||||
`MiniMax-M2.7` menjadi `MiniMax-M2.7-highspeed`.
|
||||
|
||||
Pembagian capability yang dimiliki plugin:
|
||||
Pembagian capability yang dimiliki Plugin:
|
||||
|
||||
- Default teks/chat tetap pada `minimax/MiniMax-M2.7`
|
||||
- Pembuatan gambar adalah `minimax/image-01` atau `minimax-portal/image-01`
|
||||
- Pemahaman gambar adalah `MiniMax-VL-01` milik plugin pada kedua jalur autentikasi MiniMax
|
||||
- Pencarian web tetap pada id provider `minimax`
|
||||
- Pemahaman gambar adalah `MiniMax-VL-01` yang dimiliki Plugin pada kedua jalur autentikasi MiniMax
|
||||
- Pencarian web tetap pada id penyedia `minimax`
|
||||
|
||||
### LM Studio
|
||||
|
||||
LM Studio dikirim sebagai Plugin penyedia bawaan yang menggunakan API native:
|
||||
|
||||
- Penyedia: `lmstudio`
|
||||
- Autentikasi: `LM_API_TOKEN`
|
||||
- Base URL inferensi default: `http://localhost:1234/v1`
|
||||
|
||||
Lalu tetapkan model (ganti dengan salah satu ID yang dikembalikan oleh `http://localhost:1234/api/v1/models`):
|
||||
|
||||
```json5
|
||||
{
|
||||
agents: {
|
||||
defaults: { model: { primary: "lmstudio/openai/gpt-oss-20b" } },
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
OpenClaw menggunakan `/api/v1/models` dan `/api/v1/models/load` native milik LM Studio
|
||||
untuk penemuan + auto-load, dengan `/v1/chat/completions` untuk inferensi secara default.
|
||||
Lihat [/providers/lmstudio](/id/providers/lmstudio) untuk penyiapan dan pemecahan masalah.
|
||||
|
||||
### Ollama
|
||||
|
||||
Ollama dikirim sebagai plugin provider bawaan dan menggunakan API native Ollama:
|
||||
Ollama dikirim sebagai Plugin penyedia bawaan dan menggunakan API native Ollama:
|
||||
|
||||
- Provider: `ollama`
|
||||
- Auth: Tidak diperlukan (server lokal)
|
||||
- Penyedia: `ollama`
|
||||
- Autentikasi: Tidak diperlukan (server lokal)
|
||||
- Contoh model: `ollama/llama3.3`
|
||||
- Instalasi: [https://ollama.com/download](https://ollama.com/download)
|
||||
|
||||
```bash
|
||||
# Instal Ollama, lalu pull sebuah model:
|
||||
# Instal Ollama, lalu tarik sebuah model:
|
||||
ollama pull llama3.3
|
||||
```
|
||||
|
||||
@ -699,26 +677,25 @@ ollama pull llama3.3
|
||||
```
|
||||
|
||||
Ollama dideteksi secara lokal di `http://127.0.0.1:11434` saat Anda memilih ikut serta dengan
|
||||
`OLLAMA_API_KEY`, dan plugin provider bawaan menambahkan Ollama langsung ke
|
||||
`OLLAMA_API_KEY`, dan Plugin penyedia bawaan menambahkan Ollama langsung ke
|
||||
`openclaw onboard` dan pemilih model. Lihat [/providers/ollama](/id/providers/ollama)
|
||||
untuk onboarding, mode cloud/lokal, dan konfigurasi kustom.
|
||||
|
||||
### vLLM
|
||||
|
||||
vLLM dikirim sebagai plugin provider bawaan untuk server
|
||||
yang kompatibel dengan OpenAI lokal/self-hosted:
|
||||
vLLM dikirim sebagai Plugin penyedia bawaan untuk server lokal/self-hosted yang kompatibel dengan OpenAI:
|
||||
|
||||
- Provider: `vllm`
|
||||
- Auth: Opsional (bergantung pada server Anda)
|
||||
- Penyedia: `vllm`
|
||||
- Autentikasi: Opsional (tergantung server Anda)
|
||||
- Base URL default: `http://127.0.0.1:8000/v1`
|
||||
|
||||
Untuk ikut serta dalam auto-discovery secara lokal (nilai apa pun berfungsi jika server Anda tidak mewajibkan auth):
|
||||
Untuk ikut serta dalam auto-discovery secara lokal (nilai apa pun berfungsi jika server Anda tidak menegakkan autentikasi):
|
||||
|
||||
```bash
|
||||
export VLLM_API_KEY="vllm-local"
|
||||
```
|
||||
|
||||
Lalu setel sebuah model (ganti dengan salah satu ID yang dikembalikan oleh `/v1/models`):
|
||||
Lalu tetapkan model (ganti dengan salah satu ID yang dikembalikan oleh `/v1/models`):
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -732,21 +709,21 @@ Lihat [/providers/vllm](/id/providers/vllm) untuk detail.
|
||||
|
||||
### SGLang
|
||||
|
||||
SGLang dikirim sebagai plugin provider bawaan untuk server
|
||||
yang kompatibel dengan OpenAI self-hosted berkecepatan tinggi:
|
||||
SGLang dikirim sebagai Plugin penyedia bawaan untuk server self-hosted cepat
|
||||
yang kompatibel dengan OpenAI:
|
||||
|
||||
- Provider: `sglang`
|
||||
- Auth: Opsional (bergantung pada server Anda)
|
||||
- Penyedia: `sglang`
|
||||
- Autentikasi: Opsional (tergantung server Anda)
|
||||
- Base URL default: `http://127.0.0.1:30000/v1`
|
||||
|
||||
Untuk ikut serta dalam auto-discovery secara lokal (nilai apa pun berfungsi jika server Anda tidak
|
||||
mewajibkan auth):
|
||||
menegakkan autentikasi):
|
||||
|
||||
```bash
|
||||
export SGLANG_API_KEY="sglang-local"
|
||||
```
|
||||
|
||||
Lalu setel sebuah model (ganti dengan salah satu ID yang dikembalikan oleh `/v1/models`):
|
||||
Lalu tetapkan model (ganti dengan salah satu ID yang dikembalikan oleh `/v1/models`):
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -767,14 +744,14 @@ Contoh (kompatibel dengan OpenAI):
|
||||
agents: {
|
||||
defaults: {
|
||||
model: { primary: "lmstudio/my-local-model" },
|
||||
models: { "lmstudio/my-local-model": { alias: "Lokal" } },
|
||||
models: { "lmstudio/my-local-model": { alias: "Local" } },
|
||||
},
|
||||
},
|
||||
models: {
|
||||
providers: {
|
||||
lmstudio: {
|
||||
baseUrl: "http://localhost:1234/v1",
|
||||
apiKey: "LMSTUDIO_KEY",
|
||||
apiKey: "${LM_API_TOKEN}",
|
||||
api: "openai-completions",
|
||||
models: [
|
||||
{
|
||||
@ -795,21 +772,20 @@ Contoh (kompatibel dengan OpenAI):
|
||||
|
||||
Catatan:
|
||||
|
||||
- Untuk provider kustom, `reasoning`, `input`, `cost`, `contextWindow`, dan `maxTokens` bersifat opsional.
|
||||
Jika dihilangkan, OpenClaw default ke:
|
||||
- Untuk penyedia kustom, `reasoning`, `input`, `cost`, `contextWindow`, dan `maxTokens` bersifat opsional.
|
||||
Jika dihilangkan, OpenClaw menggunakan default:
|
||||
- `reasoning: false`
|
||||
- `input: ["text"]`
|
||||
- `cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }`
|
||||
- `contextWindow: 200000`
|
||||
- `maxTokens: 8192`
|
||||
- Disarankan: tetapkan nilai eksplisit yang sesuai dengan batas proxy/model Anda.
|
||||
- Untuk `api: "openai-completions"` pada endpoint non-native (setiap `baseUrl` tidak kosong yang host-nya bukan `api.openai.com`), OpenClaw memaksa `compat.supportsDeveloperRole: false` untuk menghindari error provider 400 untuk peran `developer` yang tidak didukung.
|
||||
- Rute gaya proxy yang kompatibel dengan OpenAI juga melewati pembentukan permintaan khusus OpenAI native:
|
||||
tidak ada `service_tier`, tidak ada Responses `store`, tidak ada petunjuk prompt-cache, tidak ada
|
||||
pembentukan payload kompatibilitas reasoning OpenAI, dan tidak ada header atribusi OpenClaw
|
||||
tersembunyi.
|
||||
- Jika `baseUrl` kosong/tidak diisi, OpenClaw mempertahankan perilaku OpenAI default (yang meresolusikan ke `api.openai.com`).
|
||||
- Demi keamanan, `compat.supportsDeveloperRole: true` yang eksplisit tetap dioverride pada endpoint `openai-completions` non-native.
|
||||
- Untuk `api: "openai-completions"` pada endpoint non-native (setiap `baseUrl` tidak kosong yang host-nya bukan `api.openai.com`), OpenClaw memaksa `compat.supportsDeveloperRole: false` untuk menghindari error 400 dari penyedia untuk peran `developer` yang tidak didukung.
|
||||
- Rute kompatibel OpenAI bergaya proxy juga melewati pembentukan permintaan khusus OpenAI native:
|
||||
tidak ada `service_tier`, tidak ada `store` Responses, tidak ada petunjuk prompt-cache, tidak ada
|
||||
pembentukan payload kompatibilitas reasoning OpenAI, dan tidak ada header atribusi OpenClaw tersembunyi.
|
||||
- Jika `baseUrl` kosong/dihilangkan, OpenClaw mempertahankan perilaku OpenAI default (yang diselesaikan ke `api.openai.com`).
|
||||
- Demi keamanan, `compat.supportsDeveloperRole: true` eksplisit tetap dioverride pada endpoint `openai-completions` non-native.
|
||||
|
||||
## Contoh CLI
|
||||
|
||||
@ -824,6 +800,6 @@ Lihat juga: [/gateway/configuration](/id/gateway/configuration) untuk contoh kon
|
||||
## Terkait
|
||||
|
||||
- [Models](/id/concepts/models) — konfigurasi model dan alias
|
||||
- [Model Failover](/id/concepts/model-failover) — rantai fallback dan perilaku percobaan ulang
|
||||
- [Configuration Reference](/id/gateway/configuration-reference#agent-defaults) — key konfigurasi model
|
||||
- [Providers](/id/providers) — panduan penyiapan per provider
|
||||
- [Model Failover](/id/concepts/model-failover) — rantai fallback dan perilaku retry
|
||||
- [Configuration Reference](/id/gateway/configuration-reference#agent-defaults) — kunci konfigurasi model
|
||||
- [Providers](/id/providers) — panduan penyiapan per penyedia
|
||||
|
||||
@ -3,28 +3,32 @@ read_when:
|
||||
- Memperluas qa-lab atau qa-channel
|
||||
- Menambahkan skenario QA yang didukung repo
|
||||
- Membangun otomatisasi QA dengan realisme lebih tinggi di sekitar dasbor Gateway
|
||||
summary: Bentuk otomatisasi QA privat untuk qa-lab, qa-channel, skenario berseed, dan laporan protokol
|
||||
title: Otomatisasi QA E2E
|
||||
summary: Bentuk otomatisasi QA privat untuk qa-lab, qa-channel, skenario seeded, dan laporan protokol
|
||||
title: Otomatisasi E2E QA
|
||||
x-i18n:
|
||||
generated_at: "2026-04-12T23:28:10Z"
|
||||
generated_at: "2026-04-13T08:50:46Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: b9fe27dc049823d5e3eb7ae1eac6aad21ed9e917425611fb1dbcb28ab9210d5e
|
||||
source_hash: a4a4f5c765163565c95c2a071f201775fd9d8d60cad4ff25d71e4710559c1570
|
||||
source_path: concepts/qa-e2e-automation.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# Otomatisasi QA E2E
|
||||
# Otomatisasi E2E QA
|
||||
|
||||
Stack QA privat ditujukan untuk menguji OpenClaw dengan cara yang lebih realistis dan menyerupai channel dibandingkan yang bisa dilakukan oleh satu unit test.
|
||||
Stack QA privat dimaksudkan untuk menguji OpenClaw dengan cara yang lebih realistis,
|
||||
berbentuk channel, dibandingkan yang bisa dicapai oleh satu unit test.
|
||||
|
||||
Komponen saat ini:
|
||||
|
||||
- `extensions/qa-channel`: channel pesan sintetis dengan permukaan DM, channel, thread, reaksi, edit, dan hapus.
|
||||
- `extensions/qa-lab`: UI debugger dan bus QA untuk mengamati transkrip, menyuntikkan pesan masuk, dan mengekspor laporan Markdown.
|
||||
- `qa/`: aset seed yang didukung repo untuk tugas awal dan skenario QA dasar.
|
||||
- `extensions/qa-channel`: channel pesan sintetis dengan permukaan DM, channel, thread,
|
||||
reaction, edit, dan delete.
|
||||
- `extensions/qa-lab`: UI debugger dan bus QA untuk mengamati transkrip,
|
||||
menyuntikkan pesan masuk, dan mengekspor laporan Markdown.
|
||||
- `qa/`: aset seed yang didukung repo untuk tugas kickoff dan skenario QA
|
||||
dasar.
|
||||
|
||||
Alur operator QA saat ini berupa situs QA dua panel:
|
||||
Alur operator QA saat ini adalah situs QA dua panel:
|
||||
|
||||
- Kiri: dasbor Gateway (Control UI) dengan agen.
|
||||
- Kanan: QA Lab, menampilkan transkrip bergaya Slack dan rencana skenario.
|
||||
@ -35,9 +39,13 @@ Jalankan dengan:
|
||||
pnpm qa:lab:up
|
||||
```
|
||||
|
||||
Perintah itu membangun situs QA, memulai lane Gateway berbasis Docker, dan menampilkan halaman QA Lab tempat operator atau loop otomatisasi dapat memberi agen misi QA, mengamati perilaku channel nyata, dan mencatat apa yang berhasil, gagal, atau tetap terblokir.
|
||||
Perintah itu membangun situs QA, memulai lane Gateway berbasis Docker, dan mengekspos
|
||||
halaman QA Lab tempat operator atau loop otomatisasi dapat memberi agen
|
||||
misi QA, mengamati perilaku channel nyata, dan mencatat apa yang berhasil, gagal, atau
|
||||
tetap terblokir.
|
||||
|
||||
Untuk iterasi UI QA Lab yang lebih cepat tanpa membangun ulang image Docker setiap kali, mulai stack dengan bundle QA Lab yang di-bind mount:
|
||||
Untuk iterasi UI QA Lab yang lebih cepat tanpa membangun ulang image Docker setiap kali,
|
||||
mulai stack dengan bundle QA Lab yang di-bind-mount:
|
||||
|
||||
```bash
|
||||
pnpm openclaw qa docker-build-image
|
||||
@ -46,45 +54,66 @@ pnpm qa:lab:up:fast
|
||||
pnpm qa:lab:watch
|
||||
```
|
||||
|
||||
`qa:lab:up:fast` menjaga layanan Docker tetap berjalan pada image yang telah dibangun sebelumnya dan melakukan bind-mount `extensions/qa-lab/web/dist` ke dalam kontainer `qa-lab`. `qa:lab:watch` membangun ulang bundle tersebut saat ada perubahan, dan browser akan memuat ulang secara otomatis ketika hash aset QA Lab berubah.
|
||||
`qa:lab:up:fast` menjaga layanan Docker tetap berjalan pada image yang sudah dibangun sebelumnya dan melakukan bind-mount
|
||||
`extensions/qa-lab/web/dist` ke dalam container `qa-lab`. `qa:lab:watch`
|
||||
membangun ulang bundle tersebut saat ada perubahan, dan browser akan memuat ulang otomatis saat hash aset QA Lab berubah.
|
||||
|
||||
Untuk lane smoke Matrix dengan transport nyata, jalankan:
|
||||
Untuk lane smoke Matrix transport-real, jalankan:
|
||||
|
||||
```bash
|
||||
pnpm openclaw qa matrix
|
||||
```
|
||||
|
||||
Lane tersebut menyediakan homeserver Tuwunel sekali pakai di Docker, mendaftarkan pengguna driver, SUT, dan observer sementara, membuat satu room privat, lalu menjalankan Plugin Matrix nyata di dalam child Gateway QA. Lane transport langsung menjaga config child tetap dibatasi pada transport yang sedang diuji, sehingga Matrix berjalan tanpa `qa-channel` di config child.
|
||||
Lane itu menyediakan homeserver Tuwunel sekali pakai di Docker, mendaftarkan
|
||||
pengguna driver, SUT, dan observer sementara, membuat satu room privat, lalu menjalankan
|
||||
Plugin Matrix nyata di dalam child Gateway QA. Lane transport live menjaga config child tetap terbatas pada transport yang diuji, sehingga Matrix berjalan tanpa
|
||||
`qa-channel` dalam config child.
|
||||
|
||||
Untuk lane smoke Telegram dengan transport nyata, jalankan:
|
||||
Untuk lane smoke Telegram transport-real, jalankan:
|
||||
|
||||
```bash
|
||||
pnpm openclaw qa telegram
|
||||
```
|
||||
|
||||
Lane tersebut menargetkan satu grup Telegram privat nyata alih-alih menyediakan server sekali pakai. Lane ini memerlukan `OPENCLAW_QA_TELEGRAM_GROUP_ID`, `OPENCLAW_QA_TELEGRAM_DRIVER_BOT_TOKEN`, dan `OPENCLAW_QA_TELEGRAM_SUT_BOT_TOKEN`, serta dua bot berbeda di grup privat yang sama. Bot SUT harus memiliki username Telegram, dan observasi bot-ke-bot bekerja paling baik ketika kedua bot mengaktifkan Bot-to-Bot Communication Mode di `@BotFather`.
|
||||
Lane itu menargetkan satu grup Telegram privat nyata alih-alih menyediakan server sekali pakai. Lane ini memerlukan `OPENCLAW_QA_TELEGRAM_GROUP_ID`,
|
||||
`OPENCLAW_QA_TELEGRAM_DRIVER_BOT_TOKEN`, dan
|
||||
`OPENCLAW_QA_TELEGRAM_SUT_BOT_TOKEN`, serta dua bot berbeda di grup
|
||||
privat yang sama. Bot SUT harus memiliki username Telegram, dan
|
||||
observasi bot-ke-bot bekerja paling baik ketika kedua bot mengaktifkan
|
||||
Bot-to-Bot Communication Mode di `@BotFather`.
|
||||
|
||||
Lane transport langsung sekarang berbagi satu kontrak yang lebih kecil alih-alih masing-masing membuat bentuk daftar skenarionya sendiri:
|
||||
Lane transport live kini berbagi satu kontrak yang lebih kecil alih-alih masing-masing
|
||||
menciptakan bentuk daftar skenario sendiri:
|
||||
|
||||
`qa-channel` tetap menjadi suite perilaku produk sintetis yang luas dan bukan bagian dari matriks cakupan transport langsung.
|
||||
`qa-channel` tetap menjadi suite luas untuk perilaku produk sintetis dan bukan bagian
|
||||
dari matriks cakupan transport live.
|
||||
|
||||
| Lane | Canary | Penyaringan mention | Blok allowlist | Balasan tingkat atas | Lanjut setelah restart | Tindak lanjut thread | Isolasi thread | Observasi reaksi | Perintah help |
|
||||
| -------- | ------ | ------------------- | -------------- | -------------------- | ---------------------- | -------------------- | -------------- | ---------------- | ------------- |
|
||||
| Matrix | x | x | x | x | x | x | x | x | |
|
||||
| Telegram | x | | | | | | | | x |
|
||||
| Lane | Canary | Mention gating | Blokir allowlist | Balasan tingkat atas | Lanjut setelah restart | Tindak lanjut thread | Isolasi thread | Observasi reaction | Perintah bantuan |
|
||||
| -------- | ------ | -------------- | ---------------- | -------------------- | ---------------------- | -------------------- | -------------- | ------------------ | ---------------- |
|
||||
| Matrix | x | x | x | x | x | x | x | x | |
|
||||
| Telegram | x | | | | | | | | x |
|
||||
|
||||
Ini menjaga `qa-channel` sebagai suite perilaku produk yang luas, sementara Matrix, Telegram, dan transport langsung mendatang berbagi satu checklist kontrak transport yang eksplisit.
|
||||
Ini menjaga `qa-channel` sebagai suite luas untuk perilaku produk, sementara Matrix,
|
||||
Telegram, dan transport live mendatang berbagi satu checklist kontrak transport yang eksplisit.
|
||||
|
||||
Untuk lane VM Linux sekali pakai tanpa membawa Docker ke dalam jalur QA, jalankan:
|
||||
Untuk lane VM Linux sekali pakai tanpa membawa Docker ke dalam alur QA, jalankan:
|
||||
|
||||
```bash
|
||||
pnpm openclaw qa suite --runner multipass --scenario channel-chat-baseline
|
||||
```
|
||||
|
||||
Ini akan mem-boot guest Multipass baru, menginstal dependensi, membangun OpenClaw di dalam guest, menjalankan `qa suite`, lalu menyalin laporan dan ringkasan QA normal kembali ke `.artifacts/qa-e2e/...` di host.
|
||||
Ini akan mem-boot guest Multipass baru, menginstal dependensi, membangun OpenClaw
|
||||
di dalam guest, menjalankan `qa suite`, lalu menyalin laporan QA normal dan
|
||||
ringkasan kembali ke `.artifacts/qa-e2e/...` di host.
|
||||
Perintah ini menggunakan perilaku pemilihan skenario yang sama seperti `qa suite` di host.
|
||||
Eksekusi suite di host dan Multipass menjalankan beberapa skenario terpilih secara paralel dengan worker Gateway yang terisolasi secara default, hingga 64 worker atau sebanyak jumlah skenario yang dipilih. Gunakan `--concurrency <count>` untuk menyesuaikan jumlah worker, atau `--concurrency 1` untuk eksekusi serial.
|
||||
Eksekusi langsung meneruskan input auth QA yang didukung dan praktis untuk guest: kunci provider berbasis env, path config provider langsung QA, dan `CODEX_HOME` jika ada. Pertahankan `--output-dir` di bawah root repo agar guest dapat menulis kembali melalui workspace yang di-mount.
|
||||
Eksekusi suite di host dan Multipass menjalankan beberapa skenario terpilih secara paralel
|
||||
dengan worker Gateway yang terisolasi secara default, hingga 64 worker atau sejumlah
|
||||
skenario yang dipilih. Gunakan `--concurrency <count>` untuk menyesuaikan jumlah worker, atau
|
||||
`--concurrency 1` untuk eksekusi serial.
|
||||
Eksekusi live meneruskan input auth QA yang didukung dan praktis untuk
|
||||
guest: key provider berbasis env, path config provider live QA, dan
|
||||
`CODEX_HOME` bila ada. Pastikan `--output-dir` berada di bawah root repo agar guest
|
||||
dapat menulis kembali melalui workspace yang di-mount.
|
||||
|
||||
## Seed yang didukung repo
|
||||
|
||||
@ -93,41 +122,49 @@ Aset seed berada di `qa/`:
|
||||
- `qa/scenarios/index.md`
|
||||
- `qa/scenarios/*.md`
|
||||
|
||||
Aset ini sengaja disimpan di git agar rencana QA terlihat oleh manusia maupun agen.
|
||||
Ini sengaja disimpan di git agar rencana QA terlihat oleh manusia maupun
|
||||
agen.
|
||||
|
||||
`qa-lab` harus tetap menjadi runner Markdown generik. Setiap file Markdown skenario adalah sumber kebenaran untuk satu eksekusi pengujian dan harus mendefinisikan:
|
||||
`qa-lab` harus tetap menjadi runner markdown generik. Setiap file markdown skenario adalah
|
||||
source of truth untuk satu eksekusi uji dan harus mendefinisikan:
|
||||
|
||||
- metadata skenario
|
||||
- referensi dokumen dan kode
|
||||
- referensi docs dan kode
|
||||
- persyaratan Plugin opsional
|
||||
- patch config Gateway opsional
|
||||
- `qa-flow` yang dapat dieksekusi
|
||||
|
||||
Permukaan runtime yang dapat digunakan ulang dan mendasari `qa-flow` boleh tetap generik
|
||||
dan lintas-cutting. Misalnya, skenario markdown dapat menggabungkan helper sisi transport
|
||||
dengan helper sisi browser yang menggerakkan Control UI tersemat melalui seam
|
||||
Gateway `browser.request` tanpa menambahkan runner khusus.
|
||||
|
||||
Daftar dasar harus tetap cukup luas untuk mencakup:
|
||||
|
||||
- chat DM dan channel
|
||||
- perilaku thread
|
||||
- siklus hidup aksi pesan
|
||||
- callback Cron
|
||||
- recall memori
|
||||
- pemanggilan memori
|
||||
- pergantian model
|
||||
- handoff subagen
|
||||
- pembacaan repo dan pembacaan dokumen
|
||||
- membaca repo dan docs
|
||||
- satu tugas build kecil seperti Lobster Invaders
|
||||
|
||||
## Adaptor transport
|
||||
## Adapter transport
|
||||
|
||||
`qa-lab` memiliki seam generik untuk skenario QA Markdown.
|
||||
`qa-channel` adalah adaptor pertama pada seam tersebut, tetapi target desainnya lebih luas:
|
||||
channel nyata atau sintetis di masa mendatang harus terhubung ke runner suite yang sama alih-alih menambahkan runner QA khusus transport.
|
||||
`qa-lab` memiliki seam transport generik untuk skenario QA markdown.
|
||||
`qa-channel` adalah adapter pertama pada seam itu, tetapi target desainnya lebih luas:
|
||||
channel nyata atau sintetis di masa depan harus dapat dipasang ke runner suite yang sama
|
||||
alih-alih menambahkan runner QA khusus transport.
|
||||
|
||||
Pada tingkat arsitektur, pembagiannya adalah:
|
||||
Pada level arsitektur, pembagiannya adalah:
|
||||
|
||||
- `qa-lab` memiliki eksekusi skenario generik, konkurensi worker, penulisan artefak, dan pelaporan.
|
||||
- adaptor transport memiliki config Gateway, kesiapan, observasi masuk dan keluar, aksi transport, dan status transport ternormalisasi.
|
||||
- file skenario Markdown di bawah `qa/scenarios/` mendefinisikan eksekusi pengujian; `qa-lab` menyediakan permukaan runtime yang dapat digunakan kembali untuk mengeksekusinya.
|
||||
- `qa-lab` memiliki eksekusi skenario generik, konkurensi worker, penulisan artifact, dan pelaporan.
|
||||
- adapter transport memiliki config gateway, kesiapan, observasi inbound dan outbound, aksi transport, dan state transport yang dinormalisasi.
|
||||
- file skenario markdown di bawah `qa/scenarios/` mendefinisikan eksekusi uji; `qa-lab` menyediakan permukaan runtime yang dapat digunakan ulang untuk mengeksekusinya.
|
||||
|
||||
Panduan adopsi untuk maintainer bagi adaptor channel baru tersedia di
|
||||
Panduan adopsi untuk maintainer bagi adapter channel baru tersedia di
|
||||
[Testing](/id/help/testing#adding-a-channel-to-qa).
|
||||
|
||||
## Pelaporan
|
||||
@ -140,7 +177,8 @@ Laporan tersebut harus menjawab:
|
||||
- Apa yang tetap terblokir
|
||||
- Skenario tindak lanjut apa yang layak ditambahkan
|
||||
|
||||
Untuk pemeriksaan karakter dan gaya, jalankan skenario yang sama di beberapa ref model langsung dan tulis laporan Markdown yang dinilai:
|
||||
Untuk pemeriksaan karakter dan gaya, jalankan skenario yang sama di beberapa ref model live
|
||||
dan tulis laporan Markdown hasil penilaian:
|
||||
|
||||
```bash
|
||||
pnpm openclaw qa character-eval \
|
||||
@ -159,24 +197,40 @@ pnpm openclaw qa character-eval \
|
||||
--judge-concurrency 16
|
||||
```
|
||||
|
||||
Perintah ini menjalankan child process Gateway QA lokal, bukan Docker. Skenario evaluasi karakter harus menetapkan persona melalui `SOUL.md`, lalu menjalankan giliran pengguna biasa seperti chat, bantuan workspace, dan tugas file kecil. Model kandidat tidak boleh diberi tahu bahwa model tersebut sedang dievaluasi. Perintah ini mempertahankan setiap transkrip lengkap, mencatat statistik dasar eksekusi, lalu meminta model judge dalam mode cepat dengan penalaran `xhigh` untuk memberi peringkat eksekusi berdasarkan kealamian, vibe, dan humor.
|
||||
Gunakan `--blind-judge-models` saat membandingkan provider: prompt judge tetap menerima setiap transkrip dan status eksekusi, tetapi ref kandidat diganti dengan label netral seperti `candidate-01`; laporan memetakan kembali peringkat ke ref nyata setelah parsing.
|
||||
Eksekusi kandidat secara default menggunakan thinking `high`, dengan `xhigh` untuk model OpenAI yang mendukungnya. Override kandidat tertentu secara inline dengan
|
||||
`--model provider/model,thinking=<level>`. `--thinking <level>` tetap menetapkan fallback global, dan bentuk lama `--model-thinking <provider/model=level>` dipertahankan untuk kompatibilitas.
|
||||
Ref kandidat OpenAI secara default menggunakan mode cepat agar pemrosesan prioritas digunakan jika provider mendukungnya. Tambahkan `,fast`, `,no-fast`, atau `,fast=false` secara inline ketika satu kandidat atau judge memerlukan override. Berikan `--fast` hanya jika Anda ingin memaksa mode cepat aktif untuk setiap model kandidat. Durasi kandidat dan judge dicatat dalam laporan untuk analisis benchmark, tetapi prompt judge secara eksplisit menyatakan agar tidak memberi peringkat berdasarkan kecepatan.
|
||||
Eksekusi model kandidat dan judge keduanya secara default menggunakan konkurensi 16. Turunkan
|
||||
`--concurrency` atau `--judge-concurrency` ketika batas provider atau tekanan Gateway lokal membuat eksekusi terlalu berisik.
|
||||
Saat tidak ada kandidat `--model` yang diberikan, evaluasi karakter secara default menggunakan
|
||||
Perintah ini menjalankan proses child Gateway QA lokal, bukan Docker. Skenario character eval
|
||||
harus menetapkan persona melalui `SOUL.md`, lalu menjalankan giliran pengguna biasa
|
||||
seperti chat, bantuan workspace, dan tugas file kecil. Model kandidat
|
||||
tidak boleh diberi tahu bahwa model tersebut sedang dievaluasi. Perintah ini mempertahankan setiap
|
||||
transkrip lengkap, mencatat statistik dasar eksekusi, lalu meminta model juri dalam mode fast dengan
|
||||
penalaran `xhigh` untuk memberi peringkat eksekusi berdasarkan naturalitas, vibe, dan humor.
|
||||
Gunakan `--blind-judge-models` saat membandingkan provider: prompt juri tetap menerima
|
||||
setiap transkrip dan status eksekusi, tetapi ref kandidat diganti dengan label netral
|
||||
seperti `candidate-01`; laporan memetakan kembali peringkat ke ref asli setelah
|
||||
parsing.
|
||||
Eksekusi kandidat secara default menggunakan thinking `high`, dengan `xhigh` untuk model OpenAI yang
|
||||
mendukungnya. Override kandidat tertentu secara inline dengan
|
||||
`--model provider/model,thinking=<level>`. `--thinking <level>` tetap menetapkan
|
||||
fallback global, dan bentuk lama `--model-thinking <provider/model=level>` tetap dipertahankan untuk kompatibilitas.
|
||||
Ref kandidat OpenAI secara default menggunakan mode fast sehingga pemrosesan prioritas digunakan ketika
|
||||
provider mendukungnya. Tambahkan `,fast`, `,no-fast`, atau `,fast=false` secara inline ketika
|
||||
satu kandidat atau juri memerlukan override. Berikan `--fast` hanya jika Anda ingin
|
||||
memaksa mode fast aktif untuk setiap model kandidat. Durasi kandidat dan juri dicatat
|
||||
dalam laporan untuk analisis benchmark, tetapi prompt juri secara eksplisit menyatakan
|
||||
agar tidak memberi peringkat berdasarkan kecepatan.
|
||||
Eksekusi model kandidat dan juri keduanya secara default menggunakan konkurensi 16. Turunkan
|
||||
`--concurrency` atau `--judge-concurrency` ketika batas provider atau tekanan Gateway lokal
|
||||
membuat suatu eksekusi terlalu bising.
|
||||
Saat tidak ada kandidat `--model` yang diberikan, character eval secara default menggunakan
|
||||
`openai/gpt-5.4`, `openai/gpt-5.2`, `openai/gpt-5`, `anthropic/claude-opus-4-6`,
|
||||
`anthropic/claude-sonnet-4-6`, `zai/glm-5.1`,
|
||||
`moonshot/kimi-k2.5`, dan
|
||||
`google/gemini-3.1-pro-preview` saat tidak ada `--model` yang diberikan.
|
||||
Saat tidak ada `--judge-model` yang diberikan, judge secara default menggunakan
|
||||
Saat tidak ada `--judge-model` yang diberikan, juri secara default menggunakan
|
||||
`openai/gpt-5.4,thinking=xhigh,fast` dan
|
||||
`anthropic/claude-opus-4-6,thinking=high`.
|
||||
|
||||
## Dokumen terkait
|
||||
## Docs terkait
|
||||
|
||||
- [Testing](/id/help/testing)
|
||||
- [QA Channel](/id/channels/qa-channel)
|
||||
- [Dashboard](/web/dashboard)
|
||||
- [Dasbor](/web/dashboard)
|
||||
|
||||
@ -1,28 +1,28 @@
|
||||
---
|
||||
read_when:
|
||||
- Anda ingin menyajikan model dari box GPU Anda sendiri
|
||||
- Anda sedang menghubungkan LM Studio atau proxy yang kompatibel dengan OpenAI
|
||||
- Anda ingin menyajikan model dari mesin GPU Anda sendiri
|
||||
- Anda sedang menyiapkan LM Studio atau proxy yang kompatibel dengan OpenAI
|
||||
- Anda memerlukan panduan model lokal yang paling aman
|
||||
summary: Jalankan OpenClaw pada LLM lokal (LM Studio, vLLM, LiteLLM, endpoint OpenAI kustom)
|
||||
title: Model Lokal
|
||||
x-i18n:
|
||||
generated_at: "2026-04-08T02:14:50Z"
|
||||
generated_at: "2026-04-13T08:50:45Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: d619d72b0e06914ebacb7e9f38b746caf1b9ce8908c9c6638c3acdddbaa025e8
|
||||
source_hash: 3ecb61b3e6e34d3666f9b688cd694d92c5fb211cf8c420fa876f7ccf5789154a
|
||||
source_path: gateway/local-models.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# Model lokal
|
||||
|
||||
Lokal itu memungkinkan, tetapi OpenClaw mengharapkan konteks besar + pertahanan kuat terhadap injeksi prompt. Kartu kecil memotong konteks dan membocorkan safety. Targetkan tinggi: **≥2 Mac Studio yang dimaksimalkan atau rig GPU setara (~$30k+)**. Satu GPU **24 GB** hanya cocok untuk prompt yang lebih ringan dengan latensi lebih tinggi. Gunakan **varian model terbesar / ukuran penuh yang dapat Anda jalankan**; checkpoint yang dikuantisasi secara agresif atau “small” meningkatkan risiko injeksi prompt (lihat [Security](/id/gateway/security)).
|
||||
Lokal bisa dilakukan, tetapi OpenClaw mengharapkan konteks besar + pertahanan yang kuat terhadap injeksi prompt. Kartu kecil memotong konteks dan membocorkan mekanisme keamanan. Targetkan tinggi: **≥2 Mac Studio dengan spesifikasi maksimum atau rig GPU setara (~$30k+)**. Satu GPU **24 GB** hanya cocok untuk prompt yang lebih ringan dengan latensi lebih tinggi. Gunakan **varian model terbesar / ukuran penuh yang bisa Anda jalankan**; checkpoint yang sangat dikuantisasi atau “small” meningkatkan risiko injeksi prompt (lihat [Security](/id/gateway/security)).
|
||||
|
||||
Jika Anda menginginkan penyiapan lokal dengan friksi paling rendah, mulai dengan [Ollama](/id/providers/ollama) dan `openclaw onboard`. Halaman ini adalah panduan yang bersifat opinatif untuk stack lokal kelas atas dan server lokal kustom yang kompatibel dengan OpenAI.
|
||||
Jika Anda menginginkan setup lokal dengan hambatan paling rendah, mulai dengan [LM Studio](/id/providers/lmstudio) atau [Ollama](/id/providers/ollama) dan `openclaw onboard`. Halaman ini adalah panduan yang opiniatif untuk stack lokal kelas atas dan server lokal kustom yang kompatibel dengan OpenAI.
|
||||
|
||||
## Direkomendasikan: LM Studio + model lokal besar (Responses API)
|
||||
## Rekomendasi: LM Studio + model lokal besar (Responses API)
|
||||
|
||||
Stack lokal terbaik saat ini. Muat model besar di LM Studio (misalnya build Qwen, DeepSeek, atau Llama ukuran penuh), aktifkan server lokal (default `http://127.0.0.1:1234`), dan gunakan Responses API agar reasoning tetap terpisah dari teks akhir.
|
||||
Stack lokal terbaik saat ini. Muat model besar di LM Studio (misalnya, build Qwen, DeepSeek, atau Llama ukuran penuh), aktifkan server lokal (default `http://127.0.0.1:1234`), dan gunakan Responses API untuk menjaga reasoning tetap terpisah dari teks akhir.
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -59,18 +59,18 @@ Stack lokal terbaik saat ini. Muat model besar di LM Studio (misalnya build Qwen
|
||||
}
|
||||
```
|
||||
|
||||
**Checklist penyiapan**
|
||||
**Daftar periksa setup**
|
||||
|
||||
- Instal LM Studio: [https://lmstudio.ai](https://lmstudio.ai)
|
||||
- Di LM Studio, unduh **build model terbesar yang tersedia** (hindari varian “small”/yang sangat dikuantisasi), mulai server, pastikan `http://127.0.0.1:1234/v1/models` mencantumkannya.
|
||||
- Di LM Studio, unduh **build model terbesar yang tersedia** (hindari varian “small”/yang sangat dikuantisasi), mulai server, pastikan `http://127.0.0.1:1234/v1/models` menampilkannya.
|
||||
- Ganti `my-local-model` dengan ID model sebenarnya yang ditampilkan di LM Studio.
|
||||
- Biarkan model tetap dimuat; cold-load menambah latensi startup.
|
||||
- Biarkan model tetap dimuat; cold-load menambah latensi saat startup.
|
||||
- Sesuaikan `contextWindow`/`maxTokens` jika build LM Studio Anda berbeda.
|
||||
- Untuk WhatsApp, tetap gunakan Responses API agar hanya teks akhir yang dikirim.
|
||||
|
||||
Tetap konfigurasikan model yang dihosting bahkan saat menjalankan model lokal; gunakan `models.mode: "merge"` agar fallback tetap tersedia.
|
||||
Tetap konfigurasikan model yang di-host bahkan saat menjalankan lokal; gunakan `models.mode: "merge"` agar fallback tetap tersedia.
|
||||
|
||||
### Config hibrida: primary yang dihosting, fallback lokal
|
||||
### Konfigurasi hybrid: hosted primary, fallback lokal
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -111,14 +111,14 @@ Tetap konfigurasikan model yang dihosting bahkan saat menjalankan model lokal; g
|
||||
}
|
||||
```
|
||||
|
||||
### Lokal lebih dulu dengan jaring pengaman hosting
|
||||
### Mengutamakan lokal dengan jaring pengaman hosted
|
||||
|
||||
Tukar urutan primary dan fallback; pertahankan blok provider yang sama dan `models.mode: "merge"` agar Anda dapat fallback ke Sonnet atau Opus saat box lokal sedang tidak aktif.
|
||||
Tukar urutan primary dan fallback; pertahankan blok provider yang sama dan `models.mode: "merge"` agar Anda bisa fallback ke Sonnet atau Opus saat mesin lokal tidak tersedia.
|
||||
|
||||
### Hosting regional / perutean data
|
||||
|
||||
- Varian MiniMax/Kimi/GLM yang dihosting juga tersedia di OpenRouter dengan endpoint yang dipatok ke wilayah tertentu (misalnya dihosting di AS). Pilih varian regional di sana agar lalu lintas tetap berada di yurisdiksi pilihan Anda sambil tetap menggunakan `models.mode: "merge"` untuk fallback Anthropic/OpenAI.
|
||||
- Hanya lokal tetap menjadi jalur privasi terkuat; perutean regional yang dihosting adalah jalan tengah saat Anda membutuhkan fitur penyedia tetapi tetap ingin mengendalikan aliran data.
|
||||
- Varian MiniMax/Kimi/GLM yang di-host juga tersedia di OpenRouter dengan endpoint yang dikunci ke wilayah tertentu (misalnya, di-host di AS). Pilih varian regional di sana untuk menjaga lalu lintas tetap berada dalam yurisdiksi pilihan Anda sambil tetap menggunakan `models.mode: "merge"` untuk fallback Anthropic/OpenAI.
|
||||
- Hanya-lokal tetap menjadi jalur privasi terkuat; perutean regional yang di-host adalah jalan tengah saat Anda membutuhkan fitur provider tetapi ingin mengontrol aliran data.
|
||||
|
||||
## Proxy lokal lain yang kompatibel dengan OpenAI
|
||||
|
||||
@ -150,42 +150,35 @@ vLLM, LiteLLM, OAI-proxy, atau gateway kustom dapat digunakan jika mereka mengek
|
||||
}
|
||||
```
|
||||
|
||||
Pertahankan `models.mode: "merge"` agar model yang dihosting tetap tersedia sebagai fallback.
|
||||
Pertahankan `models.mode: "merge"` agar model hosted tetap tersedia sebagai fallback.
|
||||
|
||||
Catatan perilaku untuk backend `/v1` lokal/berbasis proxy:
|
||||
Catatan perilaku untuk backend lokal/proksi `/v1`:
|
||||
|
||||
- OpenClaw memperlakukan ini sebagai rute kompatibel OpenAI bergaya proxy, bukan
|
||||
endpoint OpenAI native
|
||||
- OpenClaw memperlakukan ini sebagai rute gaya proksi yang kompatibel dengan OpenAI, bukan endpoint OpenAI native
|
||||
- pembentukan permintaan khusus OpenAI native tidak berlaku di sini: tidak ada
|
||||
`service_tier`, tidak ada Responses `store`, tidak ada pembentukan payload kompatibilitas reasoning OpenAI,
|
||||
dan tidak ada petunjuk cache prompt
|
||||
`service_tier`, tidak ada `store` pada Responses, tidak ada pembentukan payload kompatibilitas reasoning OpenAI, dan tidak ada petunjuk prompt-cache
|
||||
- header atribusi OpenClaw tersembunyi (`originator`, `version`, `User-Agent`)
|
||||
tidak disuntikkan pada URL proxy kustom ini
|
||||
tidak disisipkan pada URL proksi kustom ini
|
||||
|
||||
Catatan kompatibilitas untuk backend kompatibel OpenAI yang lebih ketat:
|
||||
Catatan kompatibilitas untuk backend yang kompatibel dengan OpenAI tetapi lebih ketat:
|
||||
|
||||
- Beberapa server hanya menerima `messages[].content` berbentuk string pada Chat Completions, bukan
|
||||
array part konten terstruktur. Atur
|
||||
- Beberapa server hanya menerima `messages[].content` berupa string pada Chat Completions, bukan array content-part terstruktur. Atur
|
||||
`models.providers.<provider>.models[].compat.requiresStringContent: true` untuk
|
||||
endpoint tersebut.
|
||||
- Beberapa backend lokal yang lebih kecil atau lebih ketat tidak stabil dengan bentuk prompt runtime agen
|
||||
penuh dari OpenClaw, terutama saat skema alat disertakan. Jika
|
||||
backend berfungsi untuk panggilan langsung `/v1/chat/completions` kecil tetapi gagal pada giliran agen OpenClaw
|
||||
normal, coba
|
||||
- Beberapa backend lokal yang lebih kecil atau lebih ketat tidak stabil dengan bentuk prompt runtime agen penuh milik OpenClaw, terutama saat schema tool disertakan. Jika backend
|
||||
bekerja untuk panggilan `/v1/chat/completions` langsung yang kecil tetapi gagal pada giliran agen OpenClaw normal, coba
|
||||
`models.providers.<provider>.models[].compat.supportsTools: false` terlebih dahulu.
|
||||
- Jika backend masih gagal hanya pada eksekusi OpenClaw yang lebih besar, masalah yang tersisa
|
||||
biasanya adalah kapasitas model/server upstream atau bug backend, bukan lapisan
|
||||
transport OpenClaw.
|
||||
- Jika backend masih gagal hanya pada eksekusi OpenClaw yang lebih besar, masalah yang tersisa biasanya adalah kapasitas model/server upstream atau bug backend, bukan lapisan transport OpenClaw.
|
||||
|
||||
## Pemecahan masalah
|
||||
|
||||
- Gateway dapat menjangkau proxy? `curl http://127.0.0.1:1234/v1/models`.
|
||||
- Model LM Studio ter-unload? Muat ulang; cold start adalah penyebab umum “menggantung”.
|
||||
- Gateway bisa menjangkau proksi? `curl http://127.0.0.1:1234/v1/models`.
|
||||
- Model LM Studio tidak dimuat? Muat ulang; cold start adalah penyebab umum “macet”.
|
||||
- Error konteks? Turunkan `contextWindow` atau naikkan batas server Anda.
|
||||
- Server yang kompatibel dengan OpenAI mengembalikan `messages[].content ... expected a string`?
|
||||
Tambahkan `compat.requiresStringContent: true` pada entri model tersebut.
|
||||
- Panggilan langsung `/v1/chat/completions` kecil berhasil, tetapi `openclaw infer model run`
|
||||
gagal pada Gemma atau model lokal lain? Nonaktifkan skema alat terlebih dahulu dengan
|
||||
- Panggilan `/v1/chat/completions` langsung yang kecil berhasil, tetapi `openclaw infer model run`
|
||||
gagal pada Gemma atau model lokal lain? Nonaktifkan schema tool terlebih dahulu dengan
|
||||
`compat.supportsTools: false`, lalu uji lagi. Jika server masih crash hanya
|
||||
pada prompt OpenClaw yang lebih besar, anggap ini sebagai keterbatasan server/model upstream.
|
||||
- Safety: model lokal melewati filter sisi penyedia; batasi agen secara sempit dan biarkan compaction aktif untuk membatasi blast radius injeksi prompt.
|
||||
pada prompt OpenClaw yang lebih besar, anggap itu sebagai keterbatasan server/model upstream.
|
||||
- Keamanan: model lokal melewati filter sisi provider; jaga agar agen tetap sempit dan Compaction tetap aktif untuk membatasi dampak injeksi prompt.
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,29 +1,28 @@
|
||||
---
|
||||
read_when:
|
||||
- Anda ingin memilih provider model
|
||||
- Anda memerlukan gambaran singkat tentang backend LLM yang didukung
|
||||
summary: Provider model (LLM) yang didukung oleh OpenClaw
|
||||
- Anda ingin memilih penyedia model
|
||||
- Anda memerlukan ringkasan cepat tentang backend LLM yang didukung
|
||||
summary: Penyedia model (LLM) yang didukung oleh OpenClaw
|
||||
title: Direktori Provider
|
||||
x-i18n:
|
||||
generated_at: "2026-04-08T02:16:42Z"
|
||||
generated_at: "2026-04-13T08:50:44Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: e7bee5528b7fc9a982b3d0eaa4930cb77f7bded19a47aec00572b6fcbd823a70
|
||||
source_hash: 3bc682d008119719826f71f74959ab32bedf14214459f5e6ac9cb70371d3c540
|
||||
source_path: providers/index.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# Provider Model
|
||||
# Penyedia Model
|
||||
|
||||
OpenClaw dapat menggunakan banyak provider LLM. Pilih provider, lakukan autentikasi, lalu setel
|
||||
model default sebagai `provider/model`.
|
||||
OpenClaw dapat menggunakan banyak penyedia LLM. Pilih penyedia, autentikasi, lalu atur model default sebagai `provider/model`.
|
||||
|
||||
Mencari dokumentasi channel chat (WhatsApp/Telegram/Discord/Slack/Mattermost (plugin)/dll.)? Lihat [Channels](/id/channels).
|
||||
Mencari dokumentasi saluran chat (WhatsApp/Telegram/Discord/Slack/Mattermost (plugin)/dll.)? Lihat [Channels](/id/channels).
|
||||
|
||||
## Mulai cepat
|
||||
|
||||
1. Lakukan autentikasi dengan provider (biasanya melalui `openclaw onboard`).
|
||||
2. Setel model default:
|
||||
1. Autentikasi dengan penyedia (biasanya melalui `openclaw onboard`).
|
||||
2. Atur model default:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -48,10 +47,11 @@ Mencari dokumentasi channel chat (WhatsApp/Telegram/Discord/Slack/Mattermost (pl
|
||||
- [Model GLM](/id/providers/glm)
|
||||
- [Google (Gemini)](/id/providers/google)
|
||||
- [Groq (inferensi LPU)](/id/providers/groq)
|
||||
- [Hugging Face (Inference)](/id/providers/huggingface)
|
||||
- [Hugging Face (Inferensi)](/id/providers/huggingface)
|
||||
- [inferrs (model lokal)](/id/providers/inferrs)
|
||||
- [Kilocode](/id/providers/kilocode)
|
||||
- [LiteLLM (gateway terpadu)](/id/providers/litellm)
|
||||
- [LM Studio (model lokal)](/id/providers/lmstudio)
|
||||
- [MiniMax](/id/providers/minimax)
|
||||
- [Mistral](/id/providers/mistral)
|
||||
- [Moonshot AI (Kimi + Kimi Coding)](/id/providers/moonshot)
|
||||
@ -78,7 +78,7 @@ Mencari dokumentasi channel chat (WhatsApp/Telegram/Discord/Slack/Mattermost (pl
|
||||
- [Xiaomi](/id/providers/xiaomi)
|
||||
- [Z.AI](/id/providers/zai)
|
||||
|
||||
## Halaman gambaran umum bersama
|
||||
## Halaman ringkasan bersama
|
||||
|
||||
- [Varian bundel tambahan](/id/providers/models#additional-bundled-provider-variants) - Anthropic Vertex, Copilot Proxy, dan Gemini CLI OAuth
|
||||
- [Pembuatan Gambar](/id/tools/image-generation) - Tool `image_generate` bersama, pemilihan provider, dan failover
|
||||
@ -94,4 +94,4 @@ Mencari dokumentasi channel chat (WhatsApp/Telegram/Discord/Slack/Mattermost (pl
|
||||
- [Claude Max API Proxy](/id/providers/claude-max-api-proxy) - Proxy komunitas untuk kredensial langganan Claude (verifikasi kebijakan/persyaratan Anthropic sebelum digunakan)
|
||||
|
||||
Untuk katalog provider lengkap (xAI, Groq, Mistral, dll.) dan konfigurasi lanjutan,
|
||||
lihat [Provider model](/id/concepts/model-providers).
|
||||
lihat [Penyedia model](/id/concepts/model-providers).
|
||||
|
||||
163
docs/id/providers/lmstudio.md
Normal file
163
docs/id/providers/lmstudio.md
Normal file
@ -0,0 +1,163 @@
|
||||
---
|
||||
read_when:
|
||||
- Anda ingin menjalankan OpenClaw dengan model open source melalui LM Studio
|
||||
- Anda ingin menyiapkan dan mengonfigurasi LM Studio
|
||||
summary: Jalankan OpenClaw dengan LM Studio
|
||||
title: LM Studio
|
||||
x-i18n:
|
||||
generated_at: "2026-04-13T08:50:46Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 11264584e8277260d4215feb7c751329ce04f59e9228da1c58e147c21cd9ac2c
|
||||
source_path: providers/lmstudio.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# LM Studio
|
||||
|
||||
LM Studio adalah aplikasi yang ramah namun andal untuk menjalankan model open-weight di perangkat keras Anda sendiri. Aplikasi ini memungkinkan Anda menjalankan model llama.cpp (GGUF) atau MLX (Apple Silicon). Tersedia dalam paket GUI atau daemon headless (`llmster`). Untuk dokumentasi produk dan penyiapan, lihat [lmstudio.ai](https://lmstudio.ai/).
|
||||
|
||||
## Mulai cepat
|
||||
|
||||
1. Instal LM Studio (desktop) atau `llmster` (headless), lalu jalankan server lokal:
|
||||
|
||||
```bash
|
||||
curl -fsSL https://lmstudio.ai/install.sh | bash
|
||||
```
|
||||
|
||||
2. Mulai server
|
||||
|
||||
Pastikan Anda menjalankan aplikasi desktop atau menjalankan daemon dengan perintah berikut:
|
||||
|
||||
```bash
|
||||
lms daemon up
|
||||
```
|
||||
|
||||
```bash
|
||||
lms server start --port 1234
|
||||
```
|
||||
|
||||
Jika Anda menggunakan aplikasi, pastikan JIT diaktifkan agar pengalaman tetap lancar. Pelajari lebih lanjut di [panduan LM Studio JIT dan TTL](https://lmstudio.ai/docs/developer/core/ttl-and-auto-evict).
|
||||
|
||||
3. OpenClaw memerlukan nilai token LM Studio. Atur `LM_API_TOKEN`:
|
||||
|
||||
```bash
|
||||
export LM_API_TOKEN="your-lm-studio-api-token"
|
||||
```
|
||||
|
||||
Jika autentikasi LM Studio dinonaktifkan, gunakan nilai token tidak kosong apa pun:
|
||||
|
||||
```bash
|
||||
export LM_API_TOKEN="placeholder-key"
|
||||
```
|
||||
|
||||
Untuk detail penyiapan autentikasi LM Studio, lihat [Autentikasi LM Studio](https://lmstudio.ai/docs/developer/core/authentication).
|
||||
|
||||
4. Jalankan onboarding dan pilih `LM Studio`:
|
||||
|
||||
```bash
|
||||
openclaw onboard
|
||||
```
|
||||
|
||||
5. Dalam onboarding, gunakan prompt `Default model` untuk memilih model LM Studio Anda.
|
||||
|
||||
Anda juga dapat mengatur atau mengubahnya nanti:
|
||||
|
||||
```bash
|
||||
openclaw models set lmstudio/qwen/qwen3.5-9b
|
||||
```
|
||||
|
||||
Kunci model LM Studio mengikuti format `author/model-name` (misalnya `qwen/qwen3.5-9b`). Ref model OpenClaw menambahkan nama penyedia di depan: `lmstudio/qwen/qwen3.5-9b`. Anda dapat menemukan kunci yang tepat untuk suatu model dengan menjalankan `curl http://localhost:1234/api/v1/models` dan melihat field `key`.
|
||||
|
||||
## Onboarding non-interaktif
|
||||
|
||||
Gunakan onboarding non-interaktif saat Anda ingin membuat penyiapan dalam bentuk skrip (CI, provisioning, bootstrap jarak jauh):
|
||||
|
||||
```bash
|
||||
openclaw onboard \
|
||||
--non-interactive \
|
||||
--accept-risk \
|
||||
--auth-choice lmstudio
|
||||
```
|
||||
|
||||
Atau tentukan base URL atau model dengan API key:
|
||||
|
||||
```bash
|
||||
openclaw onboard \
|
||||
--non-interactive \
|
||||
--accept-risk \
|
||||
--auth-choice lmstudio \
|
||||
--custom-base-url http://localhost:1234/v1 \
|
||||
--lmstudio-api-key "$LM_API_TOKEN" \
|
||||
--custom-model-id qwen/qwen3.5-9b
|
||||
```
|
||||
|
||||
`--custom-model-id` menerima kunci model seperti yang dikembalikan oleh LM Studio (misalnya `qwen/qwen3.5-9b`), tanpa prefiks penyedia `lmstudio/`.
|
||||
|
||||
Onboarding non-interaktif memerlukan `--lmstudio-api-key` (atau `LM_API_TOKEN` di env).
|
||||
Untuk server LM Studio tanpa autentikasi, nilai token tidak kosong apa pun akan berfungsi.
|
||||
|
||||
`--custom-api-key` tetap didukung demi kompatibilitas, tetapi `--lmstudio-api-key` lebih disarankan untuk LM Studio.
|
||||
|
||||
Ini akan menulis `models.providers.lmstudio`, mengatur model default ke
|
||||
`lmstudio/<custom-model-id>`, dan menulis profil auth `lmstudio:default`.
|
||||
|
||||
Penyiapan interaktif dapat meminta panjang konteks pemuatan pilihan yang opsional dan menerapkannya ke seluruh model LM Studio yang ditemukan lalu disimpan ke config.
|
||||
|
||||
## Konfigurasi
|
||||
|
||||
### Konfigurasi eksplisit
|
||||
|
||||
```json5
|
||||
{
|
||||
models: {
|
||||
providers: {
|
||||
lmstudio: {
|
||||
baseUrl: "http://localhost:1234/v1",
|
||||
apiKey: "${LM_API_TOKEN}",
|
||||
api: "openai-completions",
|
||||
models: [
|
||||
{
|
||||
id: "qwen/qwen3-coder-next",
|
||||
name: "Qwen 3 Coder Next",
|
||||
reasoning: false,
|
||||
input: ["text"],
|
||||
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
|
||||
contextWindow: 128000,
|
||||
maxTokens: 8192,
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
## Pemecahan masalah
|
||||
|
||||
### LM Studio tidak terdeteksi
|
||||
|
||||
Pastikan LM Studio sedang berjalan dan Anda telah menetapkan `LM_API_TOKEN` (untuk server tanpa autentikasi, nilai token tidak kosong apa pun akan berfungsi):
|
||||
|
||||
```bash
|
||||
# Mulai melalui aplikasi desktop, atau headless:
|
||||
lms server start --port 1234
|
||||
```
|
||||
|
||||
Verifikasi bahwa API dapat diakses:
|
||||
|
||||
```bash
|
||||
curl http://localhost:1234/api/v1/models
|
||||
```
|
||||
|
||||
### Kesalahan autentikasi (HTTP 401)
|
||||
|
||||
Jika penyiapan melaporkan HTTP 401, verifikasi API key Anda:
|
||||
|
||||
- Periksa bahwa `LM_API_TOKEN` cocok dengan key yang dikonfigurasi di LM Studio.
|
||||
- Untuk detail penyiapan auth LM Studio, lihat [Autentikasi LM Studio](https://lmstudio.ai/docs/developer/core/authentication).
|
||||
- Jika server Anda tidak memerlukan autentikasi, gunakan nilai token tidak kosong apa pun untuk `LM_API_TOKEN`.
|
||||
|
||||
### Pemuatan model just-in-time
|
||||
|
||||
LM Studio mendukung pemuatan model just-in-time (JIT), yaitu model dimuat pada permintaan pertama. Pastikan fitur ini diaktifkan untuk menghindari kesalahan 'Model not loaded'.
|
||||
@ -2,90 +2,90 @@
|
||||
read_when:
|
||||
- Anda ingin memahami fitur mana yang mungkin memanggil API berbayar
|
||||
- Anda perlu mengaudit kunci, biaya, dan visibilitas penggunaan
|
||||
- Anda sedang menjelaskan pelaporan biaya /status atau /usage
|
||||
summary: Audit apa saja yang dapat menghabiskan biaya, kunci mana yang digunakan, dan cara melihat penggunaan
|
||||
- Anda sedang menjelaskan pelaporan biaya `/status` atau `/usage`
|
||||
summary: Audit apa saja yang bisa menghabiskan uang, kunci apa yang digunakan, dan cara melihat penggunaan
|
||||
title: Penggunaan dan Biaya API
|
||||
x-i18n:
|
||||
generated_at: "2026-04-07T09:19:17Z"
|
||||
generated_at: "2026-04-13T08:50:45Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: ab6eefcde9ac014df6cdda7aaa77ef48f16936ab12eaa883d9fe69425a31a2dd
|
||||
source_hash: f5077e74d38ef781ac7a72603e9f9e3829a628b95c5a9967915ab0f321565429
|
||||
source_path: reference/api-usage-costs.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# Penggunaan & biaya API
|
||||
# Penggunaan dan biaya API
|
||||
|
||||
Dokumen ini mencantumkan **fitur yang dapat memanggil kunci API** dan tempat biayanya muncul. Dokumen ini berfokus pada
|
||||
Dokumen ini mencantumkan **fitur yang dapat memanggil API key** dan tempat biaya tersebut muncul. Dokumen ini berfokus pada
|
||||
fitur OpenClaw yang dapat menghasilkan penggunaan provider atau panggilan API berbayar.
|
||||
|
||||
## Tempat biaya muncul (chat + CLI)
|
||||
## Di mana biaya muncul (chat + CLI)
|
||||
|
||||
**Snapshot biaya per sesi**
|
||||
**Ringkasan biaya per sesi**
|
||||
|
||||
- `/status` menampilkan model sesi saat ini, penggunaan konteks, dan token respons terakhir.
|
||||
- Jika model menggunakan **autentikasi kunci API**, `/status` juga menampilkan **perkiraan biaya** untuk balasan terakhir.
|
||||
- Jika model menggunakan **autentikasi API key**, `/status` juga menampilkan **perkiraan biaya** untuk balasan terakhir.
|
||||
- Jika metadata sesi langsung minim, `/status` dapat memulihkan penghitung
|
||||
token/cache dan label model runtime aktif dari entri penggunaan transkrip
|
||||
terbaru. Nilai langsung nonzero yang sudah ada tetap diprioritaskan, dan total
|
||||
terbaru. Nilai live nonnol yang sudah ada tetap diprioritaskan, dan total
|
||||
transkrip berukuran prompt dapat menang ketika total tersimpan tidak ada atau lebih kecil.
|
||||
|
||||
**Footer biaya per pesan**
|
||||
|
||||
- `/usage full` menambahkan footer penggunaan ke setiap balasan, termasuk **perkiraan biaya** (hanya kunci API).
|
||||
- `/usage full` menambahkan footer penggunaan ke setiap balasan, termasuk **perkiraan biaya** (khusus API key).
|
||||
- `/usage tokens` hanya menampilkan token; alur OAuth/token bergaya langganan dan CLI menyembunyikan biaya dalam dolar.
|
||||
- Catatan Gemini CLI: ketika CLI mengembalikan output JSON, OpenClaw membaca penggunaan dari
|
||||
- Catatan Gemini CLI: saat CLI mengembalikan output JSON, OpenClaw membaca penggunaan dari
|
||||
`stats`, menormalkan `stats.cached` menjadi `cacheRead`, dan menurunkan token input
|
||||
dari `stats.input_tokens - stats.cached` bila diperlukan.
|
||||
|
||||
Catatan Anthropic: staf Anthropic memberi tahu kami bahwa penggunaan Claude CLI bergaya OpenClaw kini
|
||||
diizinkan lagi, jadi OpenClaw menganggap penggunaan ulang Claude CLI dan penggunaan `claude -p` sebagai
|
||||
hal yang disetujui untuk integrasi ini kecuali Anthropic menerbitkan kebijakan baru.
|
||||
Anthropic masih tidak mengekspos perkiraan dolar per pesan yang dapat ditampilkan OpenClaw
|
||||
di `/usage full`.
|
||||
Catatan Anthropic: staf Anthropic memberi tahu kami bahwa penggunaan Claude CLI gaya OpenClaw
|
||||
diizinkan lagi, jadi OpenClaw memperlakukan penggunaan ulang Claude CLI dan penggunaan `claude -p` sebagai
|
||||
didukung untuk integrasi ini kecuali Anthropic menerbitkan kebijakan baru.
|
||||
Anthropic masih tidak mengekspos perkiraan dolar per pesan yang dapat OpenClaw
|
||||
tampilkan di `/usage full`.
|
||||
|
||||
**Jendela penggunaan CLI (kuota provider)**
|
||||
|
||||
- `openclaw status --usage` dan `openclaw channels list` menampilkan **jendela penggunaan**
|
||||
provider (snapshot kuota, bukan biaya per pesan).
|
||||
- Output yang dapat dibaca manusia dinormalkan menjadi `X% left` di seluruh provider.
|
||||
- Output yang dapat dibaca manusia dinormalisasi menjadi `X% left` di seluruh provider.
|
||||
- Provider jendela penggunaan saat ini: Anthropic, GitHub Copilot, Gemini CLI,
|
||||
OpenAI Codex, MiniMax, Xiaomi, dan z.ai.
|
||||
- Catatan MiniMax: field mentah `usage_percent` / `usagePercent` berarti kuota
|
||||
tersisa, jadi OpenClaw membalikkannya sebelum ditampilkan. Field berbasis jumlah tetap diutamakan
|
||||
saat tersedia. Jika provider mengembalikan `model_remains`, OpenClaw memprioritaskan entri model chat,
|
||||
menurunkan label jendela dari timestamp bila diperlukan, dan
|
||||
tersisa, jadi OpenClaw membalikkannya sebelum ditampilkan. Field berbasis jumlah tetap diprioritaskan
|
||||
bila ada. Jika provider mengembalikan `model_remains`, OpenClaw memprioritaskan entri model chat,
|
||||
menurunkan label jendela dari stempel waktu bila diperlukan, dan
|
||||
menyertakan nama model dalam label paket.
|
||||
- Autentikasi penggunaan untuk jendela kuota tersebut berasal dari hook khusus provider jika
|
||||
tersedia; jika tidak, OpenClaw kembali mencocokkan
|
||||
kredensial OAuth/kunci API dari profil autentikasi, env, atau konfigurasi.
|
||||
- Auth penggunaan untuk jendela kuota tersebut berasal dari hook khusus provider saat
|
||||
tersedia; jika tidak, OpenClaw kembali mencocokkan kredensial OAuth/API key
|
||||
dari profil auth, env, atau config.
|
||||
|
||||
Lihat [Penggunaan token & biaya](/id/reference/token-use) untuk detail dan contoh.
|
||||
|
||||
## Cara kunci ditemukan
|
||||
## Bagaimana kunci ditemukan
|
||||
|
||||
OpenClaw dapat mengambil kredensial dari:
|
||||
|
||||
- **Profil autentikasi** (per agen, disimpan di `auth-profiles.json`).
|
||||
- **Variabel lingkungan** (mis. `OPENAI_API_KEY`, `BRAVE_API_KEY`, `FIRECRAWL_API_KEY`).
|
||||
- **Konfigurasi** (`models.providers.*.apiKey`, `plugins.entries.*.config.webSearch.apiKey`,
|
||||
- **Profil auth** (per-agent, disimpan di `auth-profiles.json`).
|
||||
- **Variabel environment** (mis. `OPENAI_API_KEY`, `BRAVE_API_KEY`, `FIRECRAWL_API_KEY`).
|
||||
- **Config** (`models.providers.*.apiKey`, `plugins.entries.*.config.webSearch.apiKey`,
|
||||
`plugins.entries.firecrawl.config.webFetch.apiKey`, `memorySearch.*`,
|
||||
`talk.providers.*.apiKey`).
|
||||
- **Skills** (`skills.entries.<name>.apiKey`) yang dapat mengekspor kunci ke env proses skill.
|
||||
|
||||
## Fitur yang dapat menghabiskan kunci
|
||||
|
||||
### 1) Respons model inti (chat + tool)
|
||||
### 1) Respons model inti (chat + tools)
|
||||
|
||||
Setiap balasan atau pemanggilan tool menggunakan **provider model saat ini** (OpenAI, Anthropic, dll.). Ini adalah
|
||||
Setiap balasan atau pemanggilan tool menggunakan **provider model saat ini** (OpenAI, Anthropic, dll). Ini adalah
|
||||
sumber utama penggunaan dan biaya.
|
||||
|
||||
Ini juga mencakup provider terhosting bergaya langganan yang tetap menagih di luar
|
||||
Ini juga mencakup provider hosted bergaya langganan yang tetap menagih di luar
|
||||
UI lokal OpenClaw, seperti **OpenAI Codex**, **Alibaba Cloud Model Studio
|
||||
Coding Plan**, **MiniMax Coding Plan**, **Z.AI / GLM Coding Plan**, dan
|
||||
jalur login Claude OpenClaw milik Anthropic dengan **Extra Usage** diaktifkan.
|
||||
|
||||
Lihat [Model](/id/providers/models) untuk konfigurasi harga dan [Penggunaan token & biaya](/id/reference/token-use) untuk tampilan.
|
||||
Lihat [Model](/id/providers/models) untuk config harga dan [Penggunaan token & biaya](/id/reference/token-use) untuk tampilan.
|
||||
|
||||
### 2) Pemahaman media (audio/gambar/video)
|
||||
|
||||
@ -104,9 +104,9 @@ Kapabilitas pembuatan bersama juga dapat menghabiskan kunci provider:
|
||||
- Pembuatan gambar: OpenAI / Google / fal / MiniMax
|
||||
- Pembuatan video: Qwen
|
||||
|
||||
Pembuatan gambar dapat menyimpulkan default provider yang didukung autentikasi ketika
|
||||
`agents.defaults.imageGenerationModel` tidak diatur. Pembuatan video saat ini
|
||||
memerlukan `agents.defaults.videoGenerationModel` yang eksplisit seperti
|
||||
Pembuatan gambar dapat menyimpulkan default provider berbasis auth ketika
|
||||
`agents.defaults.imageGenerationModel` tidak disetel. Pembuatan video saat ini
|
||||
memerlukan `agents.defaults.videoGenerationModel` eksplisit seperti
|
||||
`qwen/wan2.6-t2v`.
|
||||
|
||||
Lihat [Pembuatan gambar](/id/tools/image-generation), [Qwen Cloud](/id/providers/qwen),
|
||||
@ -114,20 +114,21 @@ dan [Model](/id/concepts/models).
|
||||
|
||||
### 4) Embedding memori + pencarian semantik
|
||||
|
||||
Pencarian memori semantik menggunakan **API embedding** saat dikonfigurasi untuk provider jarak jauh:
|
||||
Pencarian memori semantik menggunakan **API embedding** saat dikonfigurasi untuk provider remote:
|
||||
|
||||
- `memorySearch.provider = "openai"` → embedding OpenAI
|
||||
- `memorySearch.provider = "gemini"` → embedding Gemini
|
||||
- `memorySearch.provider = "voyage"` → embedding Voyage
|
||||
- `memorySearch.provider = "mistral"` → embedding Mistral
|
||||
- `memorySearch.provider = "ollama"` → embedding Ollama (lokal/self-hosted; biasanya tidak ada penagihan API terhosting)
|
||||
- Fallback opsional ke provider jarak jauh jika embedding lokal gagal
|
||||
- `memorySearch.provider = "lmstudio"` → embedding LM Studio (lokal/self-hosted)
|
||||
- `memorySearch.provider = "ollama"` → embedding Ollama (lokal/self-hosted; biasanya tanpa penagihan API hosted)
|
||||
- Fallback opsional ke provider remote jika embedding lokal gagal
|
||||
|
||||
Anda dapat tetap lokal dengan `memorySearch.provider = "local"` (tanpa penggunaan API).
|
||||
|
||||
Lihat [Memori](/id/concepts/memory).
|
||||
Lihat [Memory](/id/concepts/memory).
|
||||
|
||||
### 5) Tool web search
|
||||
### 5) Tool pencarian web
|
||||
|
||||
`web_search` dapat menimbulkan biaya penggunaan tergantung pada provider Anda:
|
||||
|
||||
@ -138,24 +139,24 @@ Lihat [Memori](/id/concepts/memory).
|
||||
- **Grok (xAI)**: `XAI_API_KEY` atau `plugins.entries.xai.config.webSearch.apiKey`
|
||||
- **Kimi (Moonshot)**: `KIMI_API_KEY`, `MOONSHOT_API_KEY`, atau `plugins.entries.moonshot.config.webSearch.apiKey`
|
||||
- **MiniMax Search**: `MINIMAX_CODE_PLAN_KEY`, `MINIMAX_CODING_API_KEY`, `MINIMAX_API_KEY`, atau `plugins.entries.minimax.config.webSearch.apiKey`
|
||||
- **Ollama Web Search**: default-nya tanpa kunci, tetapi memerlukan host Ollama yang dapat dijangkau plus `ollama signin`; juga dapat menggunakan ulang autentikasi bearer provider Ollama normal saat host membutuhkannya
|
||||
- **Ollama Web Search**: default-nya tanpa kunci, tetapi memerlukan host Ollama yang dapat dijangkau serta `ollama signin`; juga dapat menggunakan ulang auth bearer provider Ollama normal saat host memerlukannya
|
||||
- **Perplexity Search API**: `PERPLEXITY_API_KEY`, `OPENROUTER_API_KEY`, atau `plugins.entries.perplexity.config.webSearch.apiKey`
|
||||
- **Tavily**: `TAVILY_API_KEY` atau `plugins.entries.tavily.config.webSearch.apiKey`
|
||||
- **DuckDuckGo**: fallback tanpa kunci (tanpa penagihan API, tetapi tidak resmi dan berbasis HTML)
|
||||
- **SearXNG**: `SEARXNG_BASE_URL` atau `plugins.entries.searxng.config.webSearch.baseUrl` (tanpa kunci/self-hosted; tanpa penagihan API terhosting)
|
||||
- **SearXNG**: `SEARXNG_BASE_URL` atau `plugins.entries.searxng.config.webSearch.baseUrl` (tanpa kunci/self-hosted; tanpa penagihan API hosted)
|
||||
|
||||
Jalur provider legacy `tools.web.search.*` masih dimuat melalui shim kompatibilitas sementara, tetapi bukan lagi permukaan konfigurasi yang direkomendasikan.
|
||||
Path provider legacy `tools.web.search.*` masih dimuat melalui shim kompatibilitas sementara, tetapi tidak lagi menjadi surface config yang direkomendasikan.
|
||||
|
||||
**Kredit gratis Brave Search:** Setiap paket Brave menyertakan kredit gratis \$5/bulan yang diperbarui
|
||||
setiap bulan. Paket Search berbiaya \$5 per 1.000 permintaan, sehingga kredit tersebut mencakup
|
||||
1.000 permintaan/bulan tanpa biaya. Atur batas penggunaan Anda di dashboard Brave
|
||||
**Kredit gratis Brave Search:** Setiap paket Brave menyertakan kredit gratis
|
||||
\$5/bulan yang diperbarui. Paket Search berbiaya \$5 per 1.000 permintaan, jadi kredit tersebut mencakup
|
||||
1.000 permintaan/bulan tanpa biaya. Tetapkan batas penggunaan Anda di dashboard Brave
|
||||
untuk menghindari biaya tak terduga.
|
||||
|
||||
Lihat [Tool web](/id/tools/web).
|
||||
|
||||
### 5) Tool web fetch (Firecrawl)
|
||||
|
||||
`web_fetch` dapat memanggil **Firecrawl** saat kunci API tersedia:
|
||||
`web_fetch` dapat memanggil **Firecrawl** saat API key tersedia:
|
||||
|
||||
- `FIRECRAWL_API_KEY` atau `plugins.entries.firecrawl.config.webFetch.apiKey`
|
||||
|
||||
@ -165,18 +166,18 @@ Lihat [Tool web](/id/tools/web).
|
||||
|
||||
### 6) Snapshot penggunaan provider (status/health)
|
||||
|
||||
Beberapa perintah status memanggil **endpoint penggunaan provider** untuk menampilkan jendela kuota atau kesehatan autentikasi.
|
||||
Ini biasanya panggilan ber-volume rendah tetapi tetap mengenai API provider:
|
||||
Beberapa perintah status memanggil **endpoint penggunaan provider** untuk menampilkan jendela kuota atau kesehatan auth.
|
||||
Ini biasanya merupakan panggilan ber-volume rendah tetapi tetap mengenai API provider:
|
||||
|
||||
- `openclaw status --usage`
|
||||
- `openclaw models status --json`
|
||||
|
||||
Lihat [CLI Models](/cli/models).
|
||||
Lihat [Models CLI](/cli/models).
|
||||
|
||||
### 7) Ringkasan perlindungan compaction
|
||||
### 7) Perangkuman pengaman Compaction
|
||||
|
||||
Perlindungan compaction dapat merangkum riwayat sesi menggunakan **model saat ini**, yang
|
||||
memanggil API provider ketika dijalankan.
|
||||
Pengaman Compaction dapat merangkum riwayat sesi menggunakan **model saat ini**, yang
|
||||
memanggil API provider saat dijalankan.
|
||||
|
||||
Lihat [Manajemen sesi + compaction](/id/reference/session-management-compaction).
|
||||
|
||||
@ -185,19 +186,19 @@ Lihat [Manajemen sesi + compaction](/id/reference/session-management-compaction)
|
||||
`openclaw models scan` dapat melakukan probe pada model OpenRouter dan menggunakan `OPENROUTER_API_KEY` saat
|
||||
probe diaktifkan.
|
||||
|
||||
Lihat [CLI Models](/cli/models).
|
||||
Lihat [Models CLI](/cli/models).
|
||||
|
||||
### 9) Talk (speech)
|
||||
### 9) Talk (ucapan)
|
||||
|
||||
Mode talk dapat memanggil **ElevenLabs** saat dikonfigurasi:
|
||||
Mode Talk dapat memanggil **ElevenLabs** saat dikonfigurasi:
|
||||
|
||||
- `ELEVENLABS_API_KEY` atau `talk.providers.elevenlabs.apiKey`
|
||||
|
||||
Lihat [Mode talk](/id/nodes/talk).
|
||||
Lihat [Mode Talk](/id/nodes/talk).
|
||||
|
||||
### 10) Skills (API pihak ketiga)
|
||||
|
||||
Skills dapat menyimpan `apiKey` di `skills.entries.<name>.apiKey`. Jika suatu skill menggunakan kunci tersebut untuk
|
||||
API eksternal, hal itu dapat menimbulkan biaya sesuai provider skill tersebut.
|
||||
Skills dapat menyimpan `apiKey` di `skills.entries.<name>.apiKey`. Jika sebuah skill menggunakan kunci tersebut untuk
|
||||
API eksternal, skill tersebut dapat menimbulkan biaya sesuai provider skill.
|
||||
|
||||
Lihat [Skills](/id/tools/skills).
|
||||
|
||||
Loading…
Reference in New Issue
Block a user