# opencode ile Kotlin ve Android Projelerinde Çalışma Rehberi

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

opencode ajanını Kotlin ve Android projelerinde verimli kullanmak için AGENTS.md kurulumu, Gradle ve Compose testleri, tuzaklar ve paralel ajan ipuçları.

**Kısaca:**

- AGENTS.md dosyasına Gradle komutları, klasör düzeni ve Compose/ViewModel kuralları yazıldığında opencode çok daha isabetli değişiklikler yapar.
- Küçük adımlarla çalışıp her adımda test ve lint çalıştırmak, Android projelerindeki geri dönüşü hızlandırır.
- AgentVera ile farklı git worktree’lerde paralel ajanlar kullanarak aynı projede çakışmadan deneme yapabilirsiniz.

opencode, proje klasöründe `opencode` komutuyla başlatılan ve AGENTS.md dosyasındaki talimatları okuyan bir kodlama ajanıdır. Kotlin ve Android projelerinde Gradle, Jetpack Compose ve coroutine akışlarını anlaması için doğru bağlam verildiğinde, küçük ve test edilebilir değişiklikleri hızla uygular. Daha fazla ayrıntı için [opencode](/ajanlar/opencode/) sayfasına bakabilirsiniz.

## opencode neden Kotlin ve Android işine uygun

opencode, aynı terminal oturumunda `./gradlew` çıktısını okuyup hataları yorumlayabilir. Örneğin `Unresolved reference` veya `Type mismatch` hatalarında eksik import veya yanlış tür dönüşümünü tespit edip düzeltebilir. Compose dosyalarındaki `@Composable` fonksiyonları, `State` ve `remember` kullanımını ayırt eder; yan etki içeren kodu `LaunchedEffect` veya `DisposableEffect` içine almayı önerebilir. ViewModel içindeki `MutableStateFlow` yapısını sadeleştirip `StateFlow` olarak dışarı açmayı, repository katmanında `Result` döndürmeyi ve JUnit ile Espresso test iskeletlerini Kotlin DSL’e uygun şekilde yazmayı başarır. Ayrıca modern Gradle özelliklerini tanır: version catalog, Kotlin DSL ve KSP eklentileriyle ilgili değişiklikleri yapabilir. Terminal tabanlı olduğu için Android Studio’nun aksine headless CI ortamında veya uzak makinede de benzer döngüyü sürdürür. Yine de ajanın önerdiği her Gradle değişikliğini siz onaylamalısınız; çünkü build scriptlerindeki küçük bir hata tüm projeyi kilitleyebilir.

## Projeyi ajana hazırlama ve AGENTS.md

Ajana en büyük faydayı sağlayan şey, proje köküne ekleyeceğiniz AGENTS.md dosyasıdır. opencode bu dosyayı her oturumda okur ve değişmez kurallar olarak uygular. Dosya kısa, komut odaklı ve Android’e özgü olmalıdır; genel yapay zeka tavsiyeleri değil, sizin projenizin gerçekleri yer almalıdır. [opencode nasıl kullanılır](/blog/opencode-nasil-kullanilir/) rehberindeki adımlar da bu kurulum için iyi bir temel oluşturur.

```markdown
# AGENTS.md

## Komutlar
- Derle: `./gradlew assembleDebug`
- Unit test: `./gradlew testDebugUnitTest`
- Lint: `./gradlew lintDebug`
- Enstrümantasyon testi: `./gradlew connectedDebugAndroidTest`

## Klasör düzeni
- `app/src/main/java/com/example/app` → UI ve ViewModel
- `app/src/test` → JUnit testleri
- `app/src/androidTest` → Espresso testleri
- `app/src/main/res` → Compose tema ve string kaynakları

## Kurallar
- Yeni ekranlar yalnızca Jetpack Compose ile yazılır; XML layout açma.
- ViewModel'ler `StateFlow` döndürür, `MutableStateFlow` yalnızca private kalır.
- Coroutine'leri `viewModelScope` ile başlat; `GlobalScope` kullanma.
- Veri katmanı arayüzleri repository olarak tasarla; test edilebilir olsun.
- Her değişiklikten sonra `./gradlew testDebugUnitTest lintDebug` çalıştır.
```

