Blog

Claude Code tarixni 30 kundan keyin o‘chiradi: uni qanday saqlash mumkin

Markdown

Claude Code seanslari qayerda saqlanishi, cleanupPeriodDays sozlamasini qanday sozlash va rsync, launchd yoki cron yordamida tashqi arxivni qanday tashkil etish haqida.

Maqolani to‘liq o‘qish

Xizmatdan foydalanish bo‘yicha yordam uchun Ailoot hujjatlariga qarang.

Claude Code haqiqatan ham seanslar tarixini o‘chiradimi?

Asosiy xulosalar

Ha. Claude Code har safar ishga tushganda 30 kundan eski seans fayllarini o‘chiradi. Bunga ~/.claude/settings.json ichidagi cleanupPeriodDays sozlamasi javob beradi; uning standart qiymati 30. O‘chirish ogohlantirishsiz, rozilik so‘ralmasdan va fayllarni tiklash imkoniyatisiz amalga oshadi.

Ikki oy oldingi seansga qaytish uchun Claude Code’ni ochasiz — u yo‘q. Fayl diskdan butunlay o‘chirib tashlangan. Bu nosozlik yoki kamdan-kam uchraydigan xato emas: standart tozalash mexanizmi shunday ishlaydi.

Tozalashni bitta sozlama boshqaradi: cleanupPeriodDays. Uning standart qiymati 30. Claude Code har ishga tushganda tarix jildini tekshiradi va shu muddatdan eski hamma narsani o‘chiradi. Mening ~/.claude/settings.json faylimda bu sozlama umuman yo‘q edi, demak, standart qiymat amal qilgan va eski seanslarimning ayrimlari allaqachon o‘chib ketgan edi.

Anthropic repozitoriysida bu haqda bir nechta xato hisoboti ochiq turibdi, ammo ularning hech biri tuzatilmagan.

Claude Code seanslar tarixini qayerda saqlaydi?

Asosiy xulosalar

Har bir seans tarixi ~/.claude/projects/<project-path>/<session-id>.jsonl faylida saqlanadi. Jild nomi Claude Code’ni ishga tushirgan ishchi katalogingizning mutlaq yo‘li bo‘lib, undagi qiya chiziqlar chiziqchalarga almashtiriladi. .jsonl fayli butun suhbatni satrma-satr saqlaydi: so‘rovlaringiz, model javoblari, vosita chaqiruvlari va fayllardagi tahrirlar. Tozalash aynan shu xotirani o‘chiradi.

Tarixni topish oson. Terminalni ochib, jild ichidagilarni ko‘ring:

ls ~/.claude/projects/

Har bir ichki jild alohida loyihaga tegishli. Uning nomida yo‘l kodlangan bo‘ladi: masalan, /Users/alex/dev/shop dagi loyiha -Users-alex-dev-shop jildi bo‘ladi. Uning ichida seans fayllari bor:

ls -lt ~/.claude/projects/-Users-alex-dev-shop/
# 3f8a1c2e-....jsonl   ← bitta seans = bitta fayl
# a91b7d40-....jsonl

Har bir .jsonl — satrma-satr jurnal: bir satr bitta seans hodisasiga teng. Unda suhbat matnidan ko‘prog‘i bor. U qarorlaringiz ortidagi mantiqni saqlaydi: nega muayyan ma’lumotlar bazasi tuzilishini tanlaganingiz, qaysi variantlarni rad etganingiz, Claude qayerda xato qilgani va uni qanday tuzatganingiz.

Aslida, bu loyihani ishlab chiqish kundaligi. Shu sababli uni yo‘qotish og‘riqli: siz “chat”ni emas, haftalar davomida shakllantirgan kontekstni yo‘qotasiz. Bu kontekst qanday tuzilishi haqida “Claude Memory va CLAUDE.md” qo‘llanmasida yozganman.

Anthropic nega transkriptlarni 30 kundan keyin o‘chiradi?

Asosiy xulosalar

