Codex, OpenAI’nin komut satırından çalışan kodlama ajanıdır; bir Swift ve iOS projesinin kökünde codex yazarak başlatılır. Proje bağlamını AGENTS.md dosyasından alır, SwiftUI/UIKit kaynaklarını düzenler, xcodebuild veya swift test komutlarını çalıştırır ve derleme hatalarını yorumlar. Bu rehber, Codex’i mevcut Swift ve iOS iş akışınıza verimli biçimde katmak için pratik adımları gösterir.
Codex neden Swift ve iOS işlerine uygun
Swift ve iOS projeleri güçlü bir komut satırı döngüsüne sahiptir: xcodebuild, swift build, swift test, swiftlint ve simülatör yönetimi. Codex bu komutları ajanın kendi terminalinde çalıştırabildiği için derleyici çıktısını okuyup hatayı düzeltebilir. Örneğin, xcodebuild çıktısındaki hata satırını görüp ilgili dosyayı açıp düzeltme yapabilir; bu döngü, manuel olarak Xcode’da hata aramaktan daha hızlı ilerler. SwiftUI’nin bildirimsel yapısı ve async/await’in okunabilirliği, küçük ve denetlenebilir diff’ler üretmeyi kolaylaştırır. UIKit tarafında ise dosya ve sınıf yapısı net olduğundan ajan genellikle doğru dosyayı bulur. Ayrıca Swift Package Manager projelerinde Package.swift üzerinden bağımlılık yönetimi ve test çalıştırma da sorunsuzdur. Yine de Xcode proje dosyası, imzalama ve arayüz durumları gibi konularda üretilen değişiklikleri incelemek gerekir; daha fazla bilgi için Codex sayfasına bakabilirsiniz.
Projeyi ajan için hazırlama
Codex, proje kökündeki AGENTS.md dosyasını okur; bu yüzden ilk iş bu dosyayı Swift ve iOS iş akışınıza göre yazmaktır. Dosyada derleme, test ve lint komutları, klasör düzeni, kod stili ve projeye özgü kurallar yer almalıdır. Bağlam mühendisliği rehberindeki (Bağlam mühendisliği: yapay zeka kodlama ajanları rehberi) ilkeler burada da geçerlidir.
Aşağıdaki örnek, tipik bir iOS uygulaması için başlangıç noktasıdır:
# AGENTS.md
## Komutlar
- Derleme: `xcodebuild -project MyApp.xcodeproj -scheme MyApp -destination 'platform=iOS Simulator,name=iPhone 15' build`
- Test: `xcodebuild test -project MyApp.xcodeproj -scheme MyApp -destination 'platform=iOS Simulator,name=iPhone 15'`
- Lint: `swiftlint`
## Klasör düzeni
- `MyApp/` uygulama kaynakları; `MyAppTests/` birim testleri; `MyAppUITests/` UI testleri.
- Özellikler modül klasörlerine eklenir; `App` ve `Core` katmanları ayrı tutulur.
## Kurallar
- Swift 5.9+ kullanın; async/await tercih edin.
- SwiftUI view'larını küçük tutun; UIKit ile karıştırırken `@MainActor` ve ana thread kurallarına uyun.
- Force unwrap (`!`) ve `try!` kullanmayın; hataları `throws` ile yayın.
- Her değişiklikten sonra `swiftlint` ve ilgili testleri çalıştırın.
- `project.pbxproj` dosyasını elle düzenlemeyin; yeni dosya eklerken Xcode veya `xcodegen` kullanılacağını varsayın ve önce kullanıcıya sorun.
Bu dosyayı kısa ve net tutun; gereksiz genel kurallar bağlamı şişirir. Komutların simülatör adı veya hedef ayarları projeye göre güncellenmeli. Eğer proje Swift Package Manager kullanıyorsa, swift build ve swift test komutlarını ekleyin. Code signing, push notification entitlements veya App Groups gibi özel ayarlar gerekiyorsa bunları da kısa notlar halinde belirtin; örneğin “Signing manual olarak yapılır, agent kod imzalama ayarlarını değiştirmesin” gibi. Ayrıca asset katalogları ve localization dosyalarının elle düzenlenmemesi gerektiğini söylemek faydalı olur.
Çalışma döngüsü ve örnek promptlar
Codex ile en verimli döngü şudur: küçük bir görev verin, ajanın önce plan yazmasını isteyin, değişikliği yapmasını bekleyin, git diff ile inceleyin ve ardından testleri çalıştırın. Ajan tek seferde büyük bir özellik yazarsa hata yüzeyi büyür. Her adımda tek sorumluluk vermek Swift ve iOS projelerinde özellikle önemlidir çünkü derleme süresi ve test çalıştırma döngüsü uzun olabilir. Ajan bir görevi tamamladığında, değişiklikleri git diff ile gözden geçirin; özellikle project.pbxproj, .entitlements ve Info.plist gibi dosyaların beklenmedik şekilde değişmediğinden emin olun.
Örnek promptlar:
- Mevcut SwiftUI ekranındaki listeyi async/await ile bir ViewModel’den besle; hata durumunda geri çekilme göster.
- UIKit ile yazılmış
ProfileViewControlleriçindeki force unwrap’larıguard letile değiştir, sonra ilgili testi çalıştır. - XCTest içinde
UserServiceiçin async test yaz;URLProtocolmock kullan, başarı ve başarısızlık durumlarını kapsa. - Aşağıdaki derleme hatasını düzelt; sadece ilgili dosyayı değiştir ve
swift testçalıştır. - Değişiklikleri
git diffile göster; riskli noktaları ve main actor ihlallerini özetle. APIClientsınıfındakiURLSessionçağrılarınıasyncfonksiyonlara dönüştür; hata tipleriniNetworkErrorenum’u ile modelle.
Her promptta açıkça ne yapılacağını ve hangi testlerin çalıştırılacağını belirtmek, ajanın gereksiz dosyalara dokunmasını önler. Ajan bir derleme hatasıyla karşılaştığında hatayı okuyup düzeltmeye çalışır; eğer çözüm belirsizse sizden ek bilgi isteyebilir.
Codex’in iyi olduğu işler ve dikkat edilecek yerler
Aşağıdaki tablo, Codex’in Swift ve iOS projelerinde en verimli olduğu alanları ve dikkat edilmesi gereken noktaları özetler:
| Alan | İyi olduğu durum | Dikkat |
|---|---|---|
| Ağ katmanı | async/await ile URLSession servisleri, DTO’lar | Sendable ve @MainActor ihlalleri |
| SwiftUI | Küçük view’lar, state yönetimi | Karmaşık animasyon ve layout |
| UIKit | ViewController refactor, optional güvenliği | Auto Layout constraint çakışmaları, storyboard |
| Testler | XCTest senaryoları, mock’lar | Test hedefi ve simülatör seçimi |
| Proje yapısı | Yeni modül ekleme, klasör düzeni | project.pbxproj çakışmaları |
Codex genellikle view model yazma, ağ isteklerini async/await’e çevirme, force unwrap temizliği ve test ekleme gibi işlerde iyi sonuç verir. Ancak özellikle şu konularda dikkatli olun: project.pbxproj elle düzenlendiğinde Xcode proje dosyası bozulabilir; code signing ve entitlements değişiklikleri cihazda çalışmayı etkileyebilir; Swift concurrency kuralları (Sendable, @MainActor) göz ardı edilirse derleme uyarıları ve çalışma zamanı sorunları çıkar; SwiftUI preview’ları ve asset katalogları yanlış düzenlenirse arayüz bozulur. Ayrıca localization dosyaları ve storyboard/xib’ler ajanın elle düzenlemesi risklidir; bu dosyalarda genellikle ikili format veya çok sayıda satır olduğundan diff büyük olur ve çakışma olasılığı artar. Bu yüzden ajanın her diff’ini git diff ile inceleyin ve yalnızca beklenen dosyaların değiştiğinden emin olun.
Test ve doğrulama
Codex’e her değişiklikten sonra testleri çalıştırmasını söyleyin. Uzun süren UI testleri yerine önce birim testlerini -only-testing ile daraltabilirsiniz. Örneğin: xcodebuild test -project MyApp.xcodeproj -scheme MyApp -destination 'platform=iOS Simulator,name=iPhone 15' -only-testing:MyAppTests/UserServiceTests. Ajan test çıktısındaki hatayı okuyup düzeltebilir; siz de git diff --check ve swiftlint çıktısını inceleyin. CI’da yakalanan hatalar için ajanı yönlendirmek isterseniz CI hatasını yapay zeka düzeltsin yaklaşımını kullanabilirsiniz.
Ajanın test çalıştırırken doğru simülatörü seçtiğinden emin olun; xcrun simctl list devices komutu ile mevcut cihazları görebilir. Eğer testler paralel çalıştırılacaksa, test planı kullanmak faydalıdır. Codex, test hedeflerini ve -only-testing bayrağını doğru kullanabilir; ancak hangi testlerin çalıştırılacağını açıkça belirtmezseniz tüm test paketini çalıştırabilir ve bu da zaman kaybına yol açar. Bu yüzden promptlarınıza “sadece UserServiceTests çalıştır” gibi ifadeler ekleyin. Ayrıca swift test çıktısındaki hata mesajlarını ajanın okuyup düzeltebilmesi için terminal çıktısını paylaşmasına izin verin; gerekirse hata satırını prompt’a yapıştırın.
Birden çok ajanı AgentVera ile çalıştırma
Swift ve iOS projelerinde birden çok ajanı paralel çalıştırmak, özellikle farklı modüller üzerinde çalışırken dosya çakışmaları riskini artırır. AgentVera, her ajanı kendi git worktree’sinde çalıştırarak bu sorunu çözer; ayrıca bir ajanın turu bittiğinde ikinci bir model kodunu inceler ve bulguları file:line olarak bağlar. Checkpoint özelliği, Xcode proje dosyası veya UIKit değişikliklerinde yanlış bir adımı tek tıkla geri almayı sağlar. Token bütçeleri ise uzun derleme ve test döngülerinde ajanın kontrolden çıkmasını engeller. Daha fazlası için AgentVera nasıl kullanılır sayfasına bakabilirsiniz.
Sonuç
Codex, Swift ve iOS projelerinde doğru bağlam ve küçük adımlarla güvenilir bir eş olur. AGENTS.md’yi net tutun, her değişiklikten sonra testleri çalıştırın ve özellikle proje dosyası ile concurrency konularında diff’i inceleyin. Böylece ajan, derleme hatalarını azaltır ve geliştirme hızınızı artırır.