Блог

Claude Code тарихты 30 күннен кейін жояды: оны қалай сақтауға болады

Markdown

Claude Code сеанстарының қайда сақталатынын, cleanupPeriodDays параметрін қалай баптауды және rsync, launchd немесе cron арқылы сыртқы архивті қалай ұйымдастыруды біліңіз.

Мақаланы толық оқу

Қызметті пайдалану туралы көмек алу үшін Ailoot құжаттамасын қараңыз.

Claude Code сеанстар тарихын шынымен жоя ма?

Негізгі түйін

Иә. Claude Code іске қосылған сайын 30 күннен ескі сеанс файлдарын жояды. Бұған ~/.claude/settings.json файлындағы cleanupPeriodDays параметрі жауап береді; оның әдепкі мәні — 30. Жою ескертусіз, келісім сұралмастан және файлдарды қалпына келтіру мүмкіндігінсіз орындалады.

Сіз екі ай бұрынғы сеансқа оралу үшін Claude Code-ты ашасыз, бірақ ол жоқ. Файл дискіден біржола өшірілген. Бұл ақау немесе сирек кездесетін қате емес: әдепкі тазалау механизмі осылай жұмыс істейді.

Тазалауды бір параметр басқарады: cleanupPeriodDays. Оның әдепкі мәні — 30. Claude Code іске қосылған сайын тарих қалтасын қарап, көрсетілген мерзімнен ескі файлдардың бәрін жояды. Менің ~/.claude/settings.json файлымда бұл параметр мүлде болмаған, сондықтан әдепкі мән қолданылып, ескі сеанстарымның кейбірі өшіп кеткен еді.

Anthropic репозиторийінде бұл туралы бірнеше қате есебі ашық тұр, бірақ ешқайсысы түзетілмеген.

Claude Code сеанстарының тарихын қайда сақтайды?

Негізгі түйін

Әр сеанстың тарихы ~/.claude/projects/<project-path>/<session-id>.jsonl жолында сақталады. Қалта атауы — Claude Code іске қосылған жұмыс каталогының абсолютті жолы; ондағы қиғаш сызықтар дефиске ауыстырылады. .jsonl файлында бүкіл әңгіме жол-жолымен жазылады: сұрауларыңыз, модель жауаптары, құрал шақырулары және файлдарға енгізілген өзгерістер. Тазалау жоятын нәрсе — осы жады.

Тарих файлдарын табу оңай. Терминалды ашып, қалта ішін қараңыз:

ls ~/.claude/projects/

Әр ішкі қалта жеке жобаны білдіреді. Атауы оның жолын кодтайды: мысалы, /Users/alex/dev/shop қалтасындағы жоба -Users-alex-dev-shop деген қалтаға айналады. Ішінде сеанс файлдары бар:

ls -lt ~/.claude/projects/-Users-alex-dev-shop/
# 3f8a1c2e-....jsonl   ← бір сеанс = бір файл
# a91b7d40-....jsonl

Әр .jsonl — жол-жолға бөлінген журнал: бір жол — бір сеанс оқиғасы. Онда әңгіме мәтінінен көбірек ақпарат бар. Ол шешімдеріңіздің қисынын сақтайды: неліктен белгілі бір дерекқор құрылымын таңдағаныңызды, қандай нұсқалардан бас тартқаныңызды, Claude қай жерде қателескенін және оны қалай түзеткеніңізді.

Негізінде, бұл — жобаны әзірлеу күнделігі. Сондықтан оны жоғалту ауыр тиеді: сіз «чаттан» емес, апталар бойы жинаған контекстен айырыласыз. Бұл контекстің қалай құрылатынын «Claude Memory мен CLAUDE.md салыстыруы» нұсқаулығында түсіндірдім.

Anthropic транскрипттерді неге 30 күннен кейін жояды?

Негізгі түйін

Anthropic мұны құпиялылық пен қауіпсіздікті сақтау үшін жасайды. Сеанс файлдары дискіде ашық мәтін түрінде сақталады және бастапқы кодты, құпиясөздер мен API кілттерін қамтуы мүмкін. Оларды мәңгі сақтау қауіпті: ноутбук ұрланса немесе біреу дискіге қол жеткізсе, сол құпия деректердің бәріне ие болады. 30 күндік мерзім «соңғы жұмысты жалғастыру» мен «құпияларды дискіде қажеттен ұзақ сақтамау» арасындағы тепе-теңдік ретінде таңдалған.

