# opencode ile Go Projelerinde Verimli Çalışma Rehberi

Adres: https://agentvera.dev/blog/opencode-ile-go/ · Yayın: 2026-11-01

Go projelerinde opencode ile verimli çalışmak için AGENTS.md kurulumu, test döngüsü, tipik görevler ve paralel ajan kullanımını anlatan pratik rehber.

**Kısaca:**

- opencode, proje kökünde çalıştırıldığında AGENTS.md talimatlarını okuyarak Go modülleri, testler ve gofmt kurallarına göre hareket eder.
- Go’da arayüzler, context ve tablo testleri gibi kalıpları AGENTS.md içinde netleştirmek ajanın ürettiği kodun kalitesini artırır.
- Her değişiklikten sonra go test -race, go vet ve gofmt -l çıktısını istemek, ajanın gözden kaçırdığı hataları yakalar.

opencode’i Go projenizin kökünde `opencode` komutuyla başlattığınızda, ajan proje bağlamını okur ve AGENTS.md dosyasındaki talimatlara göre hareket eder. Bu rehberde, Go’ya özgü iş akışını somut komutlar, kurulum ipuçları ve sık yapılan hatalar üzerinden anlatıyorum; böylece ajanı gofmt, go test ve goroutine dünyasında güvenle kullanabilirsiniz. Genel kullanım için [opencode](/ajanlar/opencode/) sayfasına bakabilirsiniz.

## Neden opencode Go işlerine uygun

Go’nun belirgin kuralları, opencode gibi ajanların üretimini öngörülebilir kılar. `gofmt` her dosyayı aynı biçime sokar; `go vet` yaygın hataları yakalar; hata değerleri açıkça döndürülür. Bu yüzden ajan, PEP 8 veya benzeri öznel stil tartışmalarına takılmaz ve diff’ler daha temiz çıkar. Ayrıca Go modülleri `go.mod` ve `go.sum` üzerinden bağımlılıkları netleştirir; ajan `go mod tidy` çalıştırarak eksik paketleri çözebilir.

Go ekosistemi, ajanın işini kolaylaştıran başka avantajlar da sunar. Standart kütüphanenin zenginliği sayesinde birçok görev dış bağımlılık eklemeden çözülebilir; bu, ajanın gereksiz paket eklemesini azaltır. Küçük arayüzler ve `io.Reader`/`io.Writer` gibi evrensel tipler, üretilen kodun mevcut yapıya uyumunu artırır. Ayrıca Go’nun basit hata yönetimi (değer döndürme, `%w` sarmalama) sayesinde ajanın hata akışını bozması daha kolay fark edilir. Derleme hızı yüksek olduğundan, ajan `go build` veya `go test` çağrılarını hızlıca yapıp geri bildirim alabilir; bu da iterasyon döngüsünü kısaltır.

## Proje kurulumu ve AGENTS.md

opencode, proje talimatlarını AGENTS.md dosyasından okur. Go projesi için bu dosyaya komutlar, klasör düzeni ve kalıp tercihleri yazmak, ajanın her seferinde doğru varsayımlarla başlamasını sağlar. Aşağıdaki örnek, küçük bir servis projesi için yeterli bir başlangıçtır:

```markdown
# AGENTS.md

## Proje düzeni
- cmd/ altında uygulama giriş noktaları, internal/ altında paylaşılmayan paketler.
- Her paket kendi testlerini içerir; test dosyaları _test.go ile biter.

## Komutlar
- Bağımlılık yönetimi: go mod tidy
- Derleme: go build ./...
- Test: go test -race -count=1 ./...
- Lint: go vet ./... && gofmt -l .

## Kurallar
- Fonksiyon imzalarında context.Context ilk parametre olarak geç; gerekmedikçe context.TODO() kullanma.
- Testlerde tablo testi kalıbını kullan; her satırda name, input, want alanları olsun.
- Hataları %w ile sarmala; hatanın bağlamını kaybetme.
- Arayüzleri tüketen tarafta, küçük ve tek sorumluluklu tanımla.
- Değişiklikleri göndermeden önce gofmt -w ile biçimlendir; gofmt -l . çıktısı boş olmalı.
```

Bu dosyayı proje köküne koyun ve opencode’i başlatmadan önce güncel tutun. AGENTS.md ne kadar spesifik olursa, ajan o kadar az yanlış varsayım yapar. Örneğin, yalnızca `go test ./...` çalıştırın demek yerine `-race` ve `-count=1` eklemek, yarış koşullarını ve önbellek sorunlarını baştan önler. Aynı şekilde, paketler arası import yönünü belirtmek (`cmd` -> `internal` gibi) ajanın yanlış bağımlılık oluşturmasını engeller. Kurulum ve genel adımlar için [opencode nasıl kullanılır?](/blog/opencode-nasil-kullanilir/) rehberine göz atabilirsiniz.