Anthropic buning sababini maxfiylik va xavfsizlik bilan izohlaydi. Seans fayllari diskda oddiy matn ko‘rinishida saqlanadi va ularda manba kodi, parollar hamda API kalitlari bo‘lishi mumkin. Ularni abadiy saqlash xavf tug‘diradi: noutbuk o‘g‘irlansa yoki kimdir diskka kirish huquqini olsa, bu nozik ma’lumotlarning barchasiga ega bo‘ladi. 30 kunlik muddat “yaqindagi ishni davom ettirish” va “sirlarni diskda zarur bo‘lganidan uzoqroq saqlamaslik” o‘rtasidagi muvozanatdir.

O‘chirishning sababi bor va barchasini o‘chirib qo‘yishdan oldin uni tushunib olish kerak. Transkript oddiy matndir. Agar seans davomida Claude .env faylini o‘qigan, kalitni buyruqqa kiritgan yoki siz so‘rovga parolni qo‘lda qo‘shgan bo‘lsangiz, bularning barchasi .jsonl fayliga oddiy matn sifatida yozilgan. Bunday fayl diskda qancha uzoq tursa, bir kuni sizib chiqish ehtimoli shuncha ortadi.

Anthropic buni ochiq aytadi: transkriptlarda manba kodi, hisob ma’lumotlari va boshqa nozik materiallar bo‘lishi mumkin, ularni diskda zarur bo‘lganidan uzoqroq saqlash esa maxfiylik uchun haqiqiy xavf tug‘diradi. 30 kunlik muddat murosa sifatida tanlangan.

Hamjamiyatning e’tirozlari uch narsaga taalluqli: o‘chirish jim amalga oshadi (sozlash vaqtida ham, ishga tushganda ham ogohlantirish yo‘q), rozilik so‘ralmaydi (sizdan so‘rashmaydi) va tiklash imkoni yo‘q (Foydalanilgan fayllar savatiga tushmaydi, avvalgi holatga qaytarib bo‘lmaydi). #59248-masalada ishlab chiquvchilar bitta narsani so‘ramoqda: tozalash adolatli bo‘lsin — ogohlantirish, tiklash muddati va unchalik keskin bo‘lmagan standart muddat berilsin.

Zaxiralash skripti o‘zi qanday qilib o‘chirishga sabab bo‘lishi mumkin?

Asosiy xulosalar

Tozalash qaysi faylni o‘chirishni faylning o‘zgartirilgan vaqti (mtime) asosida hal qiladi. U seansdagi haqiqiy so‘nggi faollikni tekshirmaydi. .jsonl fayliga tegadigan har qanday jarayon — bulut sinxronizatsiyasi, rsync, tahrirlagich yoki skript — uning mtime qiymatini o‘zgartirib, yangi seansni eskidek ko‘rsatishi mumkin. Claude Code keyingi safar ishga tushganda seansni eski deb hisoblab, uni o‘chiradi. Paradoks shundaki, boshqariladigan jild ichida tarixni zaxiralashga sodda urinish uning yo‘qolishini tezlashtiradi.

Bu eng nozik jihat va ma’lumotlarini o‘zi himoya qilmoqchi bo‘lganlarni chalg‘itadi. Tozalash mtime — fayl oxirgi marta o‘zgartirilgan vaqt tamg‘asiga qaraydi. U mtime seansda oxirgi marta qachon ishlaganingizni ko‘rsatadi, deb hisoblaydi. Amalda esa mtime’ni istalgan narsa o‘zgartirishi mumkin: Dropbox yoki iCloud sinxronizatsiya mijozi, rsync, antivirus dasturi, indeksator yoki o‘zingizning zaxiralash skriptingiz.

Mana tuzoq. Tarixingizni saqlashga qaror qilib, ~/.claude/projects/ uchun bulut sinxronizatsiyasini sozlaysiz. Bir payt kelib, sinxronizatsiya xizmati faylni qayta yozadi va uning mtime qiymatini avvalgi sanaga o‘zgartiradi (bu bulutdagi nusxadan tiklashda yuz berishi mumkin). Claude Code ishga tushganda “eski” faylni ko‘radi va o‘chiradi. Siz uni saqlab qolmoqchi edingiz, ammo o‘chirilishini tezlashtirdingiz.