Файлдарды жоюдың себебі бар, сондықтан оны толық өшірмес бұрын түсініп алған жөн. Транскрипт — ашық мәтін. Егер Claude сеанс кезінде .env файлын оқыса, пәрменге кілтті кірістірсе немесе сіз сұрау мәтініне құпиясөзді қойсаңыз, мұның бәрі .jsonl файлына ашық мәтін күйінде жазылады. Мұндай файл дискіде неғұрлым ұзақ жатса, бір күні сыртқа шығып кету ықтималдығы соғұрлым артады.

Anthropic мұны ашық айтады: транскрипттерде бастапқы код, тіркелгі деректері және басқа құпия материалдар болуы мүмкін, ал оларды дискіде қажеттен ұзақ сақтау құпиялылыққа нақты қауіп төндіреді. 30 күндік мерзім ымыралы шешім ретінде таңдалған.

Қауымдастықтың қарсылығы үш мәселеге қатысты: жою үнсіз орындалады (баптау кезінде де, іске қосқанда да ескерту жоқ), келісім алынбайды (сізден сұралмайды) және қалпына келтіру мүмкін емес (Себет қолданылмайды, кері қайтару жоқ). #59248 мәселесінде әзірлеушілер бір нәрсені сұрап отыр: тазалауды әділ ету — ескерту беру, қалпына келтіру мерзімін қарастыру және әдепкі мерзімді соншалықты қысқа етпеу.

Сақтық көшірме скрипті неліктен файлдардың жойылуына өзі себеп болуы мүмкін?

Негізгі түйін

Тазалау нені жою керегін файлдың өзгертілген уақыт белгісіне (mtime) қарап шешеді. Ол сеанстағы соңғы нақты белсенділікті тексермейді. .jsonl файлын түрткен кез келген процесс — бұлттық синхрондау, rsync, мәтіндік редактор немесе скрипт — оның mtime мәнін өзгертіп, жаңа сеансты ескі етіп көрсетуі мүмкін. Claude Code келесі жолы іске қосылғанда, сеансты ескі деп санап, жояды. Парадокс мынада: басқарылатын қалтаның ішіндегі тарихты сақтауға жасалған аңғал әрекет оның жоғалуын жеделдетеді.

Бұл — ең күрделі тұсы және деректерін өздері қорғауға тырысатын адамдарды жиі жаңылыстырады. Тазалау mtime-ға, яғни файлдың соңғы өзгертілген уақыт белгісіне қарайды. Ол mtime сеанспен соңғы рет жұмыс істеген уақытыңызды көрсетеді деп болжайды. Іс жүзінде оған кез келген нәрсе әсер етуі мүмкін: Dropbox немесе iCloud синхрондау клиенті, rsync, антивирус бағдарламасы, индекстеу қызметі немесе өзіңіздің сақтық көшірме скриптіңіз.

Мәселенің мәні мынада. Сіз тарихты сақтағыңыз келіп, ~/.claude/projects/ үшін бұлттық синхрондауды қосасыз. Бір кезде синхрондау қызметі файлды қайта жазып, mtime мәнін бұрынғы күнге өзгертеді (бұлттағы көшірмеден қалпына келтірген кезде осылай болуы мүмкін). Claude Code іске қосылғанда «ескі» файлды көріп, жояды. Сіз оны сақтағыңыз келген, бірақ жойылуын жылдамдаттыңыз.

Бұдан шығатын қорытынды біреу: сақтық көшірме ~/.claude/projects/ қалтасынан тыс жерде болуы керек. Тазалау тек осы қалтаның ішіндегі файлдарға әсер етеді. Сыртта сақталған көшірмеге ол жете алмайды. Шешімді осы қағидаға сүйеніп құрамын.

Тарихтың жойылуын дәл қазір қалай тоқтатуға болады?

Негізгі түйін

Бір параметр жеткілікті. ~/.claude/settings.json файлын ашып, cleanupPeriodDays мәнін үлкен санға қойыңыз, мысалы 3650 (он жыл). Іс жүзінде бұл автоматты жоюды өшіреді: ешбір файл көрсетілген мерзімнен ескі болмайды. Маңыздысы: бұл параметр тек әлі жойылмаған файлдарды қорғайды. Тазалау өшіріп қойған тарихты қалпына келтіру мүмкін емес. Сондықтан алғашқы қадам — тағы бір сеанстан айырылмай тұрып әрекет ету.

Жоюды үш қадаммен тоқтатыңыз:

  1. Баптаулар файлын ашыңыз: ~/.claude/settings.json (файл жоқ болса, оны жасаңыз).
  2. cleanupPeriodDays параметрін үлкен мәнмен қосыңыз:
{
  "cleanupPeriodDays": 3650
}
  1. Файлды сақтаңыз. Параметр Claude Code келесі рет іске қосылғанда қолданылады.

