OpenCode Ollama ilə işləmədikdə, modeli dəyişməzdən əvvəl server endpoint-ini və dəqiq model ID-ni yoxlayın. Hər iki yoxlama uğurlu olarsa, alət çağırışı problemini bağlantı problemindən ayırmaq üçün kiçik bir fayl redaktəsi testi edin. Söhbət sorğusuna cavab verən model kodlaşdırma agentinin iş axınının yalnız ilk mərhələsini keçib.

Bu bələdçi Ollama və OpenCode-un artıq quraşdırıldığını nəzərdə tutur. Quraşdırma və provayder konfiqurasiyası üçün Ollama ilə OpenCode quraşdırma bələdçisindən istifadə edin. Buradakı prosedur işlək konfiqurasiyanızı təkrar-təkrar dəyişmədən xətaları təcrid edir.

Hansı sorğunun uğursuz olduğunu tapın

OpenCode xətası inferensiyadan əvvəl, generasiya zamanı və ya alət icra olunarkən baş verə bilər. Bu mərhələləri ayrı-ayrılıqda yoxlayın. Rədd edilmiş bağlantı ilə JSON-a bənzər abzas qaytaran model fərqli bir problemə işarə edir. Parametri dəyişməzdən əvvəl endpoint-i, seçilmiş modeli və xətanı qeyd edin ki, dəyişikliyin kömək edib-etmədiyini müəyyən edə biləsiniz.

MüşahidəNövbəti yoxlamaNəticə nəyi müəyyən edir
Bağlantı rədd edildiKonfiqurasiya edilmiş host və portda /api/version sorğusu göndərinHəmin Ollama endpoint-inin əlçatan olub-olmadığını
Model tapılmadı/v1/models oxuyun və dəqiq ID-ni müqayisə edinTələb olunan modelin həmin serverdə mövcud olub-olmadığını
Söhbət işləyir, fayllar dəyişmirAlət çağırışlarını və icazə nəticələrini yoxlayınOpenCode-un əməliyyatı həyata keçirib-keçirmədiyini
Kiçik redaktələr işləyir, böyük tapşırıqlar uğursuz olurAyrılmış konteksti və runtime loglarını yoxlayınDaha böyük tapşırığın ölçülə bilən limitə rast gəlib-gəlmədiyini
Lokal işləyir, bulud asılı qalırİki marşrutu ayrı-ayrılıqda test edinXətanın bulud yoluna xas olub-olmadığını

Xətanı yenidən yaratmazdan əvvəl versiyaları qeyd edin:

opencode --version
ollama --version

Bu məqalədəki lokal yoxlamalar Apple M3 Ultra (96 GB vahid yaddaş) üzərində OpenCode 1.19.4 və Ollama 0.32.9 ilə aparılıb. Bu avadanlıq seçdiyimiz 31B modelini işlədə bilir; kiçik noutbuklar üçün yaddaş tövsiyəsi deyil. Digər avadanlıqda model seçimi üçün Ollama kodlaşdırma modeli bələdçisini oxuyun.

Modeli dəyişməzdən əvvəl endpoint-i yoxlayın

OpenCode-un istifadə etdiyi eyni host və porta sorğu göndərin. 127.0.0.1:11434 ünvanındakı lokal server və 127.0.0.1:11435 ünvanındakı server fərqli endpoint-lərdir. Sorğu uğursuz olarsa, əvvəlcə serveri və ya ünvanı düzəldin. Modeli dəyişmək rədd edilmiş şəbəkə bağlantısını düzəldə bilməz.

curl --fail-with-body --max-time 5 \
  http://127.0.0.1:11434/api/version

curl --fail-with-body --max-time 5 \
  http://127.0.0.1:11434/v1/models

Versiya cavabı Ollama-nın cavab verdiyini təsdiqləyir. Model siyahısı cavabı həmin serverin hansı model ID-lərini təqdim etdiyini göstərir. Boş siyahı serverin əlçatan olduğunu, lakin siyahıda model olmadığını bildirir; bu, bağlantı xətasından fərqlidir.

Ollama dayandırılıbsa, tətbiqi başladın və ya onun serverini terminalda işə salın:

ollama serve

Port artıq tutulubsa, başqa nüsxə başlatmaq əvəzinə hansı serverin işlədiyini yoxlayın. Uzaq Ollama quraşdırması onun uzaq ünvanını tələb edir; 127.0.0.1 həmişə klienti işlədən maşına aiddir.

Ollama-nın OpenCode inteqrasiya sənədləşməsi /v1 ilə bitən OpenAI-uyğun baza URL-dən istifadə edir. Bu suffiksi OpenCode-un provayder konfiqurasiyasında saxlayın. /api/version kimi nativ diaqnostik marşrutlar ondan kənarda yerləşir.

Konfiqurasiya edilmiş modeli serverin dəqiq ID-si ilə uyğunlaşdırın

Serverin qaytardığı serverin qaytardığı model ID-dən, o cümlədə onun teqindən istifadə edin. Bir Ollama serverində yüklənmiş model, eyni modelə malik olmadıqda başqa server üçün əlçatan deyil. Sorğunu təkrarlamazdan əvvəl seçilmiş provayderi, onun baza URL-ni və model elanını birlikdə yoxlayın.