Bundan faqat bitta xulosa chiqadi: zaxira ~/.claude/projects/ tashqarisida bo‘lishi kerak. Tozalash faqat shu jild ichida ishlaydi. Undan tashqarida saqlangan nusxaga tozalash yeta olmaydi. Yechimni shu tamoyil asosida tuzaman.

Tarix o‘chirilishini hoziroq qanday to‘xtatish mumkin?

Asosiy xulosalar

Bitta sozlama. ~/.claude/settings.json faylini ochib, cleanupPeriodDays qiymatini katta songa, masalan, 3650 ga (o‘n yil) o‘rnating. Amalda bu avtomatik o‘chirishni o‘chiradi: hech narsa belgilangan muddatdan eski bo‘lmaydi. Muhim: bu sozlama faqat hali o‘chirilmagan narsalarni himoya qiladi. Tozalash allaqachon o‘chirgan tarixni tiklab bo‘lmaydi. Shuning uchun birinchi qadam — yana bir seansni yo‘qotishdan oldin harakat qilish.

O‘chirishni uch qadamda to‘xtating:

  1. Sozlamalar faylini oching: ~/.claude/settings.json (agar fayl bo‘lmasa, uni yarating).
  2. cleanupPeriodDays sozlamasini katta qiymat bilan qo‘shing:
{
  "cleanupPeriodDays": 3650
}
  1. Faylni saqlang. Sozlama Claude Code keyingi safar ishga tushganda kuchga kiradi.

3650 qiymati o‘n yilni anglatadi: amalda o‘chirish endi amalga oshmaydi. Agar tozalashni saqlab qolib, ko‘proq vaqt berishni istasangiz, 365 (bir yil) qilib belgilang; shunda faqat bir yildan eski seanslar yo‘qoladi. Sozlama qo‘llanganini ushbu buyruq bilan tekshirishingiz mumkin:

grep cleanupPeriodDays ~/.claude/settings.json

Osonlikcha ko‘zdan qochadigan bir ogohlantirish: muddatni uzaytirish allaqachon o‘chirilgan narsalarni QAYTARMAYDI. Tozalash ishga tushganda bajariladi; avvalgi ishga tushishlarda o‘chirilgan narsalar butunlay yo‘q. Shu sababli avval shu sozlamani o‘rnating — u kelajakdagi yo‘qotishlarning oldini oladi, lekin allaqachon o‘chirilgan narsalarni qaytarmaydi. Claude Code tarixini, shuningdek, loyihangizni tasodifiy buyruqdan himoya qilishni istasangiz, “Claude Code’ni loyihangizni buzmaydigan qilib qanday sozlash mumkin” qo‘llanmasiga qarang.

Seanslaringiz tarixi loyihangizning ikkinchi miyasining bir qismidir: unda boshqa joyda yozib qo‘ymagan qarorlar mantig‘i bor. cleanupPeriodDays fayllarni saqlaydi, ammo olti oydan keyin keraklisini topishga yordam beradigan tizimga aylantirmaydi.

Tarixni tozalash papkasidan tashqarida qanday avtomatik arxivlash mumkin?

Asosiy xulosalar

Seanslarni tozalash ishlamaydigan ~/.claude/projects/ tashqarisidagi arxivga ko‘chiring. Alohida jildga kuniga bir marta oddiy rsync -a bajarish kifoya: yangi fayllar qo‘shiladi, eskilari esa qoladi. Arxiv tashqarida bo‘lgani uchun unga cleanupPeriodDays ham, mtime xatosi ham ta’sir qilmaydi. Jarayonni launchd (macOS) yoki cron (Linux) yordamida avtomatlashtiring — shunda tarixingiz o‘z-o‘zidan to‘planadi.

G‘oya oddiy: Claude Code o‘z jildi bilan xohlagan ishini qilsin, siz esa uning tashqarisida alohida arxiv saqlang. Bu tozalash mexanizmi unga tegmaydi, ammo disk nosozligi, tasodifiy o‘chirish yoki muvaffaqiyatsiz nusxalashdan yo‘qolishi mumkin. Buni quyidagicha sozlang:

  1. Boshqariladigan katalogdan tashqarida arxiv jildi yarating:
mkdir -p ~/claude-history-archive
  1. Joriy tarixingizni u yerga ko‘chiring. -a bayrog‘i tuzilma va vaqt tamg‘alarini saqlaydi; --ignore-existing esa allaqachon ko‘chirilgan fayllarni o‘z holicha qoldiradi:
rsync -a ~/.claude/projects/ ~/claude-history-archive/
  1. Jarayonni kuniga bir marta avtomatik bajaring. macOS’da launchd’dan foydalaning. ~/Library/LaunchAgents/com.example.claudearchive.plist faylini yarating:
<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>com.example.claudearchive</string>
  <key>ProgramArguments</key>
  <array>
    <string>/usr/bin/rsync</string>
    <string>-a</string>
    <string>/Users/YOUR_NAME/.claude/projects/</string>
    <string>/Users/YOUR_NAME/claude-history-archive/</string>
  </array>
  <key>StartInterval</key>
  <integer>86400</integer>
</dict>
</plist>
  1. Agentni fon rejimida ishlashi uchun yuklang:
launchctl load ~/Library/LaunchAgents/com.example.claudearchive.plist

Linux’da xuddi shu ish crontab’ga bitta qator qo‘shish orqali bajariladi (crontab -e):

0 3 * * * rsync -a ~/.claude/projects/ ~/claude-history-archive/

Nega bu oldingi bo‘limdagi sinxronizatsiyadan farqli ravishda ishlaydi? Arxiv ~/.claude/projects/ tashqarisida, shu sababli tozalash uni umuman ko‘ra olmaydi. Nusxa bir yo‘nalishda — jonli jilddan arxivga — olinadi va jonli fayllarning mtime qiymatiga tegilmaydi, demak, mtime xatosi yuz bermaydi. Claude Code ertaga o‘z jildidan seansni o‘chirsa ham, uning arxivdagi nusxasi qoladi.

Seanslar arxivini qidirish mumkin bo‘lgan ikkinchi miyaga qanday aylantirish mumkin?

Asosiy xulosalar

Arxivni git nazoratiga oling — shunda barcha seanslaringizning versiyalari saqlanadigan, to‘liq qidirish mumkin bo‘lgan ma’lumotlar bazasiga ega bo‘lasiz. Arxiv jildida git init buyrug‘ini bajaring, so‘ng o‘zgarishlar tarixini va tasodifiy ustidan yozishlardan himoyani ta’minlash uchun har kuni git add -A && git commit buyrug‘ini bajaring. Oddiy grep yordamida eski seanslarni qidirishingiz, .jsonl satrma-satr JSON bo‘lgani uchun esa jq yordamida tuzilgan tarkibni ajratib olishingiz mumkin. Shunda arxiv amaliy vositaga aylanadi.

Fayllarni shunchaki to‘plashning o‘zi yetarli emas — ularga kira olishingiz kerak. Ikki qadam arxivni ishlaydigan vositaga aylantiradi.

Birinchidan, uni git yordamida versiyalang. Arxiv jildida repozitoriy yarating:

cd ~/claude-history-archive
git init
git add -A && git commit -m "First snapshot of Claude Code history"

git add -A && git commit buyrug‘ini rsync ishlaydigan kundalik jarayonga ham qo‘shing. Endi versiyalar tarixi mavjud: nimalar qachon paydo bo‘lganini ko‘rishingiz va tasodifiy ustidan yozishni bitta buyruq bilan bekor qilishingiz mumkin.

Ikkinchidan, qidirish. .jsonl fayllari satrma-satr JSON bo‘lgani uchun ularda o‘zingizga tanish vositalardan foydalanishingiz mumkin. Muayyan mavzu muhokama qilingan seansni toping:

grep -rl "database migration" ~/claude-history-archive/

Seansdan faqat so‘rovlaringiz matnini ajratib oling (bu JSON bo‘lgani uchun jq’dan foydalaning):

jq -r 'select(.type=="user") | .message.content' session.jsonl