## Çalışma döngüsü ve örnek promptlar

opencode ile sağlıklı bir döngü şöyle işler: önce küçük ve net bir görev tanımlayın; ajanın planını isteyin; ardından uygulama adımını başlatın; sonucu `git diff` ile inceleyin; en sonunda testleri ve lint komutlarını çalıştırmasını sağlayın. Büyük refactor’leri tek prompta sığdırmak yerine paket paket ilerleyin. Plan aşamasında ajana değişiklik yapmadan önce niyetini açıklamasını söylemek, yanlış yöne gitmesini engeller. Örneğin, "Önce şu dosyayı incele, sonra hangi arayüzü çıkaracağını söyle" gibi talimatlar işe yarar. İşte tipik Go görevleri için kullanabileceğiniz promptlar:

- "Bu servisteki HTTP handler fonksiyonlarını context.Context alacak şekilde güncelle; ardından `go test ./...` çalıştırıp kırmızı testleri düzelt."
- "Kullanıcı deposu için `UserStore` arayüzü çıkar; sahte (fake) implementasyonla tablo testi yaz, `go test -run TestUserStore` ile doğrula."
- "Goroutine kullanan `worker` paketini tara, context iptali yayılmasını sağla; `go vet ./...` ve `go test -race ./...` çalıştır."
- "Tüm hata sarmalamalarını `%w` ile güncelle, ilgili testleri değiştir ve `gofmt -l .` çıktısını temizle."
- "`cmd/server` içindeki main fonksiyonunu parçala; yapılandırma yüklemeyi ayrı bir pakete taşı, test edilebilir hale getir ve `go test ./cmd/server/...` çalıştır."

Her prompttan sonra ajanın çalıştırdığı komutların çıktısını isteyin; test geçiyor dense bile komutları kendiniz de çalıştırabilirsiniz. Özellikle `git diff` çıktısını satır satır inceleyin; ajan bazen gereksiz import ekleyebilir veya hata mesajlarını değiştirebilir. Gerekirse bir sonraki adımı daraltın.

## Tipik Go görevleri ve dikkat edilecek noktalar

Aşağıdaki tablo, opencode’in Go’da iyi olduğu görevler ile gözden kaçabilecek noktaları özetler:

| Görev | İyi prompt | Dikkat edilecek nokta |
| --- | --- | --- |
| Arayüz çıkarma | "Arayüzü tüketen tarafta tanımla, yalnızca kullanılan metotları içersin." | Ajan gereksiz büyük arayüz üretebilir; diff’te metot sayısını azaltın. |
| Goroutine ve context | "context iptali ile worker’ı durdur; kanal kapanışlarını ele al." | Ajan context’i tüm alt çağrılara yaymayı unutabilir; `-race` testi ile doğrulayın. |
| Tablo testi yazma | "Başarılı, hatalı ve sınır durumları için tablo testi ekle." | Testler yeşil görünüp gerçek davranışı doğrulamayabilir; assertion’ları inceleyin. |
| Hata sarmalama | "Hataları `%w` ile sarmala; `errors.Is` çalışmaya devam etsin." | Ajan `%v` kullanabilir veya orijinal hatayı kaybedebilir; diff’te kontrol edin. |
| Bağımlılık ekleme | "Bu işlev için standart kütüphanede çözüm varsa onu kullan, yoksa popüler paket öner." | Ajan gereksiz yere ağır kütüphane ekleyebilir; `go.mod` diff’ini inceleyin. |

Bunların dışında şu tuzaklara dikkat edin: Go derleyicisi kullanılmayan import veya değişkenleri hata sayar; ajan bazen gereksiz yere import ekleyip çıkarırken kodun başka kısımlarını bozabilir. `go mod tidy` çağrısı `go.sum`'da büyük değişiklikler yapabilir; bu komutu yalnızca ihtiyaç olduğunda ve diff’i inceleyerek çalıştırın. Ajanın paket içi bağımlılıkları yanlış yere taşıması veya arayüzleri yanlış pakette tanımlaması sık görülür; AGENTS.md’de net kurallar bunu azaltır. Goroutine içeren kodlarda, ajanın `sync.WaitGroup` kullanmayı unutması veya kanal kapatma sorumluluğunu yanlış ataması olasıdır; bunları `-race` testi ile yakalayın. Ayrıca ajan, tablo testlerinde `t.Parallel()` ekleyip test sıralamasını bozabilir; her senaryonun bağımsız olduğundan emin olun.

## Go test ve doğrulama