3650 мәні он жылды білдіреді: іс жүзінде файлдар енді жойылмайды. Тазалауды қалдырып, бірақ көбірек уақыт бергіңіз келсе, 365 (бір жыл) мәнін қойыңыз; сонда бір жылдан ескі сеанстар ғана жойылады. Параметрдің оқылғанын мына пәрменмен тексеруге болады:

grep cleanupPeriodDays ~/.claude/settings.json

Оңай байқалмайтын бір жайт бар: мерзімді ұзарту бұрыннан жойылған файлдарды қалпына келтірмейді. Тазалау іске қосылғанда орындалады, ал алдыңғы іске қосулар кезінде өшірілген файлдар біржола жоғалған. Сондықтан мұны алдымен жасаңыз: ол болашақтағы жоғалтуларға жол бермейді, бірақ өшірілген файлдарды қайтармайды. Claude Code тарихын, сондай-ақ жобаңызды кездейсоқ пәрменнен қорғағыңыз келсе, «Claude Code-ты жобаңызды бұзбайтындай етіп баптау жолы» нұсқаулығын қараңыз.

Сеанс тарихы — жобаңыздың екінші миының бір бөлігі: онда басқа жерде жазылмаған шешімдердің қисыны сақталады. cleanupPeriodDays файлдарды сақтайды, бірақ алты айдан кейін керегіңізді табуға мүмкіндік беретін жүйеге айналдырмайды.

Тарихты тазалау қалтасынан тыс автоматты архивтеуге бола ма?

Негізгі түйін

Сеанстарды тазалау әсер етпейтін ~/.claude/projects/ қалтасынан тыс архивке көшіріңіз. Күніне бір рет бөлек қалтаға қарапайым rsync -a іске қосу жеткілікті: жаңа файлдар қосылады, ал ескілері сақталады. Архив сыртта болғандықтан, оған cleanupPeriodDays та, mtime қатесі де әсер етпейді. Іске қосуды macOS-та launchd немесе Linux-та cron арқылы автоматтандырыңыз, сонда тарих өздігінен жинала береді.

Идеясы қарапайым: Claude Code өз қалтасымен қалағанын істесін, ал сіз оның сыртында бөлек архив сақтаңыз. Архив сол тазалау тетігінен қорғалғанымен, диск ақауынан, байқаусыз жоюдан не сәтсіз көшіруден жоғалуы мүмкін. Оны былай баптаңыз:

  1. Басқарылатын қалтадан тыс архив қалтасын жасаңыз:
mkdir -p ~/claude-history-archive
  1. Ағымдағы тарихты сол жерге көшіріңіз. -a жалаушасы құрылым мен уақыт белгілерін сақтайды; --ignore-existing бұрын көшірілген файлдарға тимейді:
rsync -a ~/.claude/projects/ ~/claude-history-archive/
  1. Күн сайын іске қосылатындай автоматтандырыңыз. macOS-та launchd пайдаланыңыз. ~/Library/LaunchAgents/com.example.claudearchive.plist файлын жасаңыз:
<?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. Агентті фондық режимде іске қосылатындай жүктеңіз:
launchctl load ~/Library/LaunchAgents/com.example.claudearchive.plist

Linux-та соны crontab-қа (crontab -e) бір жол қосу арқылы жасауға болады:

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

Бұл алдыңғы бөлімде айтылған синхрондаудан неліктен жақсы жұмыс істейді? Архив ~/.claude/projects/ қалтасынан ТЫС, сондықтан тазалау оны көре алмайды. Көшіру бір бағытта — белсенді қалтадан архивке қарай орындалады, ал біз белсенді файлдардың mtime мәнін өзгертпейміз, сондықтан mtime қатесі болмайды. Ертең Claude Code өз қалтасынан сеансты жойса да, оның көшірмесі архивте қалады.

Сеанс архивін іздеуге болатын екінші миға қалай айналдыруға болады?

Негізгі түйін

Архивті git басқаруына берсеңіз, барлық сеанстарыңыздың нұсқаланған, толық іздеуге болатын дерекқорын аласыз. Архив қалтасында git init іске қосып, күн сайын git add -A && git commit орындасаңыз, өзгерістер тарихы сақталып, байқаусызда қайта жазудан қорғанасыз. Өткен сеанстарды кәдімгі grep арқылы іздеп, құрылымдалған мазмұнды jq көмегімен алуға болады, өйткені .jsonl — жолдарға бөлінген JSON. Осылай архивті іс жүзінде пайдалы құралға айналдырасыз.

