Codex’i bir Rust projesinde kullanmak için proje kökünde codex komutunu çalıştırmanız yeterlidir; agent, AGENTS.md dosyasındaki talimatları okur ve cargo, clippy, rustfmt gibi araçları doğrudan çalıştırabilir. Bu rehber, borrow checker hatalarından test döngülerine kadar Rust’a özgü pratik bir çalışma düzeni sunar.
Codex Rust işleri için neden uygun
Codex, terminalde çalıştığı için Rust ekosisteminin komut satırı araçlarıyla doğal biçimde bütünleşir. Codex’in nasıl başlatıldığına dair genel bilgi Codex sayfasındadır. cargo meta verilerini okuyabilir, derleyici hatalarını satır satır yorumlayabilir ve cargo test çıktısındaki başarısızlıkları takip edebilir. Özellikle borrow checker hataları uzun ve karmaşık olduğunda, ajan hatayı parçalara ayırıp küçük düzeltmeler önerebilir; bu da manuel olarak E0502 veya E0499 ile boğuşmaktan daha hızlıdır. Ayrıca clippy uyarılarını uygulamak, rustfmt ile biçimi korumak ve yeni test eklemek gibi tekrarlayan işlerde tutarlıdır.
Ajan, cargo check’i hızlı geri bildirim için kullanabilir; böylece tam derleme beklemeden hata olup olmadığını görür. Rust’un güçlü tip sistemi sayesinde ajan, bir değişikliğin etkisini daha kolay anlar; örneğin bir enum varyantı eklediğinde tüm match kollarını güncellemesi gerektiğini derleyici çıktısından fark eder. cargo add ile yeni crate eklerken uyumluluk sorunlarını önceden görebilir; ancak sürüm seçimlerinde dikkatli olmak gerekir çünkü ajan bazen en son sürümü ekleyerek kırılan API’leri göz ardı edebilir.
Rust projesini Codex için hazırlama
Codex’in Rust projesinde doğru kararlar vermesi için proje köküne AGENTS.md ekleyin. Bu dosya, agent’ın her çalıştırmada okuyacağı kısa ve net talimatlar içerir; ayrıntılı bağlam yönetimiyle ilgili Bağlam mühendisliği: yapay zeka kodlama ajanları rehberi sayfasındaki ilkeler burada da geçerlidir. Dosyada komutlar, klasör düzeni ve Rust’a özgü kurallar yer almalıdır. Gerçekçi bir örnek:
# AGENTS.md
## Komutlar
- Derleme: `cargo build`
- Test: `cargo test`
- Lint: `cargo clippy -- -D warnings`
- Biçim: `cargo fmt --check`
## Klasör düzeni
- `src/` altında her modül için bir dosya açın.
- `tests/` entegrasyon testlerini tutar; `benches/` benchmarkları.
- Yeni modül eklerken `src/lib.rs` veya `src/main.rs` içinde `mod` bildirimi yapın.
## Rust kuralları
- Kütüphane kodunda `unwrap()` ve `expect()` kullanmayın; `Result` veya `Option`'ı `?` ile yayın.
- Public API'de `unsafe` kullanmayın; zorunluysa nedenini yorumda açıklayın ve güvenlik değişmezini yazın.
- Yeni bağımlılık eklemeden önce `Cargo.toml`'u kontrol edin; mümkünse standart kütüphane veya mevcut crate'i kullanın.
- Her değişiklikten sonra `cargo fmt` ve `cargo clippy -- -D warnings` temiz olmalıdır.
Bu dosya kısa tutulmalı; uzun dokümanlar agent’ın dikkatini dağıtır. Agent bu dosyayı her oturumda yeniden okur; değiştirdiğinizde yeni oturum açmanız gerekmez. Bir workspace kullanıyorsanız kök Cargo.toml’daki [workspace] üyelerini ve her crate’in rolünü belirtin. Ayrıca rust-toolchain.toml veya rust-toolchain dosyası ile pinlenmiş araç zinciri varsa, ajanın bunu kullanmasını isteyin; aksi halde yanlış sürümle derleyip gereksiz hatalar üretebilir.
Çalışma döngüsü
Codex ile Rust işlerinde en verimli döngü şudur: önce isteği küçük ve net bir adıma bölün, ajanın plan yapmasına izin verin, değişiklikleri gözden geçirin ve her adımda testleri çalıştırın. Tek seferde büyük refactor istemek yerine sırayla ilerleyin; böylece borrow checker hataları yönetilebilir kalır. Aşağıdaki istekler tipik Rust görevleri için iyi başlangıç noktalarıdır:
src/parser.rsiçindekiparse_configfonksiyonunu&stryerineimpl AsRef<[u8]>kabul edecek şekilde yeniden yaz ve tüm çağıranları güncelle.- Bu
#[derive(Clone)]yapısınıArckullanacak biçimde değiştir;cloneçağrılarını azalt,cargo testvecargo clippyçalıştır. cargo testçalıştır, başarısız olantest_retry_on_timeouttestini incele ve hatayı düzelt; yalnızca test kodunu değiştir.Cargo.tomliçindekiserdebağımlılığını mevcut son sürüme güncelle, kırılan API kullanımlarını düzelt vecargo checkile doğrula.src/cache.rsadında yeni bir modül ekle:Cache<K,V>tipi,get_or_insert_withmetodu ve#[cfg(test)]birim testleri;cargo fmtvecargo clippy’yi geç.
Bu liste, birbirinden bağımsız görevlerden oluşur; her birini ayrı oturumda yürütmek daha güvenlidir. Bir görev borrow checker hatası üretirse, ajan genellikle önce cargo check ile hatayı doğrular, sonra önerilen düzeltmeyi yapar; siz de aynı akışı takip edebilirsiniz. Plan istemek için “Önce ne yapacağını adım adım açıkla, kod yazma” gibi bir istek vermek de mümkündür; böylece yanlış yöne gitmeden önce müdahale edebilirsiniz.
Codex’in iyi yaptığı Rust işleri ve dikkat edilecek yerler
Codex; boilerplate üretme, trait implementasyonu, From/TryFrom dönüşümleri, hata tipleri oluşturma, test yazma ve imza değişikliklerini yayma konularında oldukça iyidir. Küçük ve iyi tanımlanmış görevlerde yüksek başarı gösterir. Örneğin bir enum’a varyant eklediğinizde tüm match ifadelerini güncellemesini isteyebilirsiniz; ajan derleyici hatalarını kullanarak eksik kolları bulur. Benzer şekilde thiserror ile hata tipleri oluşturmak, serde için Deserialize implementasyonları yazmak veya bir Iterator implementasyonunu tamamlamak da tekrarlayan ama güvenli işlerdir.
Ancak borrow checker hatasını çözmeye çalışırken gereğinden fazla .clone(), Rc<RefCell<T>> veya Arc<Mutex<T>> ekleyebilir; bu durum performansı ve kod netliğini bozar. unsafe blok önerdiğinde mutlaka gerekçesini isteyin ve güvenlik değişmezlerini kontrol edin. Ayrıca public API’yi farkında olmadan değiştirebilir, gereksiz bağımlılık ekleyebilir veya cargo fmt / clippy komutlarını atlayabilir. Örneğin, bir &mut Vec<T> hatasını çözmek için fonksiyonu Vec<T> döndürecek şekilde değiştirebilir; bu, çağıranları sessizce etkiler. async fn imzalarında Send/Sync sınırlarını yanlış koyabilir veya tokio::spawn içinde !Send değerler kullanabilir. Bu yüzden her değişikliği diff üzerinden inceleyin; özellikle Cargo.toml, unsafe, pub öğeler ve Mutex/RwLock kullanımına dikkat edin.
Rust için test ve doğrulama
Codex’e yalnızca kodu değiştirmesini değil, doğrulama komutlarını çalıştırmasını da söyleyin. Rust’ta güvenli bir değişiklik için cargo check, cargo test, cargo clippy ve cargo fmt --check sırasıyla çalıştırılmalıdır. Ajan, hata çıktısını okuyup düzeltebilir; siz de commit öncesi aynı komutları manuel çalıştırarak ikinci bir kontrol yapın. Özellikle cargo test başarısız olduğunda, Codex’e yalnızca hatayı düzeltmesini değil, testin amacını açıklamasını da isteyebilirsiniz; bu, yanlış düzeltmeleri yakalamanıza yardımcı olur.
| Araç | Amaç | Codex’e istek örneği |
|---|---|---|
cargo check | Hızlı derleme ve borrow checker kontrolü | “Önce cargo check çalıştır, hataları düzelt” |
cargo test | Birim ve entegrasyon testleri | “cargo test çalıştır, başarısız testleri raporla ve düzelt” |
cargo clippy -- -D warnings | Lint hatalarını sıfırlama | “Clippy uyarılarını temizle, gerekmedikçe allow ekleme” |
cargo fmt --check | Biçim tutarlılığı | “cargo fmt çalıştır, değişiklikleri commit et” |
Çoklu crate içeren workspace’lerde --workspace ve --all-features bayraklarını eklemesini isteyin; böylece tüm üyeler test edilir. Ayrıca doctest’leri kontrol etmek için cargo test --doc komutunu ekletin; ajan bazen yalnızca birim testlerine odaklanıp dokümantasyon örneklerini atlayabilir. Testlerin paralel çalışmasından kaynaklanan yarış durumları varsa cargo test -- --test-threads=1 isteyebilirsiniz. Sıkı bir CI pratiği için CI hatasını yapay zeka düzeltsin, PR yorumunu da sayfasındaki akışı benimseyebilirsiniz; ancak burada da clippy ve fmt temizliğini şart koşun.
Rust projesinde birden fazla ajan çalıştırmak
Birden fazla Codex ajanını aynı Rust projesinde koordine etmek için AgentVera kullanabilirsiniz; AgentVera nasıl kullanılır: ilk proje, ajanlar ve ızgara rehberindeki gibi her ajan kendi git worktree’sinde çalıştığı için borrow checker düzeltmeleri ve refactor’lar birbirinin dosyalarını ezmez. Otomatik kod incelemesi, ajanın eklediği unsafe blokları veya gereksiz clone çağrılarını dosya:satır olarak işaretler. Checkpoint’ler yanlış bir ömür süresi değişikliğini tek tıkla geri almayı sağlar; token bütçeleri ise ajanın tek döngüde projeyi dağıtmasını engeller.
Özet
Codex, Rust projelerinde doğru talimatlar ve sıkı bir doğrulama döngüsüyle güçlü bir yardımcıdır. AGENTS.md dosyasını net tutun, her değişikliği cargo test ve clippy ile doğrulayın ve özellikle borrow checker kaynaklı düzeltmelerde diff’i dikkatle inceleyin. Böylece ajanın hızından faydalanırken Rust’un güvenlik ve performans garantilerini korursunuz.