Ajanın "testler geçti" demesine güvenmeyin; her değişiklikten sonra şu komutları çalıştırmasını isteyin veya kendiniz çalıştırın:

- `go test -race -count=1 ./...` — yarış koşullarını ve goroutine hatalarını yakalar; `-count=1` önbelleği devre dışı bırakır.
- `go vet ./...` — yanlış printf kullanımı, kopyalanmış kilit gibi statik hataları bulur.
- `gofmt -l .` — biçimlendirilmemiş dosyaları listeler; çıktı boş olmalı.
- `go build ./...` — derleme hatalarını yakalar; testlerin derlenmesi ayrıca kontrol edilir.

Ajanın ürettiği test dosyalarını ayrıca inceleyin. Tablo testlerinde her senaryonun gerçekten farklı bir davranışı doğruladığından emin olun; bazen ajan hatalı kodu yeşile çevirmek için testi zayıflatabilir. Şüpheli durumlarda `go test -run TestAdı -v` ile yalnızca ilgili testi çalıştırıp çıktıyı gözden geçirin. Kapsama zayıfsa `go test -cover ./...` ile eksik paketleri belirleyin ve ajana bu paketler için test istemeyi düşünün. Ajanın eklediği testlerde `testing.T` yerine `testing.B` kullanması veya benchmark’ları yanlış yere koyması da olabilir; bunları manuel olarak doğrulayın.

## Birden fazla opencode ajanını paralel çalıştırma

Go projelerinde birden fazla opencode ajanını aynı anda kullanmak isterseniz AgentVera işinizi kolaylaştırır. Her ajan kendi git worktree’sinde çalışabilir; böylece biri go.mod veya aynı paketi düzenlerken diğerinin dosyalarını ezmez. Ajanın turu bittiğinde ikinci bir model kodu otomatik inceler ve bulgularını dosya:satır olarak işaretler; bu, gözden kaçan goroutine veya interface hatalarını yakalar. Ayrıca her turun anlık görüntüsü alınır ve tek tıkla geri alınabilir; hatalı bir refactor’ü hızla eski haline döndürürsünüz. Paralel ajan kullanımı hakkında daha geniş değerlendirme için [paralel kodlama ajanları](/blog/paralel-yapay-zeka-kodlama-ajani-araclari/) yazısına bakabilirsiniz.

## Sonuç

opencode, Go projelerinde AGENTS.md ile net kurallar verildiğinde ve her adım go test/gofmt ile doğrulandığında güçlü bir yardımcıdır. Küçük, ölçülebilir görevler verin; diff’i inceleyin; ajanı asla kontrolsüz bırakmayın. Bu disiplinle, tekrarlayan refactor ve test işlerini ciddi ölçüde hızlandırırsınız.

## Sık sorulanlar

**opencode Go projesinde nasıl başlatılır?** Proje kökünde terminal açıp opencode komutunu çalıştırın. Ajan, varsa AGENTS.md dosyasını okur; ayrıca go.mod ve mevcut kaynak kodları bağlam olarak kullanır.

**opencode Go testlerini kendisi çalıştırabilir mi?** Evet, terminal komutlarını çalıştırabilir. go test ./..., go test -race gibi komutları isteyebilir veya kendisinin çalıştırmasını söyleyebilirsiniz. Test başarısız olursa düzeltme önermesini isteyin.

**AGENTS.md dosyası opencode için neden önemli?** opencode proje talimatlarını AGENTS.md’den okur. Go’ya özgü komutlar, klasör düzeni ve kurallar burada netleşirse ajan tutarlı davranır, yanlış varsayımları azaltır.

**opencode ile birden fazla Go paketinde paralel değişiklik yapmak güvenli mi?** Tek ajan oturumunda dikkatli olunmalı; dosya çakışmaları olabilir. Aynı anda birden çok ajan kullanmak isterseniz git worktree ile izole çalışma alanları oluşturmanız önerilir; bu, ajanların birbirinin dosyalarını ezmesini önler.

---

**AgentVera hakkında.** AgentVera, Solviera Teknoloji tarafından geliştirilen macOS, Windows ve Linux masaüstü uygulamasıdır. 18 yapay zeka kodlama ajanını (Claude Code, Codex, Gemini CLI, Copilot, Cursor, Antigravity, opencode, Hermes, Qwen Code, Kimi Code, Kiro, Amp, Droid, Goose, Vibe, Crush, Aider, Cline) proje bazında, gerçek terminallerde ve kullanıcının kendi CLI kurulum ve girişleriyle yan yana çalıştırır. Ücretsiz planda sınırsız ajan vardır. İndir: https://agentvera.dev/indir/ · Fiyatlar: https://agentvera.dev/fiyatlar/
