Skip to content

Gelismis Oturum Kaliplari

Fork stratejileri, eszamanli oturumlar ve deterministik oturum kimlikleri

7 dk okuma
Session fork tree: trunk session branching into multiple forks with context inheritanceCreateReviewTeam Intel--resumeDiscussion #3Discussion #7context inheritedcontext inherited

Cogu gelistirici bu kaliplara hic ihtiyac duymaz. Ancak CI entegrasyonlari olusturuyorsaniz veya eszamanli Claude orneklerini yonetiyorsaniz, bu kalipler gizli oturum bozulma hatalarini onler.

Cok adimli boru hattiniz sirasiyla calisiyor ama 20 dakika suruyor. Oturumu forklayarak paralelletstirmeye calisiyorsunuz — ve forklanan oturumlarin baslangic baglamini paylastigini ama kardes forklardan gelen sonraki guncellemeleri paylasmadiqini kesfediyorsunuz. Gelismis oturum kaliplari, hangi durumun aktarildigini ve hangisinin aktarilmadigini anlamayi gerektirir.

Bu bolum gelismis oturum kaliplarini kapsar. Oturum temelleri (olusturma, devam etme, surdurme) icin Oturumlarla Calismak bolumine bakin.

—fork-session ile Dallanma

--fork-session bayragi, konusma gecmisinin bir kopyasiyla yeni bir oturum olusturur. Orijinal oturum degistirilmeden kalir:

Terminal window
claude -p "Bunun yerine B yaklasimini dene" \
--resume "$SESSION" --fork-session --output-format json

Bu size temiz bir dallanma noktasi verir. Forklanan oturum kendi UUID’sine ve kendi gelecegine sahiptir; orijinal ise --resume icin kullanilabilir olmaya devam eder. Kullanim alanlari sunlardir:

  • A/B yaklasim testi — ayni karar noktasinda forklayip sonuclari karsilastirin
  • Alternatifleri kesfetme — ana akisi kaybetmeden riskli bir yeniden duzenleme deneyin
  • Zincirleme forklar — agac seklinde bir arastirma olusturmak icin bir forku forklayabilirsiniz (her fork yeni bir UUID alir)

Yeni oturum kimligini gosteren gercek bir fork yaniti:

fork_sessionclaude -p --resume $SID --fork-session --output-format json
1{
2 "type": "result",
3 "subtype": "success",
4 "is_error": false,
5 "duration_ms": 3605,
6 "num_turns": 1,
7 "result": "FORKED_MESSAGE",A
8 "session_id": "b9395772-b2e3-4f46-b380-c81f9d766afe",B
9 "total_cost_usd": 0.01683075,
10 "modelUsage": {
11 "claude-opus-4-6": {
12 "inputTokens": 3,
13 "outputTokens": 8,
14 "cacheReadInputTokens": 14269,
15 "cacheCreationInputTokens": 1517,
16 "costUSD": 0.01683075
17 }
18 }
19}
AYENI UUID — orijinal oturumdan farkli
BNormal tur maliyeti — fork ucuzdur

Orijinal oturum (4b8101c6-...) devam ettirildiginde hala “BASE_MESSAGE” dondurur — forklama tamamen yikici olmayan bir islemdir.

Try This

Bir oturumu forklayip baglam izolasyonunu test edin:

SID=$(claude -p “Hatirla: kod 42” —output-format json | jq -r ‘.session_id’)

claude -p “Kod nedir?” —resume “$SID” —output-format json | jq ‘.result’

claude -p “Kodu 99 olarak degistir. Kod simdi nedir?” —resume “$SID” —output-format json | jq ‘.result’

Ikinci devam ettirme birincinin degisikligini goruyor mu, yoksa her fork orijinal durumu mu aliyor?

Eszamanli Oturumlar

Birden fazla claude -p cagrisi ayni dizinde catisma olmadan paralel olarak calisabilir. Her biri benzersiz bir oturum kimligi ve bagimsiz baglam alir:

Terminal window
# Her ikisi de ayni anda calisir, kilitleme yok
claude -p "Auth modulunu incele" --output-format json > review_auth.json &
claude -p "Veritabani modulunu incele" --output-format json > review_db.json &
wait

Herhangi bir oturum kilitleme mekanizmasi yoktur. Paralel cagrilar birbirini etkilemez.