Файлдарды жай ғана жинай беру жеткіліксіз — оларға қол жеткізу керек. Екі қадам архивті жұмыс істейтін құралға айналдырады.

Алдымен оны git арқылы нұсқалаңыз. Архив қалтасында репозиторийді инициализациялаңыз:

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

git add -A && git commit пәрмендерін rsync-пен бірге күнделікті іске қосылатындай етіп қосыңыз. Енді нұсқалар тарихы бар: ненің қашан пайда болғанын көріп, бір пәрменмен байқаусызда қайта жазылған нұсқаны қайтаруға болады.

Екінші қадам — іздеу. .jsonl файлдары жолдарға бөлінген JSON болғандықтан, оларға өзіңізге таныс құралдарды қолдана аласыз. Белгілі бір тақырып талқыланған сеансты табыңыз:

grep -rl "дерекқор көшіру" ~/claude-history-archive/

Сеанстан тек сұрауларыңыздың мәтінін шығарыңыз (бұл JSON болғандықтан, jq қолданылады):

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

Енді сеанс тарихы жобаңыздың екінші миы ретінде жұмыс істей бастайды: «наурызда бұны қалай шештік?» деген сұрақтың жауабын бірнеше секундта табуға болатын дерекқор. Сеанста контекстің қайда кететінін және оны қалай басқаруды бөлек түсіндіретін «Claude Code-та токендер қайда кетеді» нұсқаулығын да қараңыз.

Бұрын жойылған сеанстарды қалпына келтіруге бола ма?

Негізгі түйін

Кіріктірілген әдіс жоқ. Claude Code жойылған файлдарды Себетке салмайды және кері қайтару көшірмесін сақтамайды; файл біржола өшіріледі. Жалғыз мүмкіндік — жоюдан БҰРЫН жасалған сыртқы көшірмелер: macOS-тағы Time Machine суреті, OneDrive не Dropbox нұсқалар тарихы немесе қолмен жасалған сақтық көшірме. Бұлардың ешқайсысы болмаса, сеанс жоғалған. Сондықтан қорғанысты жоғалтатын нәрсе пайда болмай тұрып, алдын ала орнату керек.

Шынын айтқанда: бәлкім, мүмкін емес. Claude Code-та қалпына келтіру мүмкіндігі, Себет немесе жойылған транскрипттерді кері қайтару журналы жоқ. Файл дискіден жай ғана жоғалады.

Бір мүмкіндік бар: алдын ала қосылған болса, жүйелік сақтық көшірмелерді қарау:

  1. macOS Time Machine — егер сурет жойылғанға дейін ~/.claude/projects/ қалтасын қамтыса, қажетті күнгі сақтық көшірмеден файлды алуға болады.
  2. OneDrive / Dropbox нұсқалар тарихы — егер қалта нұсқалау қосылған күйде синхрондалса, бұлттағы нұсқалар тарихынан файлды іздеңіз (бірақ mtime тұзағын ұмытпаңыз: синхрондау да жоюға себеп болуы мүмкін).
  3. Қолмен жасалған көшірмелер — rsync/cp арқылы басқарылатын қалтадан тыс жерге қолмен көшірген файлдардың бәрі.

Бұлардың ешқайсысы болмаған болса, сеанс жоғалған. Бұл сирек жағдай емес: Anthropic репозиторийіндегі бір қате есебінің авторы 38 жазбаның 26-сы бүлінгенін хабарлады; бұл бірнеше айлық жұмысқа тең. Жалғыз сенімді қорғаныс — жоғалтудан БҰРЫН дайын тұратын қорғаныс. Бір нәрсені әлі сақтап қалуға болатын кезде, бүгін cleanupPeriodDays параметрін орнатып, автоматты архивтеуді қосыңыз.

cleanupPeriodDays үшін қандай мән таңдау керек?

Негізгі түйін

Көпшілік үшін 3650 (он жыл, бұл жоюды іс жүзінде өшіреді) мәнін және автоматты сыртқы архивті қолданған жөн. Тарих қажет болмаса әрі құпияларды дискіде сақтамау маңыздырақ болса ғана әдепкі 30 мәнін қалдырыңыз. 365 — орынды орта жол: тазалау жылына бір рет орындалады. Тағы бір мүмкіндік — тарихты мүлде жазбау: CLAUDE_CODE_SKIP_PROMPT_HISTORY орта айнымалысын немесе --no-session-persistence жалаушасын пайдаланыңыз, бірақ бұл мақсатқа кері бағыттағы шешім.

