Providers
Ollama
OpenClaw berkomunikasi dengan API native Ollama (/api/chat), bukan endpoint
/v1 yang kompatibel dengan OpenAI. Tiga mode didukung:
| Mode | Yang digunakan |
|---|---|
| Cloud + Lokal | Host Ollama yang dapat dijangkau, yang menyajikan model lokal dan (jika sudah masuk) model :cloud |
| Hanya cloud | https://ollama.com secara langsung, tanpa daemon lokal |
| Hanya lokal | Host Ollama yang dapat dijangkau, hanya model lokal |
Untuk penyiapan khusus cloud dengan id penyedia khusus ollama-cloud, lihat
Ollama Cloud. Gunakan referensi ollama-cloud/<model> saat
Anda ingin perutean cloud tetap terpisah dari penyedia ollama lokal.
Kunci konfigurasi kanonis adalah baseUrl. baseURL juga diterima untuk
contoh bergaya OpenAI SDK, tetapi konfigurasi baru sebaiknya menggunakan baseUrl.
Aturan autentikasi
Host lokal dan LAN
URL Ollama local loopback, jaringan privat, .local, dan nama host polos tidak memerlukan token bearer yang sebenarnya. OpenClaw menggunakan penanda ollama-local untuk URL tersebut.
Host jarak jauh dan Ollama Cloud
Host publik jarak jauh dan https://ollama.com memerlukan kredensial yang sebenarnya: OLLAMA_API_KEY, profil autentikasi, atau apiKey penyedia. Untuk penggunaan langsung yang dihosting, utamakan penyedia ollama-cloud.
Id penyedia khusus
Penyedia khusus dengan api: "ollama" mengikuti aturan yang sama. Misalnya, penyedia ollama-remote yang diarahkan ke host LAN privat dapat menggunakan apiKey: "ollama-local"; subagen menyelesaikan penanda tersebut melalui hook penyedia Ollama alih-alih menganggapnya sebagai kredensial yang hilang. agents.defaults.memorySearch.provider juga dapat diarahkan ke id penyedia khusus agar embedding menggunakan endpoint Ollama tersebut.
Profil autentikasi
auth-profiles.json menyimpan kredensial untuk suatu id penyedia; letakkan pengaturan endpoint (baseUrl, api, model, header, batas waktu) di models.providers.<id>. Berkas datar lama seperti { "ollama-windows": { "apiKey": "ollama-local" } } bukan format runtime; openclaw doctor --fix menulis ulang berkas tersebut menjadi profil kunci API kanonis ollama-windows:default beserta cadangannya. Nilai baseUrl dalam berkas lama tersebut tidak relevan dan harus dipindahkan ke konfigurasi penyedia.
Cakupan embedding memori
Autentikasi bearer untuk embedding memori Ollama dibatasi pada host tempat autentikasi tersebut dideklarasikan:
- Kunci tingkat penyedia hanya dikirim ke host penyedia tersebut.
agents.*.memorySearch.remote.apiKeyhanya dikirim ke host embedding jarak jauhnya.- Nilai env
OLLAMA_API_KEYmurni dianggap sebagai konvensi Ollama Cloud dan secara default tidak dikirim ke host lokal/yang dihosting sendiri.
Memulai
Orientasi awal (disarankan)
Jalankan orientasi awal
openclaw onboardPilih Ollama, lalu pilih mode: Cloud + Lokal, Hanya cloud, atau Hanya lokal.
Pilih model
Cloud only meminta OLLAMA_API_KEY dan menyarankan default cloud yang dihosting. Cloud + Local dan Local only meminta URL dasar Ollama, menemukan model yang tersedia, dan otomatis menarik model lokal yang dipilih jika belum ada. Tag :latest yang terpasang seperti gemma4:latest ditampilkan satu kali agar tidak menduplikasi gemma4. Cloud + Local juga memeriksa apakah host sudah masuk untuk akses cloud.
Verifikasi
openclaw models list --provider ollamaNoninteraktif:
openclaw onboard --non-interactive \ --auth-choice ollama \ --custom-base-url "http://ollama-host:11434" \ --custom-model-id "qwen3.5:27b" \ --accept-risk--custom-base-url dan --custom-model-id bersifat opsional; jika dihilangkan, host lokal default dan model yang disarankan gemma4 akan digunakan.
Penyiapan manual
Instal dan jalankan Ollama
Dapatkan dari ollama.com/download, lalu tarik sebuah model:
ollama pull gemma4Untuk akses cloud hibrida, jalankan ollama signin pada host yang sama.
Tetapkan kredensial
export OLLAMA_API_KEY="ollama-local" # host lokal/LAN, nilai apa pun dapat digunakanexport OLLAMA_API_KEY="your-real-key" # hanya https://ollama.comAtau dalam konfigurasi: openclaw config set models.providers.ollama.apiKey "OLLAMA_API_KEY".
Pilih model
openclaw models listopenclaw models set ollama/gemma4Atau dalam konfigurasi:
{ agents: { defaults: { model: { primary: "ollama/gemma4" }, }, },}Model cloud melalui host lokal
Cloud + Local merutekan model lokal dan model :cloud melalui satu
host Ollama yang dapat dijangkau — ini adalah alur hibrida Ollama dan mode yang dipilih selama penyiapan
saat Anda menginginkan keduanya.
OpenClaw meminta URL dasar, menemukan model lokal, dan memeriksa
status ollama signin. Saat sudah masuk, OpenClaw menyarankan default yang dihosting
(kimi-k2.5:cloud, minimax-m2.7:cloud, glm-5.1:cloud, glm-5.2:cloud). Jika
belum masuk, penyiapan tetap hanya lokal sampai Anda menjalankan ollama signin.
Untuk akses khusus cloud tanpa daemon lokal, gunakan openclaw onboard --auth-choice ollama-cloud dan lihat Ollama Cloud — jalur tersebut tidak memerlukan ollama signin atau server yang sedang berjalan:
openclaw onboard --auth-choice ollama-cloudopenclaw models set ollama-cloud/kimi-k2.5:cloudDaftar model cloud yang ditampilkan selama openclaw onboard diisi secara langsung dari
https://ollama.com/api/tags, dibatasi hingga 500 entri, sehingga pemilih mencerminkan
katalog yang dihosting saat ini. Jika ollama.com tidak dapat dijangkau atau tidak mengembalikan
model saat penyiapan, OpenClaw beralih ke daftar saran bawaan agar
orientasi awal tetap selesai.
Penemuan model (penyedia implisit)
Saat OLLAMA_API_KEY (atau profil autentikasi) ditetapkan dan baik
models.providers.ollama maupun penyedia khusus lain dengan api: "ollama" tidak
didefinisikan, OpenClaw menemukan model dari http://127.0.0.1:11434:
| Perilaku | Detail |
|---|---|
| Kueri katalog | /api/tags |
| Deteksi kemampuan | Pembacaan upaya terbaik /api/show membaca contextWindow, parameter Modelfile num_ctx, dan kemampuan (visi/alat/penalaran) |
| Model visi | Kemampuan vision dari /api/show menandai model sebagai mampu memproses gambar (input: ["text", "image"]) |
| Deteksi penalaran | Menggunakan kemampuan thinking dari /api/show jika tersedia; beralih ke heuristik nama (r1, reason, reasoning, think) saat Ollama tidak menyertakan kemampuan. glm-5.2:cloud dan deepseek-v4-flash|pro:cloud selalu dianggap sebagai model penalaran, terlepas dari kemampuan yang dilaporkan. |
| Batas token | maxTokens secara default menggunakan batas maksimum token Ollama milik OpenClaw |
| Biaya | Semua biaya adalah 0 |
ollama listopenclaw models listMenetapkan models.providers.ollama dengan array models eksplisit, atau
penyedia khusus dengan api: "ollama" dan baseUrl non-local loopback, menonaktifkan
penemuan otomatis; model kemudian harus didefinisikan secara manual (lihat
Konfigurasi). Entri models.providers.ollama yang diarahkan ke
https://ollama.com yang dihosting juga melewati penemuan, karena model Ollama Cloud
dikelola oleh penyedia. Penyedia local loopback khusus seperti
http://127.0.0.2:11434 tetap dianggap lokal dan mempertahankan penemuan otomatis.
Anda dapat menggunakan referensi lengkap seperti ollama/<pulled-model>:latest tanpa
entri models.json yang ditulis manual; OpenClaw menyelesaikannya secara langsung. Untuk host
yang sudah masuk, memilih referensi ollama/<model>:cloud yang tidak terdaftar akan memvalidasi model persis tersebut
dengan /api/show dan menambahkannya ke katalog runtime hanya jika Ollama
mengonfirmasi metadata — salah ketik tetap gagal sebagai model yang tidak dikenal.
Uji asap
Untuk pemeriksaan teks terbatas yang melewati seluruh permukaan alat agen:
OLLAMA_API_KEY=ollama-local \ openclaw infer model run \ --local \ --model ollama/llama3.2:latest \ --prompt "Reply with exactly: pong" \ --jsonTambahkan --file dengan gambar untuk pemeriksaan model visi yang ringan (menerima PNG/JPEG/WebP;
berkas non-gambar ditolak sebelum Ollama dipanggil — gunakan
openclaw infer audio transcribe untuk audio):
OLLAMA_API_KEY=ollama-local \ openclaw infer model run \ --local \ --model ollama/qwen2.5vl:7b \ --prompt "Describe this image in one sentence." \ --file ./photo.jpg \ --jsonKedua jalur tersebut tidak memuat alat obrolan, memori, atau konteks sesi. Jika jalur ini berhasil sementara balasan agen normal gagal, masalahnya kemungkinan terletak pada kapasitas alat/agen model, bukan endpoint.
Memilih model dengan /model ollama/<model> merupakan pilihan pengguna yang persis: jika
baseUrl yang dikonfigurasi tidak dapat dijangkau, balasan berikutnya gagal dengan kesalahan penyedia,
alih-alih diam-diam beralih ke model lain yang dikonfigurasi.
Tugas cron terisolasi menambahkan satu pemeriksaan keamanan lokal sebelum memulai giliran agen:
jika model yang dipilih diselesaikan ke penyedia Ollama lokal/jaringan privat/.local
dan /api/tags tidak dapat dijangkau, OpenClaw mencatat proses tersebut sebagai
skipped dengan model dalam teks kesalahan. Pemeriksaan endpoint ini disimpan dalam cache selama
5 menit per host, sehingga tugas cron berulang terhadap daemon yang berhenti tidak semuanya
meluncurkan permintaan yang akan gagal.
Verifikasi langsung:
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_OLLAMA=1 OPENCLAW_LIVE_OLLAMA_WEB_SEARCH=0 \ pnpm test:live -- extensions/ollama/ollama.live.test.tsUntuk Ollama Cloud, arahkan pengujian langsung yang sama ke endpoint ter-host (melewati
embedding secara default; paksa dengan OPENCLAW_LIVE_OLLAMA_EMBEDDINGS=1 karena
kunci cloud mungkin tidak mengizinkan /api/embed):
export OLLAMA_API_KEY='<your-ollama-cloud-api-key>'OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_OLLAMA=1 \OPENCLAW_LIVE_OLLAMA_BASE_URL=https://ollama.com \OPENCLAW_LIVE_OLLAMA_MODEL=glm-5.1:cloud \OPENCLAW_LIVE_OLLAMA_WEB_SEARCH=1 \pnpm test:live -- extensions/ollama/ollama.live.test.tsUntuk menambahkan model, tarik model tersebut dan model akan ditemukan secara otomatis:
ollama pull mistralInferensi lokal Node
Agen dapat mendelegasikan tugas singkat ke model Ollama pada desktop atau
Node server yang dipasangkan. Prompt dan respons melewati koneksi
Gateway/Node terautentikasi yang sudah ada; permintaan dijalankan pada endpoint
Ollama local loopback milik Node (http://127.0.0.1:11434).
Mulai Ollama pada Node
ollama pull qwen3:0.6bollama listHubungkan host Node
openclaw node run \ --host <gateway-host> \ --port 18789 \ --display-name "Local inference"Setujui perangkat dan perintah Node-nya pada host Gateway, lalu verifikasi:
openclaw devices listopenclaw devices approve <deviceRequestId>openclaw nodes pendingopenclaw nodes approve <nodeRequestId>openclaw nodes status --connectedKoneksi pertama, atau peningkatan yang menambahkan perintah Ollama, dapat memicu
persetujuan perintah Node. Jika Node terhubung tanpa mengiklankan
ollama.models dan ollama.chat, periksa kembali openclaw nodes pending.
Gunakan dari agen
Plugin Ollama bawaan menyediakan alat node_inference. Agen terlebih dahulu
memanggil action: "discover", lalu action: "run" dengan Node dan model dari
hasil tersebut (run dapat menghilangkan Node ketika tepat satu Node berkemampuan
terhubung). Contoh: "Temukan model Ollama pada Node saya, lalu gunakan
model termuat yang paling cepat untuk merangkum teks ini."
Penemuan membaca /api/tags, memeriksa kemampuan /api/show, dan menggunakan
/api/ps jika tersedia untuk memprioritaskan model yang sudah termuat. Penemuan hanya
mengembalikan model lokal yang dilaporkan Ollama sebagai berkemampuan percakapan
(kemampuan completion) — baris Ollama Cloud dan model khusus embedding dikecualikan.
Setiap eksekusi menonaktifkan pemikiran model dan menetapkan keluaran default sebanyak
512 token (batas mutlak 8192), kecuali pemanggilan alat meminta maxTokens yang berbeda;
beberapa model (misalnya GPT-OSS) tidak mendukung penonaktifan pemikiran dan mungkin
tetap menghasilkan token penalaran.
Untuk mempertahankan Ollama tetap berjalan pada Node tanpa menyediakannya kepada agen:
openclaw config set plugins.entries.ollama.config.nodeInference.enabled falseMulai ulang Node (openclaw node restart, atau hentikan/jalankan ulang
openclaw node run untuk sesi latar depan). Node berhenti mengiklankan
ollama.models dan ollama.chat; Ollama itu sendiri dan penyedia Ollama milik Gateway
tidak terpengaruh. Atur kembali nilainya menjadi true dan mulai ulang untuk mengaktifkannya
kembali; permukaan perintah yang berubah mungkin memerlukan persetujuan
openclaw nodes pending lagi setelah tersambung kembali.
Verifikasi perintah Node secara langsung, tanpa giliran agen:
openclaw nodes invoke \ --node "Local inference" \ --command ollama.models \ --params '{}' \ --invoke-timeout 90000 \ --timeout 100000 openclaw nodes invoke \ --node "Local inference" \ --command ollama.chat \ --params '{"model":"qwen3:0.6b","prompt":"Reply with exactly: pong","maxTokens":32,"timeoutMs":120000}' \ --invoke-timeout 130000 \ --timeout 140000--invoke-timeout membatasi durasi yang dimiliki Node untuk menjalankan perintah;
--timeout membatasi keseluruhan panggilan Gateway dan harus lebih besar.
Inferensi lokal Node selalu menggunakan endpoint local loopback milik Node — inferensi ini
tidak menggunakan kembali models.providers.ollama.baseUrl jarak jauh/cloud yang
dikonfigurasi. Perintah Node tersedia secara default pada host Node macOS, Linux, dan
Windows serta tetap tunduk pada kebijakan pemasangan/perintah Node yang normal.
Penglihatan dan deskripsi gambar
Plugin Ollama bawaan mendaftarkan Ollama sebagai penyedia pemahaman media berkemampuan gambar, sehingga OpenClaw dapat merutekan permintaan deskripsi gambar eksplisit dan default model gambar yang dikonfigurasi melalui model penglihatan Ollama lokal atau ter-host.
ollama pull qwen2.5vl:7bexport OLLAMA_API_KEY="ollama-local"openclaw infer image describe --file ./photo.jpg --model ollama/qwen2.5vl:7b --json--model harus berupa referensi <provider/model> lengkap; ketika ditetapkan, infer image describe mencoba model tersebut terlebih dahulu alih-alih melewati deskripsi untuk model
yang sudah mendukung penglihatan native. Jika panggilan gagal, OpenClaw dapat melanjutkan
melalui agents.defaults.imageModel.fallbacks; kesalahan penyiapan file/URL menyebabkan
kegagalan sebelum fallback dicoba. Gunakan infer image describe untuk alur pemahaman
gambar OpenClaw dan imageModel yang dikonfigurasi; gunakan infer model run --file untuk pemeriksaan multimodal mentah dengan prompt khusus.
Untuk menjadikan Ollama penyedia pemahaman gambar default bagi media masuk:
{ agents: { defaults: { imageModel: { primary: "ollama/qwen2.5vl:7b", }, }, },}Utamakan referensi ollama/<model> lengkap. Referensi imageModel polos seperti
qwen2.5vl:7b dinormalisasi menjadi ollama/qwen2.5vl:7b hanya ketika model persis
tersebut tercantum di bawah models.providers.ollama.models dengan
input: ["text", "image"] dan tidak ada penyedia gambar lain yang dikonfigurasi
menyediakan id polos yang sama; jika tidak, gunakan prefiks penyedia secara eksplisit.
Model penglihatan lokal yang lambat mungkin memerlukan batas waktu pemahaman gambar
yang lebih panjang daripada model cloud, dan dapat mogok pada perangkat keras terbatas
jika Ollama mencoba mengalokasikan seluruh konteks penglihatan yang diiklankan model.
Tetapkan batas waktu kemampuan dan batasi num_ctx:
{ models: { providers: { ollama: { models: [ { id: "qwen2.5vl:7b", name: "qwen2.5vl:7b", input: ["text", "image"], params: { num_ctx: 2048, keep_alive: "1m" }, }, ], }, }, }, tools: { media: { image: { timeoutSeconds: 180, models: [{ provider: "ollama", model: "qwen2.5vl:7b", timeoutSeconds: 300 }], }, }, },}Batas waktu ini berlaku untuk pemahaman gambar masuk dan alat image eksplisit.
models.providers.ollama.timeoutSeconds tetap mengendalikan pembatas permintaan HTTP
Ollama yang mendasari untuk panggilan model normal.
Verifikasi langsung:
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_OLLAMA_IMAGE=1 \ pnpm test:live -- src/agents/tools/image-tool.ollama.live.test.tsJika Anda mendefinisikan models.providers.ollama.models secara manual, tandai model
penglihatan secara eksplisit:
{ id: "qwen2.5vl:7b", name: "qwen2.5vl:7b", input: ["text", "image"], contextWindow: 128000, maxTokens: 8192,}OpenClaw menolak permintaan deskripsi gambar untuk model yang tidak ditandai
berkemampuan gambar. Dengan penemuan implisit, informasi ini berasal dari kemampuan
penglihatan /api/show.
Konfigurasi
Dasar (penemuan implisit)
export OLLAMA_API_KEY="ollama-local"Eksplisit (model manual)
Gunakan konfigurasi eksplisit untuk penyiapan cloud ter-host, host/port non-default, jendela konteks yang dipaksakan, atau daftar model yang sepenuhnya manual:
{ models: { providers: { ollama: { baseUrl: "https://ollama.com", apiKey: "OLLAMA_API_KEY", api: "ollama", models: [ { id: "kimi-k2.5:cloud", name: "kimi-k2.5:cloud", reasoning: false, input: ["text", "image"], cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, contextWindow: 128000, maxTokens: 8192 } ] } } }}URL dasar khusus
Konfigurasi eksplisit menonaktifkan penemuan otomatis, sehingga model harus dicantumkan:
{ models: { providers: { ollama: { apiKey: "ollama-local", baseUrl: "http://ollama-host:11434", // Tanpa /v1 - URL API native Ollama api: "ollama", // Eksplisit: menjamin perilaku pemanggilan alat native timeoutSeconds: 300, // Opsional: anggaran koneksi/aliran lebih panjang untuk model lokal yang belum termuat models: [ { id: "qwen3:32b", name: "qwen3:32b", params: { keep_alive: "15m", // Opsional: pertahankan model tetap termuat di antara giliran }, }, ], }, }, },}Resep umum
Ganti ID model dengan nama persis dari ollama list atau
openclaw models list --provider ollama.
Model lokal dengan penemuan otomatis
Ollama pada mesin yang sama dengan Gateway, ditemukan secara otomatis:
ollama serveollama pull gemma4export OLLAMA_API_KEY="ollama-local"openclaw models list --provider ollamaopenclaw models set ollama/gemma4Jangan tambahkan blok models.providers.ollama kecuali Anda memerlukan model manual.
Host Ollama LAN dengan model manual
{ models: { providers: { ollama: { baseUrl: "http://gpu-box.local:11434", apiKey: "ollama-local", api: "ollama", timeoutSeconds: 300, contextWindow: 32768, maxTokens: 8192, models: [ { id: "qwen3.5:9b", name: "qwen3.5:9b", reasoning: true, input: ["text"], params: { num_ctx: 32768, thinking: false, keep_alive: "15m", }, }, ], }, }, }, agents: { defaults: { model: { primary: "ollama/qwen3.5:9b" }, }, },}contextWindow adalah anggaran konteks OpenClaw; params.num_ctx dikirim ke
Ollama. Selaraskan keduanya ketika perangkat keras tidak dapat menjalankan seluruh
konteks yang diiklankan model.
Hanya Ollama Cloud
Tanpa daemon lokal, langsung menggunakan model ter-host:
export OLLAMA_API_KEY="your-ollama-api-key"{ models: { providers: { ollama: { baseUrl: "https://ollama.com", apiKey: "OLLAMA_API_KEY", api: "ollama", models: [ { id: "kimi-k2.5:cloud", name: "kimi-k2.5:cloud", reasoning: false, input: ["text", "image"], contextWindow: 128000, maxTokens: 8192, }, ], }, }, }, agents: { defaults: { model: { primary: "ollama/kimi-k2.5:cloud" }, }, },}Untuk id penyedia khusus ollama-cloud sebagai pengganti bentuk ini, lihat
Ollama Cloud.
Cloud dan lokal melalui daemon yang sudah masuk
ollama signinollama pull gemma4{ models: { providers: { ollama: { baseUrl: "http://127.0.0.1:11434", apiKey: "ollama-local", api: "ollama", timeoutSeconds: 300, models: [ { id: "gemma4", name: "gemma4", input: ["text"] }, { id: "kimi-k2.5:cloud", name: "kimi-k2.5:cloud", input: ["text", "image"] }, ], }, }, }, agents: { defaults: { model: { primary: "ollama/gemma4", fallbacks: ["ollama/kimi-k2.5:cloud"], }, }, },}Beberapa host Ollama
Gunakan ID penyedia khusus saat menjalankan lebih dari satu server Ollama; masing-masing memiliki host, model, autentikasi, dan batas waktunya sendiri.
{ models: { providers: { "ollama-fast": { baseUrl: "http://mini.local:11434", apiKey: "ollama-local", api: "ollama", contextWindow: 32768, models: [{ id: "gemma4", name: "gemma4", input: ["text"] }], }, "ollama-large": { baseUrl: "http://gpu-box.local:11434", apiKey: "ollama-local", api: "ollama", timeoutSeconds: 420, contextWindow: 131072, maxTokens: 16384, models: [{ id: "qwen3.5:27b", name: "qwen3.5:27b", input: ["text"] }], }, }, }, agents: { defaults: { model: { primary: "ollama-fast/gemma4", fallbacks: ["ollama-large/qwen3.5:27b"], }, }, },}OpenClaw menghapus prefiks penyedia aktif (dengan kembali menggunakan prefiks
ollama/ saja sebagai cadangan) sebelum memanggil Ollama, sehingga ollama-large/qwen3.5:27b
diterima Ollama sebagai qwen3.5:27b.
Profil model lokal ringan
Beberapa model lokal dapat menangani prompt sederhana, tetapi kesulitan dengan seluruh cakupan alat agen. Batasi alat dan konteks sebelum mengubah pengaturan runtime global:
{ agents: { list: [ { id: "local", experimental: { localModelLean: true, }, model: { primary: "ollama/gemma4" }, }, ], }, models: { providers: { ollama: { baseUrl: "http://127.0.0.1:11434", apiKey: "ollama-local", api: "ollama", contextWindow: 32768, models: [ { id: "gemma4", name: "gemma4", input: ["text"], params: { num_ctx: 32768 }, compat: { supportsTools: false }, }, ], }, }, },}Gunakan compat.supportsTools: false hanya ketika model atau server selalu
gagal memproses skema alat — pengaturan ini mengorbankan kemampuan agen demi stabilitas.
localModelLean menghapus alat berat untuk peramban, cron, pesan, pembuatan media,
suara, dan PDF dari cakupan langsung agen kecuali diwajibkan secara eksplisit,
serta menempatkan katalog yang lebih besar di balik Pencarian Alat. Pengaturan ini tidak mengubah
konteks runtime atau mode berpikir Ollama. Padukan dengan params.num_ctx dan
params.thinking: false untuk model berpikir kecil bergaya Qwen yang berulang
atau menghabiskan anggarannya untuk penalaran tersembunyi.
Pemilihan model
{ agents: { defaults: { model: { primary: "ollama/gpt-oss:20b", fallbacks: ["ollama/llama3.3", "ollama/qwen2.5-coder:32b"], }, }, },}ID penyedia khusus bekerja dengan cara yang sama: untuk referensi yang menggunakan prefiks
penyedia aktif, seperti ollama-spark/qwen3:32b, OpenClaw menghapus prefiks tersebut sebelum
memanggil Ollama dan mengirimkan qwen3:32b.
Untuk model lokal yang lambat, utamakan penyesuaian dalam lingkup penyedia sebelum meningkatkan batas waktu seluruh runtime agen:
{ models: { providers: { ollama: { timeoutSeconds: 300, models: [ { id: "gemma4:26b", name: "gemma4:26b", params: { keep_alive: "15m" }, }, ], }, }, },}timeoutSeconds mencakup permintaan HTTP model: penyiapan koneksi, header,
pengaliran isi, dan pembatalan total pengambilan terlindungi. params.keep_alive
diteruskan sebagai keep_alive tingkat teratas pada permintaan /api/chat native; atur
per model ketika waktu pemuatan giliran pertama menjadi hambatan utama.
Verifikasi cepat
# Ollama daemon visible to this machinecurl http://127.0.0.1:11434/api/tags # OpenClaw catalog and selected modelopenclaw models list --provider ollamaopenclaw models status # Direct model smokeopenclaw infer model run \ --model ollama/gemma4 \ --prompt "Reply with exactly: ok"Untuk host jarak jauh, ganti 127.0.0.1 dengan host baseUrl. Jika curl
berfungsi tetapi OpenClaw tidak, periksa apakah Gateway berjalan pada
mesin, kontainer, atau akun layanan yang berbeda.
Pencarian Web Ollama
OpenClaw menyertakan Pencarian Web Ollama sebagai penyedia web_search.
| Properti | Detail |
|---|---|
| Host | models.providers.ollama.baseUrl jika ditetapkan, jika tidak http://127.0.0.1:11434; https://ollama.com menggunakan API yang dihosting secara langsung |
| Autentikasi | Tanpa kunci untuk host lokal yang telah masuk; OLLAMA_API_KEY atau autentikasi penyedia yang dikonfigurasi untuk pencarian langsung melalui https://ollama.com atau host yang dilindungi autentikasi |
| Persyaratan | Host lokal/yang dihosting sendiri harus berjalan dan telah masuk dengan ollama signin; pencarian yang dihosting secara langsung memerlukan baseUrl: "https://ollama.com" beserta kunci API yang valid |
Pilih saat menjalankan openclaw onboard atau openclaw configure --section web, atau tetapkan:
{ tools: { web: { search: { provider: "ollama", }, }, },}Untuk pencarian yang dihosting secara langsung melalui Ollama Cloud:
{ models: { providers: { ollama: { baseUrl: "https://ollama.com", apiKey: "OLLAMA_API_KEY", api: "ollama", models: [{ id: "kimi-k2.5:cloud", name: "kimi-k2.5:cloud", input: ["text"] }], }, }, }, tools: { web: { search: { provider: "ollama" }, }, },}Untuk host yang dihosting sendiri, OpenClaw terlebih dahulu mencoba proksi lokal
/api/experimental/web_search, lalu kembali menggunakan jalur /api/web_search
yang dihosting pada host yang sama; daemon lokal yang telah masuk biasanya merespons
melalui proksi lokal. Panggilan langsung ke https://ollama.com selalu menggunakan
endpoint /api/web_search yang dihosting.
Konfigurasi lanjutan
Mode kompatibel OpenAI lama
Tetapkan api: "openai-completions" secara eksplisit untuk proksi di belakang
/v1/chat/completions:
{ models: { providers: { ollama: { baseUrl: "http://ollama-host:11434/v1", api: "openai-completions", injectNumCtxForOpenAICompat: true, // default: true apiKey: "ollama-local", models: [...] } } }}Mode ini mungkin tidak mendukung pengaliran dan pemanggilan alat secara bersamaan; Anda
mungkin perlu menetapkan params: { streaming: false } pada model.
OpenClaw menyisipkan options.num_ctx secara default dalam mode ini agar Ollama
tidak secara diam-diam kembali menggunakan konteks 4096 token. Jika proksi Anda menolak
bidang options yang tidak dikenal, nonaktifkan:
{ models: { providers: { ollama: { baseUrl: "http://ollama-host:11434/v1", api: "openai-completions", injectNumCtxForOpenAICompat: false, apiKey: "ollama-local", models: [...] } } }}Jendela konteks
Untuk model yang ditemukan secara otomatis, OpenClaw menggunakan jendela konteks yang dilaporkan
oleh /api/show, termasuk nilai PARAMETER num_ctx yang lebih besar dari
Modelfile khusus; jika tidak, OpenClaw kembali menggunakan jendela konteks
Ollama default miliknya.
contextWindow, contextTokens, dan maxTokens tingkat penyedia menetapkan
nilai default untuk setiap model di bawah penyedia tersebut dan dapat ditimpa per
model. contextWindow adalah anggaran prompt/Compaction milik OpenClaw. Permintaan
/api/chat native membiarkan options.num_ctx tidak ditetapkan kecuali Anda menetapkan
params.num_ctx secara eksplisit, sehingga Ollama menerapkan nilai default modelnya sendiri,
OLLAMA_CONTEXT_LENGTH, atau nilai berbasis VRAM; nilai params.num_ctx yang tidak valid,
nol, negatif, atau bukan bilangan terbatas akan diabaikan. Jika konfigurasi lama hanya
menggunakan contextWindow/maxTokens untuk memaksakan konteks permintaan native, jalankan
openclaw doctor --fix untuk menyalinnya ke params.num_ctx. Adaptor yang
kompatibel dengan OpenAI tetap menyisipkan options.num_ctx secara default dari
params.num_ctx atau contextWindow yang dikonfigurasi; nonaktifkan dengan
injectNumCtxForOpenAICompat: false jika layanan hulu menolak options.
Entri model native juga menerima opsi runtime Ollama umum di bawah
params, yang diteruskan sebagai options native /api/chat: num_keep, seed,
num_predict, top_k, top_p, min_p, typical_p, repeat_last_n,
temperature, repeat_penalty, presence_penalty, frequency_penalty,
stop, num_batch, num_gpu, main_gpu, use_mmap, dan num_thread.
Beberapa kunci (format, keep_alive, truncate, shift) diteruskan sebagai
bidang permintaan tingkat teratas, bukan options bertingkat. OpenClaw hanya
meneruskan kunci permintaan Ollama ini, sehingga parameter khusus runtime seperti
streaming tidak pernah dikirim ke Ollama. Gunakan params.think (atau
params.thinking) untuk menetapkan think tingkat teratas; false menonaktifkan
pemikiran tingkat API untuk model berpikir bergaya Qwen.
{ models: { providers: { ollama: { contextWindow: 32768, models: [ { id: "llama3.3", contextWindow: 131072, maxTokens: 65536, params: { num_ctx: 32768, temperature: 0.7, top_p: 0.9, thinking: false, }, } ] } } }}agents.defaults.models["ollama/<model>"].params.num_ctx per model juga
berfungsi; entri model penyedia eksplisit diutamakan jika keduanya ditetapkan.
Kontrol pemikiran
OpenClaw meneruskan pemikiran sesuai yang diharapkan Ollama: think tingkat teratas,
bukan options.think. Model yang ditemukan secara otomatis dan kemampuan thinking-nya
dilaporkan oleh /api/show menyediakan /think low, /think medium, /think high,
dan /think max; model tanpa kemampuan berpikir hanya menyediakan /think off.
openclaw agent --model ollama/gemma4 --thinking offopenclaw agent --model ollama/gemma4 --thinking lowAtau tetapkan nilai default model:
{ agents: { defaults: { models: { "ollama/gemma4": { thinking: "low", }, }, }, },}params.think/params.thinking per model dapat menonaktifkan atau memaksakan
proses berpikir API untuk model tertentu. OpenClaw mempertahankan konfigurasi eksplisit tersebut
ketika proses aktif hanya memiliki nilai bawaan implisit off; perintah runtime selain off
seperti /think medium tetap menggantikannya. Permintaan proses berpikir yang bernilai benar
tidak pernah dikirim ke model yang secara eksplisit ditandai
reasoning: false; permintaan think: false selalu dikirim dalam kondisi apa pun.
Model penalaran
Model bernama deepseek-r1, reasoning, reason, atau think secara bawaan
dianggap mampu melakukan penalaran — tidak memerlukan konfigurasi tambahan:
ollama pull deepseek-r1:32bBiaya model
Ollama berjalan secara lokal dan gratis, sehingga semua biaya model adalah 0, baik untuk
model yang ditemukan secara otomatis maupun yang ditentukan secara manual.
Embedding memori
Plugin Ollama bawaan mendaftarkan penyedia embedding memori untuk
pencarian memori. Penyedia ini menggunakan URL dasar Ollama
dan kunci API yang dikonfigurasi, memanggil /api/embed, serta mengelompokkan beberapa potongan memori ke dalam
satu permintaan input jika memungkinkan.
Saat proxy.enabled=true, permintaan embedding ke origin local loopback host yang sama persis
dan diturunkan dari baseUrl yang dikonfigurasi menggunakan jalur langsung
terlindungi milik OpenClaw, bukan proksi penerusan terkelola. Nama host yang dikonfigurasi
harus berupa localhost atau literal IP loopback — nama DNS
yang sekadar di-resolve ke loopback tetap menggunakan jalur proksi terkelola. Host Ollama di LAN,
tailnet, jaringan privat, dan publik selalu tetap menggunakan
jalur proksi terkelola, dan pengalihan ke host/port lain tidak mewarisi
kepercayaan. proxy.loopbackMode: "proxy" tetap merutekan lalu lintas loopback melalui
proksi; proxy.loopbackMode: "block" menolaknya sebelum tersambung —
lihat Proksi terkelola.
| Properti | Nilai |
|---|---|
| Model bawaan | nomic-embed-text |
| Penarikan otomatis | Ya, jika belum tersedia secara lokal |
| Konkurensi inline bawaan | 1 (penyedia lain memiliki nilai bawaan yang lebih tinggi; tingkatkan dengan nonBatchConcurrency jika host mampu menanganinya) |
Embedding saat kueri menggunakan prefiks pengambilan untuk model yang mewajibkan atau
merekomendasikannya: nomic-embed-text, qwen3-embedding, dan
mxbai-embed-large. Batch dokumen tetap mentah, sehingga indeks yang sudah ada
tidak memerlukan migrasi format.
{ agents: { defaults: { memorySearch: { provider: "ollama", remote: { // Default for Ollama. Raise on larger hosts if reindexing is too slow. nonBatchConcurrency: 1, }, }, }, },}Untuk host embedding jarak jauh, batasi cakupan autentikasi hanya pada host tersebut:
{ agents: { defaults: { memorySearch: { provider: "ollama", model: "nomic-embed-text", remote: { baseUrl: "http://gpu-box.local:11434", apiKey: "ollama-local", nonBatchConcurrency: 2, }, }, }, },}Konfigurasi streaming
Ollama menggunakan API native (/api/chat) secara bawaan, yang mendukung
streaming dan pemanggilan alat secara bersamaan — tidak memerlukan konfigurasi khusus.
Untuk permintaan native, kontrol proses berpikir diteruskan secara langsung: /think off
dan openclaw agent --thinking off mengirim think: false pada tingkat teratas, kecuali
params.think/params.thinking eksplisit telah dikonfigurasi; /think low|medium|high mengirim string tingkat upaya yang sesuai; /think max dipetakan ke
tingkat upaya tertinggi Ollama, yaitu think: "high".
Pemecahan masalah
Siklus crash WSL2 (boot ulang berulang)
Pada WSL2 dengan NVIDIA/CUDA, penginstal Linux resmi Ollama membuat
unit systemd ollama.service dengan Restart=always. Jika layanan tersebut
dimulai otomatis dan memuat model berbasis GPU selama proses boot WSL2, Ollama dapat mengunci
memori host selama pemuatan; pengambilan kembali memori Hyper-V tidak selalu dapat mengambil kembali
halaman-halaman tersebut, sehingga Windows dapat menghentikan VM WSL2, systemd memulai ulang
Ollama, dan siklus tersebut berulang.
Indikasi: boot ulang/penghentian WSL2 berulang, penggunaan CPU tinggi di app.slice atau
ollama.service tepat setelah WSL2 dimulai, serta SIGTERM dari systemd, bukan
dari penghenti OOM Linux.
OpenClaw mencatat peringatan saat mulai ketika mendeteksi WSL2, ollama.service
diaktifkan dengan Restart=always, dan penanda CUDA terlihat.
Mitigasi:
sudo systemctl disable ollamaDi sisi Windows, tambahkan konfigurasi berikut ke %USERPROFILE%\.wslconfig, lalu jalankan
wsl --shutdown:
[experimental]autoMemoryReclaim=disabledAtau persingkat keep-alive / mulai Ollama secara manual hanya saat diperlukan:
export OLLAMA_KEEP_ALIVE=5mollama serveLihat ollama/ollama#11317.
Ollama tidak terdeteksi
Pastikan Ollama sedang berjalan, OLLAMA_API_KEY (atau profil autentikasi) telah diatur,
dan models.providers.ollama tidak ditentukan secara eksplisit:
ollama servecurl http://localhost:11434/api/tagsTidak ada model yang tersedia
Tarik model secara lokal atau tentukan secara eksplisit di
models.providers.ollama:
ollama list # See what's installedollama pull gemma4ollama pull gpt-oss:20bollama pull llama3.3 # Or another modelKoneksi ditolak
# Check if Ollama is runningps aux | grep ollama # Or restart Ollamaollama serveHost jarak jauh berfungsi dengan curl tetapi tidak dengan OpenClaw
Verifikasi dari mesin dan runtime yang sama dengan yang menjalankan Gateway:
openclaw gateway status --deepcurl http://ollama-host:11434/api/tagsPenyebab umum:
baseUrlmengarah kelocalhost, tetapi Gateway berjalan di Docker atau host lain.- URL menggunakan
/v1, sehingga memilih perilaku kompatibel OpenAI, bukan Ollama native. - Host jarak jauh memerlukan perubahan firewall atau pengikatan LAN.
- Model berada di daemon laptop Anda, tetapi tidak di daemon jarak jauh.
Model menghasilkan JSON alat sebagai teks
Biasanya penyedia berada dalam mode kompatibel OpenAI, atau model tidak dapat menangani skema alat. Utamakan mode native:
{ models: { providers: { ollama: { baseUrl: "http://ollama-host:11434", api: "ollama", }, }, },}Jika model lokal kecil masih gagal menangani skema alat, atur
compat.supportsTools: false pada entri model tersebut dan uji kembali.
Kimi atau GLM menghasilkan simbol yang kacau
Respons Kimi/GLM yang dihosting dan berupa rangkaian simbol panjang nonlinguistik diperlakukan sebagai panggilan penyedia yang gagal, bukan balasan yang berhasil, sehingga penanganan percobaan ulang/fallback/kesalahan normal mengambil alih, alih-alih menyimpan teks rusak ke dalam sesi.
Jika masalah terulang, catat nama model, berkas sesi saat ini, dan
apakah proses menggunakan Cloud + Local atau Cloud only, lalu coba sesi baru
dan model fallback:
openclaw infer model run --model ollama/kimi-k2.5:cloud --prompt "Reply with exactly: ok" --jsonopenclaw models set ollama/gemma4Model lokal yang belum dimuat mengalami batas waktu
Model lokal berukuran besar dapat memerlukan waktu lama untuk pemuatan pertama. Batasi cakupan batas waktu ke penyedia Ollama dan, secara opsional, pertahankan model tetap dimuat di antara giliran:
{ models: { providers: { ollama: { timeoutSeconds: 300, models: [ { id: "gemma4:26b", name: "gemma4:26b", params: { keep_alive: "15m" }, }, ], }, }, },}Jika host itu sendiri lambat menerima koneksi, timeoutSeconds juga
memperpanjang batas waktu koneksi terlindungi untuk penyedia ini.
Model berkonteks besar terlalu lambat atau kehabisan memori
Banyak model menawarkan konteks yang lebih besar daripada yang dapat dijalankan perangkat keras Anda
dengan nyaman. Ollama native menggunakan nilai bawaan runtime-nya sendiri, kecuali
params.num_ctx diatur. Batasi anggaran OpenClaw dan konteks permintaan Ollama
agar latensi token pertama dapat diprediksi:
{ models: { providers: { ollama: { contextWindow: 32768, maxTokens: 8192, models: [ { id: "qwen3.5:9b", name: "qwen3.5:9b", params: { num_ctx: 32768, thinking: false }, }, ], }, }, },}Turunkan contextWindow jika OpenClaw mengirim terlalu banyak prompt. Turunkan
params.num_ctx jika konteks runtime Ollama terlalu besar untuk mesin.
Turunkan maxTokens jika pembuatan keluaran berlangsung terlalu lama.
Terkait
Penyiapan khusus cloud dengan penyedia khusus ollama-cloud.
Ikhtisar semua penyedia, referensi model, dan perilaku failover.
Cara memilih dan mengonfigurasi model.
Detail lengkap penyiapan dan perilaku pencarian web yang didukung Ollama.
Referensi konfigurasi lengkap.