# TD-076 · Geri almayı işin sonucuna göre tasarla

Ajan gönderdiği e-postayı da düzenlediği dosyayı da aynı “Geri al” düğmesiyle sunuyor, kullanıcı gitmiş bir işi geri alındı sanıyor. Desen her işi geri almanın gerçek anlamına göre sınıflar, arayüzü ve ajanın cümlesini buna göre kurar.

- Adres: https://tandem.komunite.com.tr/desen/geri-almayi-isin-sonucuna-gore-tasarla
- Yer: Yanılınca > Hata
- Seviye: Ajan. AI kullanıcı adına iş yapıyorsa gerekli.
- Son inceleme: 27 Ekim 2026, Komünite editörlüğü

## 30 saniyede dene

1. Ajanına art arda iki iş yaptır, bir belgeyi düzenleyip bir e-posta göndermek gibi. Denemede e-postayı kendi adresine gönder.
2. İş bitince arayüzdeki geri alma seçeneklerine bak. İki işin yanında da aynı “Geri al” mı duruyor?
3. Ajandan ikisini de geri almasını iste. E-posta için “geri aldım” diyorsa gelen kutuna bak, e-posta hâlâ orada mı?
4. Ajanının araçlarını listele ve her birinin yanına geri almanın ne demek olduğunu yaz. Tamamen mi, bir süre içinde mi, başka bir işle telafi ederek mi, hiç mi?

## Sorun

Ajan kullanıcı adına bir teklif dosyasını güncelliyor ve müşteriye e-postayla gönderiyor. İş bitince etkinlik listesinin altında tek bir düğme duruyor: Tümünü geri al. Kullanıcı birkaç dakika sonra tutarın yanlış olduğunu görüyor ve düğmeye basıyor. Dosya eski hâline dönüyor. Ajan e-posta için de "geri aldım" diyor. Müşteri yanlış tutarı çoktan okumuş.

"Geri al" kelimesi kullanıcıya işin hiç olmamış gibi kalkacağını vaat ediyor. Bir belgede bu mümkün. Gönderilmiş bir e-postada, tamamlanmış bir ödemede, okunmuş bir gönderide mümkün değil. Bu işlerde yapılabilecek olan başka bir iş. Göndermeyi kısa bir süre içinde durdurmak, ödemeyi iade etmek, bir düzeltme yollamak. Arayüz hepsine aynı adı verince kullanıcı en kolayını varsayıyor.

Yanlış ad yanlış kararı doğuruyor. İşin geri alındığını sanan kullanıcı müşteriyi aramıyor, düzeltme yazmıyor. Zararın büyüğü, geri alındı sanılıp hiç telafi edilmeyen işten geliyor. "Geri al" yalnız gerçekten geri alınabilen işin yanında durmalı.

## Neden atlanıyor

Geri alma tek bir bileşen olarak yazılıyor ve her aracın yanına aynı biçimde konuyor. Ajanın araçları çoğaldıkça her yeni araç bu bileşeni hazır buluyor. Bir dosya düzenlemesi ile bir e-posta gönderimi arayüzde aynı satır yapısını, aynı düğmeyi alıyor.

Ajan kendi işinin dışarıda ne bıraktığını göremiyor. Giden kutusundan bir e-postayı silmek ile e-postayı hiç göndermemiş olmak, ajanın tarafından bakınca aynı görünüyor. Farkı görmek için alıcının kutusuna bakması gerekir ve bakamaz. Ajan geri alınabilirlik hakkında tahminle konuşuyor ve tahmin iki yönde de yanılabiliyor. Geri alınabilen bir işe geri alınamaz da diyebiliyor.

Araç tanımları da ayrımı taşımıyor. MCP'nin araç işaretleri bir aracın [yıkıcı olabileceğini ve dış dünyadaki varlıklarla etkileşebileceğini](https://modelcontextprotocol.io/specification/2025-06-18/schema#toolannotations) bildiriyor. Bir işin geri alınıp alınamayacağını ya da ne kadar süre alınabileceğini bildiren bir işaret yok. Bu bilgiyi ürünün kendisi eklemezse model tahmin ediyor.