Bu, OpenCode 1.19.4 yoxlamalarımız üçün istifadə etdiyimiz provayder formasıdır:

{
  "provider": {
    "ollama": {
      "npm": "@ai-sdk/openai-compatible",
      "options": {
        "baseURL": "http://127.0.0.1:11434/v1"
      },
      "models": {
        "gemma4:31b": {
          "name": "Gemma 4 31B",
          "limit": {
            "context": 65536,
            "output": 2048
          }
        }
      }
    }
  }
}

gemma4:31b əvəzinə serverinizin həqiqətən siyahıda göstərdiyi ID-ni yazın. Nümunə həmin modeli yükləmir. OpenCode-un tam selektoru provayder adını və model ID-ni birləşdirir:

opencode run -m ollama/gemma4:31b "Reply with one short sentence."

Ollama-nın uyğunluq endpoint-i vasitəsilə qəsdən mövcud olmayan modeli sorğuladıq və not_found_error ilə HTTP 404 aldıq. Bu nəticə model seçimi xətasını müəyyən edir. Yaddaş çatışmazlığını və ya pozulmuş alət parserini göstərmir.

Konfiqurasiyalar bir neçə mənbədən gələ bilər. OpenCode-un konfiqurasiya sənədləşməsi parametrlərin necə birləşdiyini təsvir edir. Dəyərin nəzərə alınmadığı görünürsə, həll edilmiş konfiqurasiyanı lokal olaraq yoxlayın:

opencode debug config

Həll edilmiş konfiqurasiya etimadnamələr ehtiva edə bilər. Diaqnostik hesabatı paylaşmazdan əvvəl müvafiq provayder parametrlərini çıxarın və açarları və ya əlaqəsiz hesab detallarını silin.

Birdəfəlik kodlama test faylı ilə əməliyyatı doğrulayın

Dəyişdirilmiş faylı özünüz yoxlayın və testini işə salın. OpenCode-a bir məlum xətası olan kiçik fayl verin, ondan faylı düzəltməsini xahiş edin və sonra müstəqil yoxlama aparın. Bu, fayl girişini, redaktəni və icranı test edir, diaqnozu isə yoxlanıla biləcək qədər kiçik saxlayır.

Yeni qovluq yaradın və içinə daxil olun:

mkdir opencode-ollama-check
cd opencode-ollama-check

cat > add.mjs <<'JS'
export function add(a, b) {
  return a - b;
}
JS

cat > check.mjs <<'JS'
import { add } from './add.mjs';
if (add(2, 3) !== 5) throw new Error('Expected add(2, 3) to return 5');
console.log('PASS');
JS

node check.mjs

İlk yoxlama uğursuz olmalıdır. Test edilmiş provayder konfiqurasiyanızı bu birdəfəlik qovluğa kopyalayın, sonra işə salın:

opencode run -m ollama/gemma4:31b \
  "Read add.mjs. Fix add so it adds its arguments. Run node check.mjs."

node check.mjs

add.mjs özünüz yoxlayın. Fayl hələ də çıxma əməliyyatını yerinə yetirirsə və ya müstəqil yoxlama uğursuz olarsa, modelin uğur mesajı kifayət deyil. İcazə sorğularını görünür saxlayın ki, rədd edilmiş redaktəni mövcud olmayan alət çağırışından fərqləndirə biləsiniz. Yoxlamalarımız zamanı macOS fixture-i /private/tmp altında həll etdi, alət isə onun /tmp aliasını sorğuladı. OpenCode aliaslı yolu xarici kimi qəbul etdi və qeyri-interaktiv işə salmada onu rədd etdi. Həll edilmiş qovluqdan və nisbi fayl yollarından istifadə etmək fixture-in dar əhatəli icazələrlə işləməsinə imkan verdi.

Daha dərin yoxlama üçün OpenCode CLI JSON çıxışını dəstəkləyir:

opencode run --format json -m ollama/gemma4:31b \
  "Read add.mjs and explain the implementation."

İcra olunmuş aləti və onun nəticəsini axtarın. Funksiya adı və ya JSON obyekti ehtiva edən mətn OpenCode-un hər hansı şeyi icra etdiyini öz-özlüyündə sübut etmir. Endpoint və fixture icazələrini düzəltdikdən sonra bir təmir icrası fixture-i oxudu, çıxmanı toplama ilə əvəz etdi və müstəqil Node yoxlamasını keçdi. İkinci icra, qəsdən mövcud olmayan model ID-ni əvəz etdikdən sonra eyni yoxlamanı keçdi. Ayrı birbaşa API sorğumuzda Gemma 4 31B 65,536 kontekstdə strukturlaşdırılmış read_file çağırışı qaytardı. Bu tək nəticə sorğunun cavab formatını doğrulayır, kodlaşdırma tapşırıqları üzrə etibarlılığını deyil.

Ollama-nın həqiqətən ayırdığı konteksti yoxlayın