—continue Hangisini Secer?

Bir dizinde birden fazla oturum bulundugunda, --continue en son olusturulani secer. En son degistirilen veya en uzun calisani secmez.

--continue Cozumleme Kurallari

SenaryoSonuc
Dizinde tek oturumO oturumu secer
Dizinde birden fazla oturumEn son olusturulani secer
Ust dizin ve alt klasorde oturumlarYalnizca mevcut dizindeki oturumlari gorur
Mevcut dizinde oturum yokHata: devam edilecek oturum yok

Oturumlar ~/.claude/projects/<kodlanmis-dizin-yolu>/ konumunda saklanir, bu nedenle --continue dizin kapsamlidir. Dizinden bagimsiz olarak belirli bir oturumu hedeflemek istediginizde --resume SESSION_ID kullanin.

Tip

Daha sonra belirli oturumlari devam ettirmeniz gereken paralel is akislari icin, her JSON yanitindan session_id degerini kaydedin ve —continue yerine —resume kullanin. Bu, hangi oturumun devam ettirildigi konusundaki belirsizligi ortadan kaldirir.

Deterministik Oturum Kimlikleri

--session-id bayragi yeni bir oturuma belirli bir UUID atar ve CI korelasyonu icin deterministik adlandirmayi mumkun kilar.

Kullanim alani: CI izlenebilirlik. Ayni PR numarasi her zaman ayni oturum kimligini uretir, bu da loglari boru hatti calistirmalari arasinda aranabilir kilar:

Terminal window
# CI izlenebilirlik icin deterministik bir oturum kimligi ata
PR_UUID=$(echo "pr-$PR_NUMBER" | uuidgen --sha1 --namespace @url)
claude -p "Linting calistir" \
--session-id "$PR_UUID" \
--output-format json

Onemli davranislar:

  • Dondurilen session_id, sagladiginiz UUID’nin tamamiyla aynisidir — onek veya sonek eklenmez
  • Deger gecerli bir UUID olmalidir (8-4-4-4-12 hex formati). Uyumsuz dizeler sessizce bos cikti uretir
  • Zaten aktif olan bir oturum kimligini yeniden kullanmak su hataya yol acar: Error: Session ID <uuid> is already in use
  • --session-id yalnizca atama icindir — devam ettirmez. Bunun icin --resume kullanin
  • --resume ile --session-id birlesimi --fork-session gerektirir (yeni-kimlige-fork semantigi)
Terminal window
# Bir oturumu yeni bir deterministik kimlige forkla
claude -p "B yaklasimi ile devam et" \
--resume "$OLD_SESSION" \
--session-id "$NEW_UUID" \
--fork-session
TEHLIKE: Interaktif Oturum Bozulmasi

Interaktif mod oturumlarinda dosya kilitleme YOKTUR. Ayni oturumu degistiren iki terminal penceresi onu BOZACAKTIR. Bu sekilde tum konusma gecmislerini kaybettik.



Eszamanli claude -p oturumlari guvenli olsa da (her biri benzersiz bir oturum kimligi ve bagimsiz baglam alir), interaktif oturumlar birden fazla ornek ayni anda degistirdiginde .claude.json durum dosyalarini bozabilir.



Bozulma soyle gorunur: Ayristirma hatalari, eksik turlar veya claude’un devam ettirememesi. Kurtarma mekanizmasi yoktur — dosyayi silip bastan baslayin.



Guvenli kalipler: Basliksiz (-p) mod, oturumlari oturum basina izolasyonla ~/.claude/projects/ konumunda saklar. Interaktif oturumlar icin ayni proje dizininde birden fazla ornek calistirmaktan kacinin.

Bunu Uygulamada Gorun

—resume + —fork-session kombinasyonunun uc dallanma stratejisiyle gercek bir tartisma sistemini nasil destekledigini gorun: MR Inceleyici Olusturun, Bolum 4: Tartismalar Icin Oturum Forklama.

Now Do This

Bir oturumu forklayın: bir oturum kimligi yakalayip, onu farkli promptlarla iki kez devam ettirin. Her forkin orijinal baglami aldigini ama diger forkin degisikliklerini gormedigini dogrulayin. Bu, paralel gorev yurutme kalıbidir — ortak bir plandan dallanin, bagimsiz olarak yurutun.