Бір ғана параметр әртүрлі мағына беруі мүмкін. Нұсқаларды салыстырып, өз жағдайыңызға сай таңдаңыз:

МәнӘсеріКімге лайық
30 (әдепкі)Іске қосылғанда 30 күннен ескі сеанстарды жоядыТарих қажет емес; құпия деректерді дискіде сақтамау маңыздырақ
365Бір жылдық тарихты сақтап, содан кейін жылына бір рет тазалайдыСоңғы тарих қажет, бірақ мерзімсіз архив керек емес
3650Жоюды іс жүзінде өшіредіБәрін және сыртқы архивті сақтағыңыз келеді (ұсынылады)
CLAUDE_CODE_SKIP_PROMPT_HISTORYТарихты дискіге мүлде жазбайдыЕң жоғары құпиялылық; тарих мүлде қажет емес

Қауіпсіздікке қатысты маңызды ескерту: егер 3650 орнатып, бәрін сақтасаңыз, дискіде кілттер мен код болуы мүмкін транскрипттерді сақтауға келісесіз. Бұл — архивтің қолайлылығы мен қауіптің арасындағы саналы таңдау. Тәуекелді азайтыңыз: архивті шифрланған дискіде сақтаңыз (macOS-та FileVault қолданыңыз), ашық бұлтқа салмаңыз және ашық git репозиторийіне жібермеңіз. Claude Code арқылы қандай деректер сыртқа шығуы мүмкін екенін бөлек «Claude Code-тағы деректер қауіпсіздігі» нұсқаулығында жинақтадым.

Бүгін не істеу керек: тексеру тізімі

Негізгі түйін

Бұл қадамдар тарихтың жоғалуын азайтады: cleanupPeriodDays: 3650 арқылы сақталу мерзімін ұзартыңыз, сеанстарды ~/.claude/projects/ сыртына көшіріңіз және архивті нұсқалаңыз. Claude Code тазалауынан тек сәтті көшірілген файлдар қорғалады. Күнделікті кесте сәтті орындалғанда соңғы өзгерістердің бір күніне дейін архивке түспей қалады; сәтсіз не өткізіліп кеткен іске қосулар бұл аралықты ұзартады. Сол дискідегі көшірме диск ақауынан қорғамайды.

Қорғанысты мына ретпен орнатыңыз:

  1. ~/.claude/settings.json файлында cleanupPeriodDays: 3650 орнатыңыз — жою тоқтайды.
  2. Басқарылатын қалтадан тыс ~/claude-history-archive қалтасын жасап, алғашқы rsync -a пәрменін іске қосыңыз.
  3. Күн сайын орындалатындай launchd (macOS) немесе cron (Linux) арқылы жоспарлаңыз.
  4. Архивте git инициализациялап, сол күнделікті іске қосуға git add -A && git commit пәрмендерін қосыңыз.
  5. Архив шифрланған дискіде тұрғанын және ашық бұлтпен синхрондалмайтынын тексеріңіз.
  6. Әр жоспарланған іске қосудың сәтті көшіргенін тексеріңіз, кейін жуырдағы архив сеансын қараңыз. Оқылатынын растау үшін үлгіні мерзімді түрде бөлек уақытша қалтаға қалпына келтіріңіз.
  7. Құрылғы не диск жоғалуынан қорғану қажет болса, тиісті қолжетімділік шектеулері бар тәуелсіз резерв сақтап, оның да қалпына келуін сынаңыз. Сол дискідегі Git тарихы тәуелсіз сақтық көшірме емес.

Сеанс тарихы — Claude-ты сенімді ететін контекстің бір қабаты ғана.

Ailoot-пен танысыңыз.

Толығырақ

Жиі қойылатын сұрақтар

Күнделікті архив бірде-бір сеанс жоғалмайтынына кепілдік бере ме?

Жоқ. Ол сәтті көшірілген файлдарды басқарылатын қалтаның тазалауынан қорғайды. Күнделікті іске қосу сәтті болса да, соңғы өзгерістердің бір күні жетіспеуі мүмкін; қате іске қосулар аралықты кеңейтеді, ал сол дискідегі көшірме түпнұсқамен бірге жоғалуы мүмкін.

Архивтің пайдалануға жарамдылығын қалай тексеремін?

Кестедегі көшірулердің сәтті өткенін растаңыз, жуырдағы архив сеансын қараңыз және үлгіні бөлек уақытша қалтаға мерзімді қалпына келтіріңіз. Құрылғы не диск жоғалуынан қорғау үшін түпнұсқадан тәуелсіз сақталған резервті де сынаңыз.

Барлық мақалалар