OpenCode-un göstərdiyi model limiti və Ollama-nın işləmə zamanı ayırdığı kontekst uyğun gəlməlidir. Klient konfiqurasiyasında rəqəmi artırmaq serverin daha çox kontekst ayırdığını göstərmir. Sorğu zamanı işləyən modeli yoxlayın, sonra onun faktiki kontekstini tapşırığın prompt və alət tarixçəsi ilə müqayisə edin.

Ollama-nın kontekst sənədləşməsi kodlaşdırma alətləri və agentlər üçün ən azı 64,000 token tövsiyə edir. Həmçinin izah edir ki, daha böyük ayırmalar daha çox yaddaş istehlak edir. Əl ilə başladılan server konkret ayrılma təyin edə bilər:

OLLAMA_CONTEXT_LENGTH=65536 ollama serve

Bu dəyişəni Ollama-nı işlədən prosesdə təyin edin. Onu yalnız OpenCode-u işlədən terminalda export etmək artıq işləyən Ollama tətbiqini yenidən konfiqurasiya etmir. Serverinizi tətbiq idarə edirsə, tətbiqin kontekst parametrindən istifadə edin.

Model yüklənmişkən onu yoxlayın:

ollama ps

CONTEXT və PROCESSOR sütunlarını yoxlayın. Ollama xüsusi host və ya port istifadə edirsə, CLI-ni də həmin serverə yönəldin. Yaddaş təzyiqi, CPU offloading, truncation və alət formatı xətaları ayrı-ayrı sübut tələb edir; təkbaşına yavaş cavab hansının baş verdiyini müəyyən edə bilməz.

Avadanlığınız tələb olunan konteksti dəstəkləyə bilmirsə, alətləri dəstəkləyən daha kiçik model seçin və eyni fixture-i təkrarlayın. İki modeli fərqli tapşırıqlarla müqayisə edib fərqi model keyfiyyətinə aid etməkdən çəkinin.

Faydalı xəta hesabatı saxlayın

Faydalı hesabat başqa tərtibatçının eyni sorğunu təkrarlamasına imkan verir. Versiyaları, təmizlənmiş provayder konfiqurasiyasını, dəqiq model teqini, ayrılmış konteksti və hələ də uğursuz olan ən kiçik fixture-i daxil edin. Birbaşa sorğunun uğurlu olub-olmadığını və OpenCode-un model serverinə çatıb-çatmadığını qeyd edin. Bu detallar layihənin tərtibatçılarına xətanı tapmağa kömək edir.

OpenCode xəta həlli bələdçisi logları necə tapmağı izah edir. Test edilmiş versiyada bu komanda konfiqurasiya edilmiş data və log yollarını müəyyən edir:

opencode debug paths

Lokal və bulud nəticələrini ayrı saxlayın. Lokal kodlaşdırma testi Ollama Cloud autentifikasiyasını və ya əlçatanlığını doğrulaya bilməz və bulud kəsintisi lokal alət istifadəsi reqressiyasını sübut etmir. Eynilə, eyni simptomu təsvir edən köhnə issue onun təklif etdiyi həllin sizin quraşdırılmış versiyanıza aid olduğunu sübut etmir.

Fixture uğurlu olub, ancaq repozitori tapşırığınız uğursuz olarsa, işlək fixture-i saxlayın və mürəkkəbliyi tədricən artırın: başqa fayl, daha böyük giriş və ya daha uzun alət ardıcıllığı. Xətanı təkrarlayan ilk dəyişiklik, müqayisə aparmadan hər iki tətbiqi yenidən quraşdırmaqdan daha faydalıdır.

Lokal diaqnozu bitirdikdən sonra ayrı provayder konfiqurasiyası üçün OpenCode xüsusi provayder bələdçisi Haimaker quraşdırmasını əhatə edir. Şəxsi lokal testləri lokal saxlayın; provayder dəyişdirmək iş yükü icazə verdikdə istəyə bağlı növbəti addımdır.

Tez-tez verilən suallar

Uğurlu Ollama söhbət cavabı OpenCode alətlərinin işləyəcəyi deməkdir?

Xeyr. Söhbət cavabı yalnız modelin mətn yarada bildiyini sübut edir. OpenCode həmçinin strukturlaşdırılmış alət çağırışları, onların icrası üçün icazə və tapşırıq üçün kifayət qədər kontekst tələb edir. Real fayl redaktəsini və onun test nəticəsini doğrulayın.

OpenCode-un kontekst limitini artırmaq Ollamaya daha çox yaddaş ayırır?

OpenCode-da göstərilən kontekst limiti Ollama-nın həmin konteksti ayırdığını sübut etmir. Ollama serverini konfiqurasiya edin və işləyən modeli ollama ps ilə yoxlayın. Daha böyük kontekst həmçinin yaddaş tələblərini artırır.

Ollama modeli OpenCode-dan itdiyində hər şeyi yenidən quraşdırmalıyam?

Əvvəlcə Ollama-nın qaytardığı model ID-lərini OpenCode konfiqurasiyanızda göstərilən modellə müqayisə edin. Hər iki tətbiqi yenidən quraşdırmazdan əvvəl endpoint və seçilmiş provayderi yoxlayın.