Bu kurallar, ajanın XML’e dönmesini, `GlobalScope` kullanmasını veya `LiveData`'ya geçmesini engeller. AGENTS.md dosyasına proje modül yapısını da ekleyin; örneğin `:core:network`, `:feature:login` gibi modül adlarını ve sorumluluklarını yazın. Flavor ve build type kullanıyorsanız ilgili `productFlavors` isimlerini ve hangi test türünün hangi variantta çalıştığını belirtin. Dosyayı projeyle birlikte sürümleyin ve ekiple birlikte güncel tutun; ajan her oturumda bu dosyayı referans alacağı için tutarlılık kritik önem taşır.

## Çalışma döngüsü: planla, küçük adım at, test et, diff’i incele

Android projelerinde büyük bir refactor veya yeni ekran isteğini tek seferde istemek risklidir. Build süreleri uzun olduğu için her değişikliği ayrı ayrı test etmek gerekir. opencode ile verimli çalışma döngüsü şöyledir: önce istenen değişikliği küçük, test edilebilir parçalara bölün; her parçada ajanın dosyaları değiştirmesini isteyin; ardından `./gradlew testDebugUnitTest lintDebug` çalıştırın; son olarak `git diff` çıktısını gözden geçirin. Ajan bir adımda hata yaparsa, hatayı geri alıp promptu daraltarak yeniden deneyin. Bu döngüyü her adımda tekrarlayın; böylece hatalar erken yakalanır ve geri dönüş maliyeti düşer.

Kotlin ve Android için tipik çalışma promptları şunlardır:

- Compose ekranındaki `LazyColumn`'da her öğeye sabit `key` ekle ve tıklamayı `onClick` callback olarak yukarı taşı.
- Ürün listesini getiren repository fonksiyonunu `Result` döndürecek şekilde değiştir; ViewModel’de `stateIn` kullan.
- Bu ViewModel için JUnit testi yaz; ana dispatcher’ı `StandardTestDispatcher` ile değiştir.
- Espresso testinde `RecyclerView` yerine Compose `LazyColumn`'daki metni doğrulayan bir assertion ekle.
- Gradle bağımlılıklarını version catalog’a taşı; kullanılmayan `implementation` satırlarını temizle.

Her prompttan sonra test ve lint sonucunu isteyin; ajan başarısız olursa hatayı kendisine geri verin ve düzeltmesini isteyin. Daha karmaşık görevlerde, örneğin bir ekranın tamamını yazarken, promptu üç aşamaya bölün: önce state ve ViewModel, sonra UI composable’ları, en son da testler. Böylece her aşamada doğrulama yaparsınız ve ajan bağlam kaybetmez.

## Tipik Kotlin ve Android görevleri ve dikkat edilmesi gerekenler

Aşağıdaki tablo, sık karşılaşılan görevler için iyi prompt örneklerini gösterir.

| Görev | İyi prompt |
| --- | --- |
| Compose state yönetimi | Bu ekranda `remember { mutableStateOf(...) }` ile tutulan state’i ViewModel’e taşı ve `collectAsStateWithLifecycle` kullan. |
| Coroutine hata yönetimi | Repository’deki `suspend` fonksiyona `try/catch` ekle, hatayı `Result` olarak döndür ve ViewModel’de kullanıcıya mesaj göster. |
| ViewModel testi | Bu ViewModel için `MainDispatcherRule` kullanarak 3 test yaz; başarı, hata ve yüklenme durumlarını doğrula. |
| Espresso senkronizasyonu | Bu testte API yanıtını bekleyen `IdlingResource` ekle ve test kararlılığını sağla. |
| Gradle build hızı | Build scan çıktısına göre yapılandırma cache’i etkinleştir ve `gradle.properties` dosyasını düzenle. |

Bu görevlerde ajan genellikle başarılıdır ancak şu noktalara dikkat edin. Compose state’i taşırken ajan bazen `rememberSaveable` yerine `remember` önerebilir; ekran döndürmede state kaybını önlemek için bunu kendiniz düzeltin. ViewModel’de `stateIn` kullanımında başlangıç değeri olarak `SharingStarted.WhileSubscribed` yerine `Eagerly` seçerse, testlerde farklı davranış gösterir. Espresso ile Compose testlerinde `onNodeWithText` yerine `onView` önerebilir; AGENTS.md’de Compose test kuralını netleştirin. Ajan, kullanılmayan kaynak dosyalarını silerken `strings.xml` içindeki değerleri de kaldırabilir; silmeden önce referans kontrolü isteyin. Ayrıca `build.gradle.kts` dosyalarında `implementation` ve `api` arasındaki farkı karıştırabilir; özellikle modül bağımlılıklarını değiştirirken diff’i satır satır inceleyin.

## Kotlin ve Android test ve doğrulama

