Paano gamitin ang Ollama sa coding agent
Alamin ang base URL na gagamitin, dummy API key, context length na madalas sumira sa setup, at mga coding task na mas bagay sa local model.
Ano ang kokonektahan
Magagamit mo ang Ollama kasama ng coding agent mo, at mas simple ang koneksyon kaysa sa inaakala ng marami. Babaguhin mo ang isang base URL at pipili ka ng isang model name. Kailangan pa rin ng API key field ng value, pero hindi ito ginagamit ng local server, kaya anumang string ang puwedeng ilagay.
Nakikinig ang Ollama sa port 11434 at sabay nitong sinusuportahan ang dalawang request shape. Ang /v1/chat/completions ay ang OpenAI-compatible shape, at ayon sa documentation ng Ollama, required ang key dito pero hindi ito ginagamit. Ang /v1/messages ay ang Anthropic-compatible shape, na ginagamit ng Claude Code. Nagsasalita na ang agent mo sa isa sa dalawang shape, kaya wala ka nang ibang kailangang baguhin dito.
Limang minuto lang ang bahaging ito. Kung magagamit nang maayos ang resulta, nakadepende ito sa dalawang setting na halos walang nagbabago: ang context length at ang keep-alive. Nakadepende rin ito sa pagbibigay sa model ng uri ng trabahong mahusay nitong gawin. May sariling section ang bawat isa, at nasa hulihan ang tapat na mga limitasyon.
Aling coding agent ang tumatanggap ng local base URL
Isang tanong ang kailangan sa test: may setting ba ang tool para sa base URL? Kung mayroon, maaari itong makipag-ugnayan sa iyong server.
May mga integration page ang Ollama para sa Claude Code, OpenCode, Codex, Cline, Roo Code, Zed, JetBrains IDEs, at VS Code. Hiwalay na idinodokumento ng Aider ang suporta nito para sa Ollama. Saklaw nito ang karamihan ng tinutukoy ng mga tao bilang coding agent noong August 2026. Hindi pare-pareho ang API format na ginagamit ng mga ito, at dito karaniwang pumapalya ang setup.
- Karamihan ng agent ay nangangailangan ng OpenAI-compatible endpoint. Ibigay sa mga ito ang base URL
http://localhost:11434/v1at anumang non-empty na API key string. - Hindi tumatanggap ang Claude Code ng OpenAI base URL. Anthropic Messages API ang ginagamit nito, kaya kailangang itakda ang
ANTHROPIC_BASE_URLsahttp://localhost:11434, kung saan sine-serve ng Ollama ang/v1/messages. - OpenAI Responses API ang ginagamit ng Codex. Sine-serve rin ng Ollama ang
/v1/responses, na idinagdag sa version 0.13.3. - Hindi maaaring i-redirect ang agent na walang setting para sa base URL, dahil built-in sa client ang endpoint. Maglagay na lang ng translation layer sa harap nito, gaya ng self-hosted LiteLLM gateway, at i-expose muli ang iyong model sa format na hinihingi ng client.
Maaaring isulat ng Ollama ang mga config na ito para sa iyo. Sinisimulan ng ollama launch opencode ang OpenCode gamit ang inline config para sa model na pinili mo, ganoon din ang ginagawa ng ollama launch claude para sa Claude Code, at isinusulat ng ollama launch droid --config ang config nang hindi inilulunsad ang tool.
I-install ang Ollama at mag-pull ng model na kayang tumawag sa tools
curl -fsSL https://ollama.com/install.sh | sh
systemctl status ollama --no-pager
ollama pull qwen3-coder:30b
ollama lsNagdadagdag ang installer ng systemd unit at sinisimulan ito, kaya dapat mag-print ang systemctl status ollama ng active (running). Kung hindi, ipi-print ng journalctl -e -u ollama ang dahilan.
Dapat may suporta ang model sa tool calling dahil ito ang paraan kung paano gumagana ang isang agent. Nagbabasa ito ng file, nagsusulat ng patch, nagpapatakbo ng test, pagkatapos ay binabasa ang failure at muling sumusubok. Ang model na hindi makapaglabas ng tool call ay maglalarawan ng edit sa prose sa halip na isagawa ito, kaya maglo-loop o hihinto ang agent. Hanapin ang label na tools sa page ng model sa ollama.com bago ito i-pull. May label nito ang qwen3-coder:30b, at noong August 2026, ang tag na iyon ay 19 GB na download na may 256K context window. Kung CPU-only ang box mo o kapos sa RAM, ipinapakita ng memory arithmetic para sa Qwen 27B tag sa isang VPS kung ano talaga ang kasya sa 8 hanggang 64 GB bago mo simulan ang download.
Ngayon, kumpirmahin kung aling mga pangalan ang aktuwal na sine-serve ng server:
curl http://localhost:11434/v1/modelsAng mga string sa response na iyon ang dapat ilagay ng agent config mo, character for character. Karamihan ng model-not-found errors ay nalulutas kapag sinuri muna ito. Kung hindi pa naka-install ang Ollama, nasa pagho-host ng LLM sa isang VPS gamit ang Ollama ang mas mahabang walkthrough.
Ituro ang OpenCode sa Ollama
I-edit ang ~/.config/opencode/opencode.json:
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"ollama": {
"npm": "@ai-sdk/openai-compatible",
"name": "Ollama",
"options": {
"baseURL": "http://localhost:11434/v1"
},
"models": {
"qwen3-coder:30b": {
"name": "qwen3-coder 30b"
}
}
}
}
}Ang key sa ilalim ng models ay ang model name na ipinapadala sa Ollama, kaya dapat itong eksaktong tumugma sa ollama ls. Ang field na name ay label lamang sa model picker. Simulan ang opencode, lumipat sa Ollama provider, at i-monitor ang journalctl -e -u ollama upang makumpirmang dumating ang request sa server mo at hindi sa ibang lugar. Saklaw sa pagpapatakbo ng OpenCode sa isang VPS ang pag-set up ng agent mismo.
Ituro ang Claude Code sa Ollama
export ANTHROPIC_AUTH_TOKEN=ollama
export ANTHROPIC_API_KEY=""
export ANTHROPIC_BASE_URL=http://localhost:11434
claude --model qwen3-coder:30bANTHROPIC_API_KEY ay sadyang itinakda bilang empty string. Kapag may totoong key sa environment, sa hosted API ipapadala ang mga request mo. Magkakaroon ka ng bill at walang local inference. Awtomatikong ise-set ng ollama launch claude ang lahat ng ito.
Alamin kung ano ang hindi kasama sa compatibility layer. Hindi nito ini-implement ang tool_choice o prompt caching. Wala rin itong token counting endpoint, kaya approximation lamang ang mga token number na nakikita mo, batay sa sariling tokenizer ng model. Nagpapadala rin ang Claude Code ng malaking system prompt at malaking tool set, kaya mas malaking context ang kailangan nito kaysa sa chat client. Tinalakay sa kung maaari mong i-self-host ang Claude ang mas malawak na tanong kung ano ang naililipat at kung ano ang hindi.
Ituro ang Aider sa Ollama
export OLLAMA_API_BASE=http://127.0.0.1:11434
aider --model ollama_chat/qwen3-coder:30bInirerekomenda ng dokumentasyon ng Aider ang prefix na ollama_chat/ kaysa sa ollama/. Maaari mo ring itakda ang context window para sa bawat model sa .aider.model.settings.yml. Kapaki-pakinabang ito kapag nangangailangan ang isang model ng ibang window kumpara sa default ng server:
- name: ollama_chat/qwen3-coder:30b
extra_params:
num_ctx: 65536Bakit naglalabas pa rin ng walang saysay na output ang gumaganang setup
Ito ang mahalagang bahagi. Pinipili ng Ollama ang default context length batay sa VRAM (video memory ng GPU) na nakikita nito, at inilalathala ang mga default na iyon:
The data behind this chart
[
{
"label": "Under 24 GiB VRAM",
"default_context_tokens": "4,096"
},
{
"label": "24 to 48 GiB VRAM",
"default_context_tokens": "32,768"
},
{
"label": "48 GiB VRAM or more",
"default_context_tokens": "262,144"
}
]Karamihan sa VPS plan, pati ang lahat ng CPU-only server, ay napupunta sa unang row: 4,096 tokens. Malaking GPU lamang ang nakakakuha ng 262,144 tokens sa huling row.
Nagpapasa ang isang agent ng 4096 tokens bago pa ito magsimulang magtrabaho. Mas malaki na rito ang system prompt, mga tool definition, repository listing, at unang file na binubuksan nito. Dito nagsisimula ang buong problema: walang lumalabas na error. Ayon sa documentation ng Aider, tahimik na itinatapon ng Ollama ang context na lumalampas sa window. Nawawala ang pinakamatandang tokens, kaya may kumpiyansang sumasagot ang model tungkol sa file na hindi na nito nakikita, o nakakalimutan nito ang instruction na ibinigay mo dalawang hakbang na ang nakalipas. Ito ang dahilan sa likod ng karamihan ng mga ulat na masyadong mahina ang isang local model sa pagsusulat ng code.
Sinasabi ng documentation ng Ollama na ang mga task gaya ng agents at coding tools ay dapat itakda sa hindi bababa sa 64000 tokens. Itakda ito sa server:
sudo systemctl edit ollama.serviceIdagdag ang mga linyang ito sa override file:
[Service]
Environment="OLLAMA_CONTEXT_LENGTH=64000"Pagkatapos, i-reload at i-restart:
sudo systemctl daemon-reload
sudo systemctl restart ollama
ollama psAng ollama ps ang check. Nagpi-print ito ng column na CONTEXT, at ang numerong iyon ang aktuwal na natanggap ng model. Magkaiba ang iyong ID at SIZE:
NAME ID SIZE PROCESSOR CONTEXT UNTIL
qwen3-coder:30b a1b2c3d4e5f6 24 GB 100% GPU 64000 4 minutes from nowItakda ito sa server sa halip na sa agent, sa dalawang dahilan. Walang field para sa context length ang OpenAI chat completions schema, kaya hindi makakahingi nito ang isang OpenAI-compatible client. Per server din ang setting, kaya mamanahin ito ng bawat agent na ikinokonekta mo sa server. Kung nangangailangan ang isang model ng ibang window, i-embed ito sa isang kopya gamit ang Modelfile:
FROM qwen3-coder:30b
PARAMETER num_ctx 65536ollama create qwen3-coder-64k -f ModelfileHindi libre ang context. Mas maraming memory ang kailangan ng mas mahabang window, kaya i-monitor ang column na PROCESSOR. Ang 100% GPU ang target mo. Kapag napunta sa CPU ang bahagi ng model dahil kulang ang VRAM, sapat na babagal ang token rate para maging hindi na magamit ang agent loop. Ang pagsukat ng tokens per second sa isang local LLM ang paraan upang makita ang aktuwal na limitasyon ng server mo. Tinalakay sa kung gaano karaming RAM at CPU ang kailangan ng coding agent VPS ang pag-size ng machine bago ito bilhin.
Panatilihing naka-load ang model sa pagitan ng mga request
Bilang default, ina-unload ng Ollama ang isang model 5 minuto matapos ang huli nitong request. Angkop ito para sa chat box ngunit hindi para sa agent work. Hihinto ka upang basahin ang diff, matatapos ang timer, at ire-reload ng susunod na request ang sampu-sampung gigabyte ng weights mula sa disk bago lumabas ang unang token. Mukha itong nag-hang.
Ang OLLAMA_KEEP_ALIVE ay tumatanggap ng duration string gaya ng 10m o 24h, plain number ng mga segundo, -1 upang panatilihing naka-load ang model nang walang takdang oras, o 0 upang agad itong i-unload. Itakda ito kasabay ng context length:
[Service]
Environment="OLLAMA_CONTEXT_LENGTH=64000"
Environment="OLLAMA_KEEP_ALIVE=-1"Ang keep_alive request field ay umiiral lamang sa native na /api/generate at /api/chat endpoints ng Ollama, hindi sa compatibility endpoints, kaya hindi ito maitatakda ng agent sa bawat request. Ang environment variable lamang ang magagamit mong control. Kapag kailangan mo nang mabawi ang memory, ina-unload ng ollama stop qwen3-coder:30b ang model nang hindi pinatitigil ang server.
Pagpapatakbo ng Ollama sa hiwalay na server
Naka-bind ang Ollama sa localhost. Para ma-access ito mula sa ibang machine, itakda ang OLLAMA_HOST=0.0.0.0:11434 sa parehong systemd override at i-restart ang service.
Gawin lamang ito sa private network. Ayon sa documentation ng Ollama, walang authentication na kailangan para sa local API. Kaya kapag bukas sa internet ang port 11434, maaaring gamitin ng sinuman ang hardware mo at basahin ang anumang ipinapadala ng agent mo. Dalawang ligtas na opsyon ang mayroon. Panatilihing naka-bind sa localhost at i-forward ang port gamit ang SSH mula sa laptop mo:
ssh -N -L 11434:localhost:11434 you@your-vpsPatuloy na ituturo ng agent mo ang http://localhost:11434/v1 at hindi nito mapapansin ang pagkakaiba. Ang isa pang opsyon ay VPN, kung saan naka-bind ang Ollama sa VPN address sa halip na sa 0.0.0.0. Kung maraming tao o maraming agent ang makikigamit sa iisang machine, hindi idinisenyo ang scheduler ng Ollama para sa ganitong load. Ipinapakita ng paghahambing ng Ollama at vLLM kung kailan nagsisimulang makaapekto nang malaki ang pagkakaiba sa throughput.
Kung saan nangingibabaw ang local coding model, at kung saan hindi
Hindi napapalitan ng agent na pinapagana ng model na ikaw ang nagho-host ang frontier API sa lahat ng task. Malinaw itong nangingibabaw sa apat na uri ng trabaho.
- Maramihang mechanical edit, kung maliit ang bawat pagbabago at mabe-verify mo ito. Pagpapalit ng pangalan sa buong repository, pagdaragdag ng type hints, pagsusulat ng docstrings, at pagsasalin ng comments. Maaaring tumakbo ang model nang ilang oras nang hindi nadaragdagan ang bill.
- Trabahong hindi dapat lumabas sa hardware mo. Halimbawa, client code na saklaw ng confidentiality agreement, o internal repository na hindi mo pinapayagang ipadala sa third party.
- Mga offline at air-gapped machine na walang hosted API na maaaring tawagan.
- Predictable na gastos. Kapag bayad na ang server, walang dagdag na gastos ang agent na paulit-ulit na gumagamit ng tokens sa isang loop. Kabaligtaran ito ng metered API. Nasa Kailan nababawi ng GPU VPS ang gastos kumpara sa API tokens ang computation.
Hindi ito mahusay sa mahahabang multi-step task. Ang “Hanapin kung bakit nagfa-fail ang test na ito, ayusin ang sanhi, at i-update ang mga caller” ay nangangailangan ng maraming magkakasunod na tamang tool call, habang nasa context pa rin ang buong history. Ang model na nasa 8B hanggang 14B range at tumatakbo sa modest na server ay maaaring gumawa ng malformed tool call o mawala sa plano pagkalipas ng ilang turn. Dahil dito, mas matagal mo itong gi-gabayan kaysa sa oras na kailangan sana para sa task. Hindi ito problemang malulutas sa pamamagitan lamang ng mas mahusay na prompt. Capacity ito.
Hindi rin ito mahusay kapag mahal ang epekto ng pagkakamali at hindi mo babasahin ang bawat linya. Bigyan ang local model ng makikitid na task na mabe-verify mo ang output, at gumamit ng hosted model para sa trabahong hindi mo susuriin step by step.
Mga failure mode at mga string na makikita mo
curl: (7) Failed to connect to localhost port 11434 after 0 ms: Connection refused. Hindi tumatakbo ang server, o nakaturo ang agent sa ibang host. Patakbuhin ang systemctl status ollama, pagkatapos ay journalctl -e -u ollama.
Iniuulat ng agent na wala ang model. Hindi tumutugma ang pangalan sa iyong config sa alinman sa mga pangalang inihahatid ng server. Ihambing ito sa curl http://localhost:11434/v1/models at kopyahin ang string mula roon. Bahagi ng pangalan ang tag, kaya mabibigo ang config na tumutukoy sa tag na hindi mo kailanman na-pull kahit may naka-install na katulad na model.
Sumasagot ang agent nang nasa prose at hindi kailanman nag-e-edit ng file. Maaaring walang tool support ang model, o napupuno na ng request kasama ang tool definitions nito ang context window. Tingnan ang label na tools sa model page, pagkatapos ay tingnan ang column na CONTEXT sa ollama ps.
Mahabang paghihintay bago lumabas ang unang token, pagkatapos ay normal ang bilis. Nag-expire ang keep-alive at binabasa muli mula sa disk ang weights. I-set ang OLLAMA_KEEP_ALIVE.
Kinokontra ng model ang file na kababasa lamang nito. Truncated ang context. Karaniwang ipinapakita ng ollama ps ang value na CONTEXT na mas maliit kaysa sa inaakala mong itinakda, dahil napunta ang environment variable sa shell mo sa halip na sa systemd unit.
Gumagana ang lahat pero mabagal, at hindi PROCESSOR ang 100% GPU. Hindi kasya sa VRAM ang model kasama ang context nito. Bawasan ang context length, o gumamit ng mas maliit na model o mas maliit na quantisation.
FAQ
Maaari ko bang ituro ang Claude Code sa Ollama?
Oo, pero hindi gamit ang URL na compatible sa OpenAI. Ginagamit ng Claude Code ang Anthropic Messages API, at inihahatid ng Ollama ang format na iyon sa /v1/messages sa parehong port na 11434. I-export ang ANTHROPIC_BASE_URL=http://localhost:11434, ANTHROPIC_AUTH_TOKEN=ollama, at isang walang laman na ANTHROPIC_API_KEY, saka itong simulan gamit ang claude --model qwen3-coder:30b. Awtomatikong isinusulat ng ollama launch claude ang parehong mga setting. Hindi ipinapatupad ng compatibility layer ang tool_choice o prompt caching, at wala itong endpoint para sa token counting, kaya tinatayang halaga lamang ang mga iniulat na token count.
Bakit sumasagot ang local model ko tungkol sa code na hindi nito nakikita?
Dahil hindi na kasya ang request sa context window, at inalis ang pinakamatandang bahagi nito nang walang error. Itinatakda ng Ollama ang default context batay sa VRAM na natukoy nito. Kapag mas mababa sa 24 GiB ang VRAM, 4,096 tokens ang default na iyon, at nalalampasan na ito ng system prompt at tool definitions ng isang agent kahit wala pang ibang laman. Itakda ang OLLAMA_CONTEXT_LENGTH=64000 sa systemd unit, i-restart ang Ollama, at tiyaking ipinapakita ng column na CONTEXT sa ollama ps ang bagong value.
Aling model ang dapat kong patakbuhin para sa coding agent sa isang VPS?
Piliin ang pinakamalaking model na may label na tools at kasya pa rin sa memory kapag 64k ang context window. Mas piliin ang model na in-tune para sa code. Karaniwang sagot ang qwen3-coder:30b sa isang GPU server na may sapat na VRAM. Kapag mas mababa sa humigit-kumulang 14B parameters ang model, maaari pa rin itong sumagot nang maayos tungkol sa code ngunit maaaring mabigo sa mga multi-step edit. Ito ay dahil sensitibo ang agent work sa maliliit na formatting mistake sa tool calls. Mag-test gamit ang isang aktuwal na task mula sa sarili mong repository sa halip na sample prompt.
Kailangan ko ba ng GPU para magpatakbo ng coding agent gamit ang sarili kong model?
Sa aktuwal na paggamit, oo. Gumagana ang CPU-only inference at sapat ito para sa mga indibidwal na tanong. Ngunit maraming request ang ipinapadala ng agent sa bawat task, at binabasa nitong muli ang mahabang history sa bawat isa. Dahil dito, maaaring maging isang oras ang task na dapat ay dalawang minuto lamang kapag mabagal ang token rate. Suriin ang column na PROCESSOR sa ollama ps. Ang anumang value maliban sa 100% GPU ay nangangahulugang may bahagi ng model na tumatakbo sa CPU, kaya malaki ang ibinabagsak ng token rate.