Shu paytga kelib, seanslaringiz tarixi loyihangizning ikkinchi miyasi — “buni mart oyida qanday hal qilgan edik?” degan savolga bir necha soniyada javob topiladigan ma’lumotlar bazasi — sifatida ishlay boshlaydi. Seans ichida kontekst qayerga ketishi va uni qanday boshqarish haqida alohida tahlil uchun “Claude Code’da tokenlar qayerga ketadi” qo‘llanmasiga qarang.

Allaqachon o‘chirilgan seanslarni tiklash mumkinmi?

Asosiy xulosalar

Ichki tiklash usuli yo‘q. Claude Code o‘chirilgan fayllarni Foydalanilgan fayllar savatiga joylamaydi va avvalgi holatga qaytarish nusxasini saqlamaydi; fayl butunlay o‘chadi. Yagona imkoniyat — o‘chirishdan OLDIN yaratilgan tashqi nusxalar: macOS’dagi Time Machine surati, OneDrive yoki Dropbox versiyalar tarixi yoxud qo‘lda yaratilgan zaxira. Bularning hech biri bo‘lmasa, seans yo‘qolgan. Shu sababli himoyani oldindan — yo‘qotadigan narsangiz bor paytdan avval — sozlash kerak.

Rostini aytganda: ehtimol yo‘q. Claude Code’da tiklash funksiyasi, Foydalanilgan fayllar savati yoki o‘chirilgan transkriptlar uchun bekor qilish jurnali yo‘q. Fayl diskdan shunchaki yo‘qoladi.

Bitta imkoniyat bor: agar oldindan yoqilgan bo‘lsa, tizim zaxiralari:

  1. macOS Time Machine — agar surat o‘chirishdan oldin ~/.claude/projects/ ni qamrab olgan bo‘lsa, kerakli sana uchun zaxiradan faylni olishingiz mumkin.
  2. OneDrive / Dropbox versiyalar tarixi — agar jild versiyalar tarixi yoqilgan holda sinxronlangan bo‘lsa, faylni bulutdagi versiyalar tarixidan qidiring (ammo mtime tuzog‘ini unutmang: sinxronizatsiya o‘chirishga ham sabab bo‘lgan bo‘lishi mumkin).
  3. Qo‘lda olingan nusxalar — rsync/cp yordamida boshqariladigan jilddan tashqaridagi joyga qo‘lda ko‘chirgan har qanday fayl.

Bularning hech biri mavjud bo‘lmagan bo‘lsa, seans yo‘qolgan. Bu kam uchraydigan holat ham emas: Anthropic repozitoriysidagi xato haqidagi hisobot mualliflaridan birining 38 ta yozuvidan 26 tasi buzilgan, bu bir necha oylik ishga teng. Yagona ishonchli himoya — yo‘qotishdan OLDIN o‘rnatilgan himoya. Hali saqlab qoladigan narsangiz bor paytda bugunoq cleanupPeriodDays sozlamasini va avtomatik arxivlashni sozlang.

cleanupPeriodDays uchun qaysi qiymatni tanlash kerak?

Asosiy xulosalar

Ko‘pchilik uchun 3650 (o‘n yil, bu o‘chirishni amalda o‘chiradi) qiymatini hamda tashqi avtomatik arxivni tanlang. Tarix kerak bo‘lmasa va sirlarni diskda saqlamaslik muhimroq bo‘lsa, 30 standart qiymatini qoldiring. 365 — yiliga bir marta tozalaydigan maqbul o‘rta yo‘l. Yana bir variant — tarixni umuman yozmaslik: CLAUDE_CODE_SKIP_PROMPT_HISTORY muhit o‘zgaruvchisi yoki --no-session-persistence bayrog‘idan foydalaning, ammo bu buning teskarisini ko‘zlaganlar uchun.

Bitta sozlama bor, ammo u bir nechta ma’noni anglatishi mumkin. Variantlarni solishtirib, ehtiyojingizga mosini tanlang:

QiymatVazifasiKimga mos
30 (standart)Ishga tushganda 30 kundan eski seanslarni o‘chiradiTarix kerak emas; nozik ma’lumotlarni diskda saqlamaslik muhimroq
365Bir yillik tarixni saqlaydi, so‘ng yiliga bir marta tozalaydiYaqindagi tarix kerak, lekin muddatsiz arxiv shart emas
3650O‘chirishni amalda o‘chiradiHammasini va tashqi arxivni saqlamoqchisiz (tavsiya etiladi)
CLAUDE_CODE_SKIP_PROMPT_HISTORYTarixni diskka umuman yozmaydiMaksimal maxfiylik kerak; tarix umuman kerak emas

Xavfsizlik bo‘yicha muhim ogohlantirish: 3650 qiymatini belgilab, hamma narsani saqlasangiz, kalitlar va kod bo‘lishi mumkin bo‘lgan transkriptlarni diskda saqlashga rozi bo‘lasiz. Bu ongli murosa: arxiv qulayligi va xavf o‘rtasidagi tanlov. Xavfni kamaytiring: arxivni shifrlangan diskda saqlang (macOS’da FileVault), uni ommaviy bulutga joylamang va ommaviy git repozitoriyiga kiritmang. Claude Code orqali qanday ma’lumotlar sizib chiqishi mumkinligi haqida alohida qo‘llanma tayyorladim: “Claude Code’da ma’lumotlar xavfsizligi”.

Bugun nima qilish kerak: tekshiruv ro‘yxati

Asosiy xulosalar

Bu qadamlar tarix yo‘qolishini kamaytiradi: cleanupPeriodDays: 3650 bilan muddatni uzaytiring, seanslarni ~/.claude/projects/ tashqarisiga nusxalang va arxivni versiyalang. Faqat ko‘chirilgan fayllar Claude Code tozalashidan himoyalangan. Kunlik ishlar muvaffaqiyatli bo‘lsa ham bir kungacha yangi o‘zgarish arxivlanmay qoladi; o‘tkazib yuborilgan yoki xato ishlar bu oraliqni uzaytiradi. O‘sha diskdagi nusxa disk nosozligidan himoya emas.

Himoyani bosqichma-bosqich sozlang:

  1. ~/.claude/settings.json ichida cleanupPeriodDays: 3650 qilib belgilang — o‘chirish to‘xtadi.
  2. Boshqariladigan jilddan tashqarida ~/claude-history-archive yarating va dastlabki rsync -a buyrug‘ini bajaring.
  3. launchd (macOS) yoki cron (Linux) yordamida kunlik ishni rejalashtiring.
  4. Arxivda git’ni ishga tushiring va shu jarayonga git add -A && git commit buyrug‘ini qo‘shing.
  5. Arxiv shifrlangan diskda ekanini va ommaviy bulut bilan sinxronlanmayotganini tekshiring.
  6. Har jadval ishida nusxalash muvaffaqiyatini tekshiring. Yangi arxiv seansini ko‘ring, davriy namunani alohida vaqtinchalik papkaga tiklab o‘qilishini sinang.
  7. Qurilma yoki disk yo‘qolishini ham qamrasangiz, mos kirish nazoratli mustaqil zaxira saqlab, uni ham tiklang. O‘sha diskdagi Git tarixi mustaqil zaxira emas.

Seanslar tarixi Claude’ni ishonchli qiladigan kontekst qatlamlaridan bittasidir.

Ailoot bilan tanishing.

Batafsil

Ko‘p beriladigan savollar

Kunlik arxiv hech bir seans yo‘qolmasligini kafolatlaydimi?

Yo‘q. Faqat muvaffaqiyatli ko‘chirilgan fayllarni boshqariladigan papka tozalashidan himoyalaydi. Kunlik ishlar o‘tsa ham, bir kungacha yangi o‘zgarish ko‘chmagan bo‘lishi mumkin. Xato oraliqni uzaytiradi, bir diskdagi nusxa asl fayl bilan birga yo‘qolishi mumkin.

Arxivdan foydalanish mumkinligini qanday tekshiraman?

Jadval nusxalari muvaffaqiyatini tekshiring, yangi arxiv seansini ko‘ring va davriy ravishda namunani alohida vaqtinchalik papkaga tiklang. Qurilma yoki disk yo‘qolishiga qarshi mustaqil saqlangan zaxirani ham tiklab sinang.

Barcha maqolalar