Ajan, unit testlerde `./gradlew testDebugUnitTest` çıktısını yorumlayıp başarısız assertion’ları düzeltebilir. JUnit 4 ve coroutine test desteği için `kotlinx-coroutines-test` bağımlılığı eklemesini isteyin; `MainDispatcherRule` ve `runTest` kullanımı ile asenkron kodun kararlılığı artar. `StateFlow` testlerinde Turbine kütüphanesini kullanarak her emisyonu sırayla doğrulayabilirsiniz; ajan bu deseni hızla uygular. Espresso testlerinde enstrümantasyon ortamı gerektiğinden, ajan yalnızca test kodu üretmeli, çalıştırmak için bağlı cihaz veya emülatör sizin tarafınızda olmalıdır. Compose UI testleri için `createAndroidComposeRule` kullanın ve `onNodeWithText` gibi matcher’larla senkronizasyonu sağlayın; ajan bu kuralları doğru yazabilir ancak gerekli `@get:Rule` anotasyonunu atlayabilir. Her değişiklikten sonra `./gradlew lintDebug` çalıştırın; ajan en yaygın lint uyarılarını giderebilir ancak mimari kural ihlallerini siz onaylayın. Gerekirse `./gradlew test` yerine yalnızca değişen modülün testini çalıştırarak geri bildirimi hızlandırın. Gradle managed devices veya test sharding kullanıyorsanız bu komutları da AGENTS.md’ye ekleyin; ajan ilgili raporları okuyup özetleyebilir.

## Bir projede birden çok ajan: AgentVera

AgentVera, [paralel kodlama ajanları için en iyi araçlar](/blog/paralel-yapay-zeka-kodlama-ajani-araclari/) arasında yer alan ve opencode dahil birden fazla komut satırı ajanını aynı pencerede gerçek terminal panellerinde çalıştıran bir masaüstü uygulamasıdır. Kotlin ve Android projelerinde en değerli üç özelliği, her ajanın kendi git worktree’sinde çalışarak dosya çakışmalarını önlemesi, bir ajan bitince ikinci bir modelin kod incelemesi yapıp `dosya:satır` bağlantıları vermesi ve her turun checkpoint’ini alarak tek tıkla geri alıp adım adım yeniden oynatmasıdır. Böylece Compose UI ile ViewModel üzerinde aynı anda iki ajan çalıştırabilir, inceleme sonrası güvenle birleştirme yapabilirsiniz.

## Sonuç

opencode, AGENTS.md ile doğru yapılandırıldığında Kotlin ve Android projelerinde özellikle Compose refactorleri, ViewModel state yönetimi, coroutine testleri ve Gradle temizliği için güvenilir bir eş olur. Her adımda test ve lint çalıştırarak, diff’i inceleyerek ve gerektiğinde AgentVera ile paralel ajanları worktree’lerde koşturarak üretkenliği artırabilirsiniz. Ajan size kod üretir; mimari kararları ve cihaz testlerini siz doğrularsınız.

## Sık sorulanlar

**opencode Kotlin ve Android projesinde AGENTS.md dosyasına ne yazmalıyım?** AGENTS.md dosyasına ./gradlew assembleDebug, ./gradlew testDebugUnitTest ve ./gradlew lintDebug gibi komutları, klasör düzenini ve Compose/ViewModel kurallarını yazın. Ajan bu talimatları her değişiklikte uygular.

**opencode Jetpack Compose ekranlarını düzenleyebilir mi?** Evet, Compose fonksiyonlarını okuyup düzenleyebilir, state yönetimini ViewModel’e taşıyabilir ve eksik key parametreleri ekleyebilir. Ancak AGENTS.md’de XML yerine Compose kuralı net olmalı, yoksa eski alışkanlıkla XML layout önerebilir.

**opencode unit ve Espresso testlerini kendisi çalıştırabilir mi?** Evet, terminal üzerinden ./gradlew testDebugUnitTest ve ./gradlew connectedDebugAndroidTest komutlarını çalıştırabilir. Sonuçları yorumlayıp başarısız assertion’ları düzeltebilir; ancak emülatör veya cihaz bağlı değilse Espresso testleri çalışmaz.

**opencode ile birden fazla ajanı aynı Android projesinde nasıl paralel çalıştırırım?** AgentVera gibi bir masaüstü uygulaması, her ajanı kendi git worktree’sinde çalıştırarak dosya çakışmalarını önler. Bir ajan bitince otomatik kod incelemesi yapılır ve checkpoint’lerle geri alınabilir.

---

**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/
