İçeriğe geç

Bağlam ve Görev Tarifi — Yazmadığın Her Karar Bir Tahmindir

Başlangıç 7 dk Çok sık karşılaşılır

Önce şunu oku: AI Kodunu Gözden Geçirmek — Akıcı Görünmek Doğru Olmak Değil

30 saniyede özet

Yapay zekâ asistanı yalnızca ona gösterdiğini bilir. İyi bir görev tarifi hedefi, uyulacak kalıpları, sınırları ve işin ne zaman bitmiş sayılacağını yazar. Daha çok metin değil, seçilmiş metin işe yarar.

“Sipariş iptali ekle” dedin. Asistan yeni bir hata formatı icat etti, farklı bir test kütüphanesi kullandı ve kargodaki siparişleri de iptal edilebilir yaptı. Hiçbiri yanlış bir tahmin değildi — sadece senin kararların değildi.

  1. Bayt: Asistana tek cümle yazdım, bambaşka bir şey yaptı!

  2. Sen: Ne yazmıştın?

  3. Bayt: Sipariş iptali ekle. Bu kadar. Gerisini bilir sandım...

  4. Bayt: Ustaya sadece mutfağı yenile desem, hangi mutfağı yapardı?

Asistan senin kafandakini bilmez

Bir dil modeli yalnızca context windowBir dil modelinin tek seferde görebildiği metnin tamamı: senin mesajların, verdiğin dosyalar ve kendi cevapları. Pencerede olmayan bir şeyi model bilmez.Sözlükte gör →’ında olanı bilir: mesajın, gösterdiğin dosyalar, kendi cevapları. Yazmadığın her karar, genel bir alışkanlıkla doldurulur.

Bu tahminler çoğu zaman makuldür. Sorun, hangisinin senin kuralına uymadığını ancak sonuca bakınca görmendir.

Kafam karıştı, daha basit anlat

Asistan yalnızca ona yazdığını bilir. Kafandaki kuralları yazmadıysan, onların yerine makul görünen tahminler koyar.

Hızlı kontrolBaşlangıç

Bir AI asistanına "sipariş iptali ekle" dedin. Asistan projendeki hata formatını, test alışkanlığını ve iş kurallarını nereden bilir?

Cevabı biliyor musun?Önce birini seç. Tekrar zamanlaması buna göre ayarlanıyor.

İyi bir görev tarifinde ne olur?

'Sipariş iptali ekle' diyen bir tarifte asistan yaklaşık kaç kararı kendi başına vermek zorunda kalır? Cevabı göster

Onu aşkın. Hangi yol, hangi durumlar, iade olacak mı, kural nereye yazılacak, hata formatı, test türü, dokunulabilecek dosyalar, “bitti”nin ölçüsü…

Görev tarifinin her satırı bir tahmini ortadan kaldırır.
Adım adım oku
  1. Tek cümlelik bir istekte yol, durumlar, hata formatı, test türü ve bitiş ölçüsü gibi bütün kararlar asistanın tahminine kalır.
  2. Bütün repoyu yapıştırmak bu soruların hiçbirini cevaplamaz; kurallar yığının içinde kaybolur.
  3. Hedef, projedeki kalıplar ve sınırlar yazılınca kararların çoğu senin kararın olur.
  4. Kabul kriterleri eklenince ne zaman bitmiş sayılacağı da belli olur ve sonuç testle doğrulanabilir.
ParçaCevapladığı soru
HedefNe yapılacak, hangi davranış?
BağlamProjede hangi kalıplar izleniyor?
SınırlarNereye dokunulmayacak, ne eklenmeyecek?
acceptance criteriaBir işin ne zaman "bitti" sayılacağını söyleyen somut, doğrulanabilir koşullar. Çoğu zaman doğrudan teste çevrilebilir.Sözlükte gör →Ne zaman bitti sayılır?
Çalışma biçimiÖnce plan mı, adım adım mı?

Kabul kriteri yoksa sonuç doğrulanamaz. Kriterleri doğrudan test olarak istemek, asistana hedefi, sana da kontrol yolunu verir.

Kafam karıştı, daha basit anlat

İyi bir görev tarifi yeni gelen bir çalışana verilen not gibidir: ne yapılacak, nereye dokunulabilir, iş bitince nasıl kontrol edilecek.

Hızlı kontrolBaşlangıç

Görev tarifindeki her cümle hangi parçaya ait?

Cevabı biliyor musun?Önce birini seç. Tekrar zamanlaması buna göre ayarlanıyor.

Sınıflandırılmamış

Hedef