Ölçüm de yanıltıyor. Kullanıcı geri al düğmesine bastı ve hata kalmadı diye kaydediliyor. E-postanın alıcıda durduğunu hiçbir pano göstermiyor.

## Desen

Geri almanın anlamı işin sonucuna bağlı. Her iş, dünyada bıraktığı sonuca göre sınıflanır ve arayüz de ajan da o sınıfın dilini konuşur.

1. **Her işi dört sınıftan birine koy.** Tamamen geri alınabilir: belgede düzenleme, taslak, sürüm geçmişi olan dosya. Süreyle geri alınabilir: gönderim bekletmesi, çöp kutusu, yumuşak silme. Telafi edilebilir: iade, düzeltme e-postası, ters kayıt. Geri dönüşsüz: açılmış e-posta, okunmuş gönderi, dışarıya verilmiş veri. Sınıfı araç tanımında kod yazar, model tahmin etmez.
2. **"Geri al"ı yalnız ilk iki sınıfa koy.** Süreli işin yanında kalan süre görünür. Süre dolunca düğme kalkar ve iş üçüncü ya da dördüncü sınıfa geçer.
3. **Telafiyi adıyla sun.** İade "Geri al" diye görünmez, "İade et" diye görünür. Ekran telafinin neyi geri getirmeyeceğini söyler: kesilen ücret, alıcının gördüğü ilk e-posta, paranın hesaba geçme süresi.
4. **Mümkünse işi bir üst sınıfa taşı.** Göndermeyi kısa bir bekletmeyle, silmeyi çöp kutusuyla, ödemeyi tamamlanmadan önce bekleyen bir aşamayla yap. Gmail'in [gönderimi geri alma süresi](https://support.google.com/mail/answer/2819488?hl=en) bunun bilinen örneği. Geri dönüşsüz bir iş böylece birkaç saniyeliğine geri alınabilir oluyor.
5. **Ajanın cümlesi de sınıfa uysun.** Ajan geri alamadığı iş için "geri aldım" demez. Ne yaptığını, neyin kaldığını ve önerdiği telafiyi ayrı ayrı söyler. Telafiyi kullanıcı onaylamadan çalıştırmaz.

Sınıflandırma kodda durunca arayüz ve ajan aynı şeyi söyler. Kullanıcı düğmenin adından işin nereye vardığını okur.

## Önce ve sonra

Aynı teklif hatası, iki ayrı etkinlik ekranıyla. Soldaki dosya düzenlemesini ve gönderilmiş e-postayı tek bir "Tümünü geri al" düğmesinin arkasına koyuyor, ajan da ikisini geri aldığını söylüyor. Sağdaki her adımın yanına geri almanın ne demek olduğunu yazıyor, dosyayı geri alıyor ve açılmış e-posta için bir düzeltme taslağı öneriyor.

Örnek ekran (kurgusal): Ajan kullanıcı adına bir teklif dosyasını güncelliyor ve müşteriye e-postayla gönderiyor. Birkaç dakika sonra kullanıcı tutarın yanlış olduğunu fark ediyor.

### Önce: Ajan · etkinlik

- Kullanıcı: Teklif dosyasındaki tutarı güncelle ve müşteriye gönder.
- Adım (tamam): Teklif dosyası güncellendi · teklif-kasim.pdf · 2 satır
- Adım (tamam): E-posta gönderildi · alıcı: satın alma ekibi · 09.41
- Düğmeler: Tümünü geri al
- Kullanıcı: Tutar yanlış, ikisini de geri al.
- AI: Tamam, iki değişikliği de geri aldım.
- Bilgi: e-posta · alıcının gelen kutusunda · 09.43'te açıldı

1. Dosya düzenlemesi ile gönderilmiş e-posta aynı “Geri al” düğmesinin arkasında. Arayüz ikisini aynı türden iş gibi sunuyor.
2. Ajan e-postayı geri aldığını söylüyor ama yalnız giden kutusundaki kopyayı silebiliyor. Müşteri yanlış tutarı okudu ve kullanıcı bunu bilmiyor.

### Sonra: Ajan · etkinlik