Ne yapılacak

    Bağlam

    Hangi kalıplar izlenecek

      Sınırlar

      Nereye dokunulmayacak

        Kabul kriterleri

        Ne zaman bitti sayılacak

          Görev tarifinin hangi parçası olmadan asistanın sonucunun doğru olup olmadığını kontrol edemezsin?

          Cevabı biliyor musun?Önce birini seç. Tekrar zamanlaması buna göre ayarlanıyor.

          Kendin gör

          Görev tarifi — AI neyi tahmin etmek zorunda kalıyor?

          Tohum 918533

          Sipariş iptali ekle.

            Hız
            Adım 0

            Şu an ne oldu?

            "Sipariş iptali ekle"

            Görev tarifinin her parçası bir soruyu cevaplar. Cevaplanmayan her soru, asistanın tahminine kalır.

            Görevler0/3

            • Asistanı on karardan fazlasını tahmin etmek zorunda bırakaçık

              İpucu

              Yalnızca "sipariş iptali ekle" de.

            • Sonucu doğrulanabilir kıl — tek bir parçaylaaçık

              İpucu

              "Bitti"nin ne demek olduğunu hangi parça söyler?

            • Hiçbir kararı tahmine bırakma ve kısıtları gömmeaçık

              İpucu

              Bütün parçalar — ama repoyu yapıştırmadan.

            Olay günlüğü (0)

            Henüz olay yok. Oynat veya adımla.

            1. Varsayılanla oynat. Yalnızca bir cümle: on bir karar tahmine kaldı.
            2. Yalnızca kabul kriterlerini aç. Hâlâ tahmin var, ama sonuç artık doğrulanabilir.
            3. Bütün parçaları aç. Tahmine kalan karar yok.
            4. “Bütün repoyu yapıştır”ı aç. Hiçbir soru cevaplanmadı, kısıtlar gömüldü.
            Hızlı kontrolOrta

            "Bütün repoyu yapıştırırsam asistan her şeyi bilir" düşüncesinin sorunu ne?

            Cevabı biliyor musun?Önce birini seç. Tekrar zamanlaması buna göre ayarlanıyor.

            Satır satır: bir görev tarifi

            Her satır bir tahmini ortadan kaldırıyor

            gorev.md
            şu an çalışan satırHedef: POST /orders/{id}/cancel. Yalnızca PAID siparişler iptal edilir, ödeme iade edilir.
            2Bağlam: Kural Order.cancel() içinde. Hatalar ApiErrors ile ProblemDetail döner. Testler @WebMvcTest.
            3Sınırlar: Yalnızca order paketine dokun. Yeni bağımlılık ekleme.
            4Kabul: PAID → 200; SHIPPED → 409; bilinmeyen id → 404. Her biri için bir test.
            5Çalışma: Önce kısa bir plan yaz ve onayımı bekle.

            Debug

            Adım 1/5

            hedef Yol, izinli durum ve yan etki (iade) belli. 'Kargodakiler de iptal edilsin mi?' sorusu kalmadı.

            ShellUTF-8LF1:1

            Sol/sağ ok tuşlarıyla da gezebilirsin.

            Seçilmiş bağlam, yığılmış bağlamdan iyidir. Değişecek dosyalar, izlenecek bir örnek ve kuralların kısa listesi yeter.

            Aynı tarif bir bankanın kart servisinde nasıl görünür, merak ettin mi? Aşağıda kalıcı kurallar, tek bir görev ve o görevin kabul kriterlerinden çıkan test var.

            Derinleş · Kartta geçici limit artışı: kurallar, tarif, test 3 dosya · ~75 satır · ilk okumada atlayabilirsin
            Proje dosyaları

            AGENTS.md Kalıcı kurallar: her görevde yeniden yazılmaz, depoda durur ve kod gibi incelenir.

            AGENTS.md
            **Card service rules**
            - Money is `Money(BigDecimal value, Currency currency)`. Never `double`.
            - Errors go through `ApiErrors` and return `ProblemDetail`.
            - The customer comes from the JWT subject, never from the request body.
            - Never log a full card number; use `CardNumbers.mask()`.
            - Controller tests are `@WebMvcTest` with AssertJ and Mockito.
            - No new dependencies without asking.

            tasks/ temporary-card-limit.md Görev tarifi: hedef, bağlam, sınırlar, kabul ve çalışma biçimi; örnek veri tamamen uydurma.

            tasks/temporary-card-limit.md
            **Goal:** `POST /cards/{cardId}/temporary-limit`. A cardholder raises the
            limit for 7 days, up to 1.5 times the permanent limit.
            **Context:** the rule lives in `CardLimitService.raiseTemporarily`.
            Follow `CardBlockController` as the example controller.
            **Boundaries:** only the `card.limit` package. Do not touch the fraud
            rules or `config/prod`. Test data is made up; no real card numbers.
            **Acceptance:** within 1.5x → 200 with `expiresOn`; above → 422
            `limit-too-high`; someone else's card → 404. One test each.
            **Working mode:** write a short plan first and wait for my OK.

            src/test/java/com/bank/card/limit/ TemporaryLimitControllerTest.java Kabul kriterleri test olarak: bitti, bu üç testin geçmesidir.

            src/test/java/com/bank/card/limit/TemporaryLimitControllerTest.java
            @WebMvcTest(TemporaryLimitController.class)
            @Import(ApiErrors.class)
            class TemporaryLimitControllerTest {
            private static final Currency TRY = Currency.getInstance("TRY");
            @Autowired
            MockMvc mvc;
            @MockitoBean
            CardLimitService limits;
            @Test
            void grantsTheRaiseForSevenDays() throws Exception {
            when(limits.raiseTemporarily("C-1001", "card-7", money("30000.00")))
            .thenReturn(new TemporaryLimit(money("30000.00"), LocalDate.parse("2026-10-02")));
            request("C-1001", "30000.00")
            .andExpect(status().isOk())
            .andExpect(jsonPath("$.expiresOn").value("2026-10-02"));
            }
            @Test
            void refusesMoreThanOneAndAHalfTimes() throws Exception {
            when(limits.raiseTemporarily("C-1001", "card-7", money("45000.00")))
            .thenThrow(new LimitTooHighException(money("30000.00")));
            request("C-1001", "45000.00")
            .andExpect(status().isUnprocessableEntity())
            .andExpect(jsonPath("$.type").value(endsWith("limit-too-high")));
            }
            @Test
            void someoneElsesCardIsNotFound() throws Exception {
            when(limits.raiseTemporarily("C-2002", "card-7", money("30000.00")))
            .thenThrow(new CardNotFoundException("card-7"));
            request("C-2002", "30000.00").andExpect(status().isNotFound());
            }
            private ResultActions request(String customerNo, String amount) throws Exception {
            return mvc.perform(post("/cards/card-7/temporary-limit")
            .with(jwt().jwt(token -> token.subject(customerNo)))
            .with(csrf())
            .contentType(MediaType.APPLICATION_JSON)
            .content("""
            {"amount": "%s", "currency": "TRY"}
            """.formatted(amount)));
            }
            private static Money money(String value) {
            return new Money(new BigDecimal(value), TRY);
            }
            }
            Kafam karıştı, daha basit anlat

            Görevi küçük parçalara böl. Küçük bir değişikliği okumak ve kontrol etmek kolaydır, büyük bir yığını ise kimse tam okuyamaz.

            Hızlı kontrolOrta

            Büyük bir değişiklik için en iyi çalışma biçimi hangisi?

            Cevabı biliyor musun?Önce birini seç. Tekrar zamanlaması buna göre ayarlanıyor.

            Görev tarifine "ne yapma" kısıtlarını (yeni bağımlılık ekleme, public API'yi değiştirme) yazmak neden önemlidir?

            Cevabı biliyor musun?Önce birini seç. Tekrar zamanlaması buna göre ayarlanıyor.

            Tuzaklar

            Prompt’ta sır ya da müşteri verisi. Şifreler ve gerçek kişisel veri hiçbir koşulda prompt’a girmez.

            Her şeyi tek mesajda istemek. Büyük bir iş, büyük ve incelenemeyen bir diff olarak geri gelir.

            “Ne yapma”yı yazmamak. Hedef yolu söylemez; kabul edilemez yolları sınırlar dışarıda bırakır.

            Aynı kuralları her seferinde yazmak. Kalıcı kuralları depodaki kısa bir yönergeler dosyasına taşı.

            Hızlı kontrolOrta

            Bu görev tarifi bir asistana verildi. Hangi satırlar sorun çıkarır?

            Cevabı biliyor musun?Önce birini seç. Tekrar zamanlaması buna göre ayarlanıyor.

            Hatalı satıra dokun, sonra kontrol et.

            gorev.txt
            ShellUTF-8LF

            Kendini sına

            Şimşek turu1/5

            Asistan, projenin kurallarını sen yazmasan da bilir.

            Soru 1/2İleri

            Asistan planında "mevcut RestTemplate çağrılarını WebClient'a çevireceğim" diyor. Senin istediğin yalnızca bir endpoint eklemekti. Ne yaparsın?

            Cevabı biliyor musun?Önce birini seç. Tekrar zamanlaması buna göre ayarlanıyor.

            Aklında kalacak üç şey

            1. 1 Asistan yalnızca ona gösterileni bilir. Görev tarifinde yazmadığın her karar onun tahminidir.
            2. 2 Ne zaman bitmiş sayılacağı yazılmayan bir işin sonucu kontrol edilemez. 'Bitti'nin ölçüsünü yaz, mümkünse bir test olarak.
            3. 3 Bütün projeyi yapıştırmak iyi bağlam değildir. İlgili dosyaları ve kuralları seç; şifreleri ve gerçek müşteri verisini asla ekleme.
            Sonraki kapı Asistan testleri yeşile çevirdi. Hatayı mı düzeltti, yoksa testi mi değiştirdi? AI ile Test ve Güvenlik — Yeşil Test, Doğru Test Değildir · 8 dk

            5 kart sonraki derste seni bekliyor

            0/5 kart bu dersten toplandı

            Bu dersin üstüne kurulanlar

            Bunlar bu dersi temel alıyor; hazır olduğunda devam edebilirsin.