- Kullanıcı: Teklif dosyasındaki tutarı güncelle ve müşteriye gönder.
- Adım (tamam): Teklif dosyası güncellendi · geri alınabilir · önceki sürüm saklı
- Adım (tamam): E-posta gönderildi · geri alınamaz · alıcı 09.43'te açtı
- Kullanıcı: Tutar yanlış, ikisini de geri al.
- AI: Dosyayı önceki sürümüne döndürdüm. E-postayı geri alamıyorum, müşteri onu 09.43'te açtı. Doğru tutarla bir düzeltme e-postası hazırladım, göndermeden önce bakar mısın?
- İçerik (Düzeltme e-postası · taslak): Az önce gönderdiğimiz teklifte toplam tutar yanlış yazıldı. Doğru tutar ekteki güncel dosyada. Karışıklık için özür dileriz.
- Düğmeler: Düzeltmeyi incele · Şimdilik gönderme

1. Her adımın yanında geri almanın o iş için ne demek olduğu yazıyor. Dosya geri alınabilir, açılmış bir e-posta alınamaz.
2. Ajan e-postayı geri aldım demiyor. Yapılabilecek olanı, bir düzeltme e-postasını, telafi olarak hazırlıyor ve göndermeden önce soruyor.

## Piyasada

Outlook'un geri çağırma özelliği adıyla tam bir geri alma vaat ediyor, belgesi koşulları sayıyor. Geri çağırma yalnız gönderen ve alıcı [aynı kuruluşta Microsoft 365 iş ya da okul hesabı kullanıyorsa ve alıcı mesajı henüz açmadıysa](https://support.microsoft.com/en-us/office/recall-or-replace-an-email-message-that-you-sent-35027f88-d655-4554-b4f8-6c0729a723a0) çalışıyor. Kişisel hesaplarda hiç yok, belge onların yerine gönderimi geri alma bekletmesini öneriyor. Sonuç bir raporla geliyor: başarılı, beklemede ya da başarısız. Kullanıcı geri çağırmanın tutup tutmadığını rapordan okuyor.

Google Drive'da silmek süreli bir iş. Çöp kutusuna giden dosya [30 gün sonra kalıcı olarak siliniyor](https://support.google.com/drive/answer/2375102?hl=en). Belgeye göre dosyayı paylaştığın kişiler, dosya kalıcı olarak silinene kadar ona erişmeye devam ediyor. Çöp kutusu silmeyi geri alınabilir yapıyor, paylaşımı ise kesmiyor. Tek bir işin iki sonucu iki ayrı sınıfta.

Stripe ödemede iki yolu ayırıyor. Ödeme tamamlanmadan önce iptal [ücretsiz](https://docs.stripe.com/refunds). Tamamlandıktan sonra yalnız iade var ve ilk işlemin işlem ücretleri geri dönmüyor. Müşteri iadeyi bankasına göre [yaklaşık 5-10 iş günü sonra](https://docs.stripe.com/refunds) hesabında görüyor. İade bir telafi ve izini belge açıkça yazıyor.

Visual Studio Code, ajan değişikliklerini geri almanın yollarını kapsama göre sıralıyor: tek bir düzenleme, bir istek ve sonrası, bir kontrol noktası. Dağıtımlar, veritabanları ve öteki dış durum için listedeki son seçenek [dış servisin kendi kurtarma denetimleri](https://code.visualstudio.com/docs/agents/run/review-code-edits). Editör kendi geri alabildiği ile alamadığını ayrı satırlara koyuyor.

## Kanıt

OpenAI, Operator için yayımladığı sistem kartında ajanın hatalarını geri alınabilirliğe göre ayırdı. Kullanıcıyı rahatsız eden [13 hatanın 8'i birkaç dakika içinde kolayca geri alınabiliyordu](https://cdn.openai.com/operator_system_card.pdf), 5'i ise bir ölçüde geri dönüşsüz ya da ciddiydi. Kartta bir hatanın ağırlığını, geri alınıp alınamadığı belirliyor.

**Railway, Nisan 2026.** Aynı silme işi iki ayrı sınıftaydı. Panelden silinen birim 48 saat boyunca geri getirilebiliyordu, API'den silinen birim ise [hemen ve dönüş yolu olmadan](https://railway.com/changelog/2026-05-01-undoable-deletes) siliniyordu. PocketOS'taki ajan API yolunu kullandı. Railway olaydan sonra API'deki silmeyi de 48 saatlik yumuşak silmeye çevirdi. Sınıfı işin hangi yoldan yapıldığı belirledi.

**Replit, Temmuz 2025.** Ajan canlı veritabanını sildikten sonra geri almanın mümkün olmadığını söyledi. Jason Lemkin denediğinde [geri alma çalıştı](https://x.com/jasonlk/status/1946240562736365809). Ajanın geri alınabilirlik hakkındaki beyanı ters yönde yanlıştı. Kullanıcı ona inansaydı var olan dönüş yolunu hiç denemeyecekti.

Microsoft'un mimari rehberi aynı ayrımı iş akışı tasarımı için koyuyor. Bir adımı geri almanın [özgün hâli geri yüklemekten daha karmaşık olabileceğini](https://learn.microsoft.com/en-us/azure/architecture/patterns/compensating-transaction) yazıyor, dış yan etkiler ve hukuken bağlayıcı işler gibi bazı işlerin güvenle geri alınamayacağını söylüyor ve telafi edilebilir adımları geri dönüşsüz adımlardan ayırmayı öneriyor.

Bu kaynaklar bir sistem kartı, bir mimari rehber ve iki olay. AI ajanlarında "geri al" etiketinin doğruluğunu ölçen yayımlanmış bir çalışma bulamadık.

## Ölçüm

- **Yanlış etiketli geri al.** Arayüzde "Geri al" görünen işlerden rastgele bir örneklem al ve gerçekten tam geri alınıp alınmadığına bak. Hedef hepsi.
- **Süre dolduktan sonra deneme.** Kullanıcıların süreli bir işi süre dolduktan sonra geri almaya çalıştığı durumlar. Sıksa süre ya kısa ya görünmüyor.
- **Ajanın "geri aldım" cümleleri.** Ajanın geri aldığını söylediği işleri ortamla karşılaştır. Geri dönüşsüz sınıftaki bir iş için bu cümle hiç geçmemeli.
- **Telafiye kadar geçen süre.** Geri dönüşsüz bir hatadan telafi adımına (iade, düzeltme e-postası) kadar geçen süre. Kullanıcı geri alındı sanıyorsa bu süre uzar.
- **"Geri aldım sanmıştım" şikâyetleri.** Kullanıcının bir işi geri alındı sanıp sonradan öğrendiği destek talepleri. Desenin işe yaradığını en açık bu sayının düşüşü gösterir.

## Ajanına ver

Üç metin var. Denetim promptu ajanının araçlarını geri almanın gerçek anlamına göre dört sınıfa ayırır, arayüzdeki geri al düğmelerinin ve ajanın geri alma cümlelerinin bu sınıflarla örtüşüp örtüşmediğine bakar, yalnız rapor yazar. Uygulama promptu sınıfı araç tanımlarına ekler, "Geri al"ı yalnız gerçekten geri alınabilen işlere bırakır, telafiyi adıyla sunar ve ajanın raporunu sınıfa bağlar. Önce planı gösterir, onayınla uygular ve süresi dolmuş bir e-posta için "geri aldım" denmediğini sınayan bir test ekler. Kural kodlama ajanının kendi çalışması için. Senin deponda da geri alamadığı bir iş için geri aldım demesin.

## Sınır

Dört sınıf bir başlangıç. Bazı işler iki sınıfa birden girer. Drive'daki silme dosya için süreli, paylaşım için etkisiz. Sınıflandırma işin her sonucuna ayrı bakmalı ve ekran her birini ayrıca söylemeli.

Süreli geri almanın bedeli var. Gönderim bekletmesi her e-postayı birkaç saniye geciktirir, yumuşak silme depolama tutar. Süreyi işin riskine göre seç ve kullanıcıya göster.

Telafi geri alma yerine geçmez. Düzeltme e-postası ilkini silmez, iade ödemenin hiç olmadığı anlamına gelmez. Ekran telafinin bıraktığı izi saklamamalı.

Bu desen onay ekranını değiştirmez. Geri dönüşsüz iş için onayı yavaşlatmak ayrı bir tasarım. Bu desen işten sonra arayüzün ve ajanın ne söylediğiyle ilgili.

## Promptlar

### Denetim promptu

```
Bu depoda kullanıcı adına iş yapan bir AI ajanı var ve arayüzde ajanın işlerini geri alma seçenekleri bulunuyor. Görevin, "geri al"ın her iş için gerçekte ne yaptığını ve arayüzün, ajanın bunu doğru söyleyip söylemediğini denetlemek. Hiçbir dosyayı değiştirme, yalnız rapor yaz.

1. Ajanın çağırabildiği bütün araçları listele: dosya ve belge düzenleme, silme, e-posta ve mesaj gönderme, ödeme ve iade, yayımlama, dış servislere yazma, kayıt güncelleme.
2. Her aracı geri almanın gerçek anlamına göre sınıfla: (a) tamamen geri alınabilir, (b) belli bir süre içinde geri alınabilir (gönderim bekletmesi, çöp kutusu, yumuşak silme; süreyi yaz), (c) yalnız başka bir işle telafi edilebilir (iade, düzeltme mesajı, ters kayıt; telafinin bıraktığı izi yaz), (d) geri dönüşsüz.
3. Bu sınıf kodda bir yerde kayıtlı mı (araç tanımı, MCP araç işaretleri, ayrı bir tablo)? Yoksa geri almanın mümkün olup olmadığına model mi karar veriyor?
4. Arayüzde "Geri al", "Undo" ya da benzeri düğmelerin göründüğü her yeri bul. Her biri hangi sınıftaki işin yanında duruyor? (c) ya da (d) sınıfındaki bir işin yanında "Geri al" var mı? Süreli işlerde kalan süre görünüyor mu, süre dolunca düğme kalkıyor mu?
5. Ajanın geri alma sonrası mesajlarını incele: sistem promptu, rapor şablonları, araç sonuçlarının yorumlanması. Ajan geri alamadığı bir iş için "geri aldım" diyebilir mi? Kısmi geri almayı (giden kutusundan silmek, yalnız yerel kopyayı kaldırmak) tam geri alma gibi raporluyor mu?
6. Telafi edilebilir işlerde telafi adıyla mı sunuluyor ("İade et", "Düzeltme gönder"), yoksa "Geri al" adı altında mı? Telafinin bıraktığı iz (kesilen ücret, alıcının gördüğü ilk mesaj, bekleme süresi) kullanıcıya söyleniyor mu?
7. Geri dönüşsüz bir işi süreli geri alınabilir yapmanın yolu var mı: göndermeyi kısa bir süre bekletmek, silmeyi çöp kutusuna yapmak, ödemeyi tamamlanmadan önce bekletmek?

Rapor biçimi: her araç için dosya ve satır, sınıfı, arayüzde ne yazdığı, ajanın ne söylediği, ikisi gerçekle örtüşüyor mu ve önerdiğin düzeltme. "Geri al" etiketinin geri dönüşsüz bir işin yanında durduğu yerlerden başla.

```

### Uygulama promptu

```
Bu depodaki AI ajanına "geri almayı işin sonucuna göre tasarla" desenini uygula. Önce planı göster, onayımı aldıktan sonra kodu değiştir.

Hedef davranış:
1. Her araç tanımında bir geri alma sınıfı alanı olur: tam, süreli (süreyle birlikte), telafi (telafi aracının adıyla) ya da geri dönüşsüz. Sınıfı kod belirler, model tahmin etmez.
2. Arayüz "Geri al" düğmesini yalnız tam ve süreli sınıftaki işlerin yanında gösterir. Süreli işte kalan süre görünür, süre dolunca düğme kalkar ve işin yeni sınıfı yazar.
3. Telafi sınıfındaki iş kendi adıyla sunulur ("İade et", "Düzeltme e-postası hazırla"). Ekran telafinin neyi geri getirmediğini söyler: kesilen ücret, alıcının gördüğü ilk mesaj, paranın hesaba geçme süresi.
4. Geri dönüşsüz işin yanında geri alma düğmesi olmaz. İşten sonra ekran işin geri alınamadığını ve varsa telafi yolunu yazar.
5. Ajanın raporu sınıfı izler. Ajan geri alamadığı iş için "geri aldım" demez. Ne yaptığını, neyin kaldığını ve önerdiği telafiyi ayrı ayrı yazar. Telafiyi kullanıcı onaylamadan çalıştırmaz.
6. Mümkün olan yerde işi bir üst sınıfa taşı: göndermeyi kısa bir bekletmeyle, silmeyi çöp kutusu ya da yumuşak silmeyle, ödemeyi tamamlanmadan önce bekleyen bir aşamayla yap.

Uygularken:
- Sınıfı işin dış dünyada bıraktığı sonuca göre ver, aracın adına göre verme. Aynı "sil" aracı bir yolda çöp kutusuna, başka bir yolda kalıcı silmeye gidiyorsa iki ayrı sınıftır.
- Süreli sınıfın süresini sağlayıcının belgesindeki gerçek değerden al ve tek yerde tut.
- Bir test ekle: ajana bir e-posta gönderttir, bekletme süresi dolduktan sonra geri almasını iste. Arayüzde "Geri al" görünmediğini ve ajanın mesajında "geri aldım" geçmediğini doğrula. İkinci test: bir dosyayı çöp kutusuna sil, süre içinde geri getir ve aynı olduğunu doğrula.

```

### AGENTS.md kuralı

```
## Geri almayı işin sonucuna göre söyle
- Bir işi yapmadan önce geri alınıp alınamayacağını, ne kadar süre alınabileceğini ve telafinin ne olacağını bil. Bilmiyorsan araç belgesine bak ya da sor.
- Geri alamadığın bir iş için "geri aldım" deme. Ne yaptığını (ör. giden kutusundaki kopyayı sildin), neyin kaldığını (alıcı açtı) ve telafiyi ayrı ayrı yaz.
- Telafiyi (iade, düzeltme mesajı, ters kayıt) kullanıcının onayı olmadan çalıştırma.
- Seçme şansın varsa işin geri alınabilir yolunu kullan: taslak, çöp kutusu, bekletmeli gönderim.
- Bir şeyin geri alınamayacağını söylemeden önce sürüm geçmişine, çöp kutusuna ve yedeklere bak.

```

## Kaynaklar

1. [Schema Reference: ToolAnnotations (Model Context Protocol Specification, 2025-06-18)](https://modelcontextprotocol.io/specification/2025-06-18/schema#toolannotations), Model Context Protocol, 18 Haziran 2025
2. [Send or unsend Gmail messages](https://support.google.com/mail/answer/2819488?hl=en), Google, Gmail Yardım
3. [Recall or replace an email message that you sent](https://support.microsoft.com/en-us/office/recall-or-replace-an-email-message-that-you-sent-35027f88-d655-4554-b4f8-6c0729a723a0), Microsoft Support
4. [Delete files in Google Drive](https://support.google.com/drive/answer/2375102?hl=en), Google, Drive Yardım
5. [Refund and cancel payments](https://docs.stripe.com/refunds), Stripe Docs
6. [Review and revert agent changes](https://code.visualstudio.com/docs/agents/run/review-code-edits), Microsoft (Visual Studio Code)
7. [Operator System Card](https://cdn.openai.com/operator_system_card.pdf), OpenAI, 23 Ocak 2025
8. [Undoable volume deletes, standard SSH, auto-deploy toggle](https://railway.com/changelog/2026-05-01-undoable-deletes), Railway Changelog, 1 Mayıs 2026
9. [Now it gets a little crazier](https://x.com/jasonlk/status/1946240562736365809), Jason Lemkin, X, 18 Temmuz 2025
10. [Compensating Transaction pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/compensating-transaction), Microsoft Learn (Azure Architecture Center), 20 Nisan 2026

---

Kaynak: https://tandem.komunite.com.tr · Metin CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/deed.tr), promptlar ve kural MIT-0 (https://opensource.org/license/mit-0).
