Claude Code ลบประวัติหลัง 30 วัน: วิธีบันทึกไว้
MarkdownClaude Code เก็บเซสชันไว้ที่ใด วิธีตั้งค่า cleanupPeriodDays และวิธีจัดระเบียบคลังเก็บถาวรภายนอกโดยใช้ rsync, launchd หรือ cron
อ่านบทความฉบับเต็ม
หากต้องการความช่วยเหลือในการใช้บริการ โปรดดูเอกสารประกอบของ Ailoot
Claude Code ลบประวัติเซสชันจริงหรือไม่?
ประเด็นสำคัญ
จริง ทุกครั้งที่ Claude Code เริ่มทำงาน โปรแกรมจะลบไฟล์เซสชันที่มีอายุเกิน 30 วัน การตั้งค่า cleanupPeriodDays ใน ~/.claude/settings.json เป็นตัวกำหนดเรื่องนี้ โดยค่าเริ่มต้นคือ 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 keys การเก็บไฟล์เหล่านี้ไว้ตลอดไปมีความเสี่ยง หากแล็ปท็อปถูกขโมยหรือมีคนเข้าถึงดิสก์ พวกเขาก็จะได้ข้อมูลอ่อนไหวทั้งหมดไป ระยะเวลา 30 วันเป็นการประนีประนอมระหว่าง “กลับมาทำงานล่าสุดต่อ” กับ “ไม่เก็บความลับไว้บนดิสก์นานเกินจำเป็น”
การลบมีเหตุผลรองรับ และควรทำความเข้าใจก่อนปิดการทำงานทั้งหมด ทรานสคริปต์เป็นข้อความธรรมดา หาก Claude อ่านไฟล์ .env ระหว่างเซสชัน แทรกคีย์ลงในคำสั่ง หรือคุณวางรหัสผ่านลงในพรอมป์ต์ ข้อมูลทั้งหมดนั้นก็จะไปอยู่ใน .jsonl ในรูปข้อความธรรมดา ยิ่งไฟล์ดังกล่าวอยู่บนดิสก์นาน โอกาสที่ข้อมูลจะรั่วไหลสักวันหนึ่งก็ยิ่งสูง
Anthropic อธิบายตรงไปตรงมาว่า ทรานสคริปต์อาจมีซอร์สโค้ด ข้อมูลรับรอง และข้อมูลอ่อนไหวอื่น ๆ การเก็บไว้บนดิสก์นานเกินจำเป็นก่อให้เกิดความเสี่ยงต่อความเป็นส่วนตัวอย่างแท้จริง โดยเลือกระยะเวลา 30 วันเป็นทางประนีประนอม
ข้อคัดค้านของชุมชนมีสามประเด็น ได้แก่ การลบเกิดขึ้นอย่างเงียบ ๆ (ไม่มีคำเตือนระหว่างตั้งค่าหรือเมื่อเริ่มทำงาน) ไม่มีการขอความยินยอม (ไม่มีใครถามคุณ) และไม่มีวิธีกู้คืน (ไฟล์ไม่ถูกย้ายไปถังขยะและไม่มีการย้อนกลับ) ในissue #59248 นักพัฒนากำลังขอสิ่งเดียว: ทำให้การล้างข้อมูลเป็นธรรม โดยแจ้งเตือน ให้มีระยะเวลากู้คืน และใช้ระยะเวลาเริ่มต้นที่ไม่เข้มงวดเกินไป
ทำไมสคริปต์สำรองข้อมูลจึงอาจทำให้เกิดการลบเสียเอง?
ประเด็นสำคัญ
การล้างข้อมูลตัดสินใจว่าจะลบอะไรโดยอิงจากเวลาแก้ไขไฟล์ (mtime) โดยไม่ได้ตรวจสอบกิจกรรมล่าสุดจริง ๆ ในเซสชัน กระบวนการใดก็ตามที่แตะไฟล์ .jsonl ไม่ว่าจะเป็นการซิงก์คลาวด์, rsync, โปรแกรมแก้ไขข้อความ หรือสคริปต์ ก็อาจเปลี่ยน mtime จนเซสชันใหม่ดูเหมือนล้าสมัยได้ เมื่อ Claude Code เริ่มทำงานครั้งถัดไป โปรแกรมจะมองว่าเซสชันนั้นเก่าและลบทิ้ง ความย้อนแย้งก็คือ ความพยายามสำรองประวัติแบบไม่ระวังภายในโฟลเดอร์ที่ระบบจัดการกลับเร่งให้ข้อมูลสูญหายเร็วขึ้น
นี่เป็นส่วนที่ซับซ้อนที่สุด และทำให้คนที่พยายามปกป้องข้อมูลด้วยตนเองพลาดได้ การล้างข้อมูลตรวจดู mtime ซึ่งเป็นเวลาที่แก้ไขไฟล์ครั้งล่าสุด โดยสมมติว่า mtime สะท้อนเวลาที่คุณทำงานในเซสชันนั้นครั้งล่าสุด ในทางปฏิบัติ อะไรก็เปลี่ยน mtime ได้ ไม่ว่าจะเป็นไคลเอนต์ซิงก์ Dropbox หรือ iCloud, rsync, ซอฟต์แวร์ป้องกันไวรัส โปรแกรมทำดัชนี หรือสคริปต์สำรองข้อมูลของคุณเอง
นี่คือกับดัก คุณตัดสินใจบันทึกประวัติและตั้งค่าซิงก์คลาวด์ให้กับ ~/.claude/projects/ ในบางครั้ง บริการซิงก์อาจเขียนไฟล์ใหม่และกำหนด mtime ให้เป็นวันที่ก่อนหน้า (กรณีนี้อาจเกิดขึ้นเมื่อกู้คืนจากสำเนาบนคลาวด์) Claude Code เห็นไฟล์ “เก่า” ตอนเริ่มทำงานและลบทิ้ง คุณตั้งใจจะบันทึกไฟล์ไว้ แต่กลับทำให้ถูกลบเร็วขึ้น
มีข้อสรุปเดียว: ต้องเก็บข้อมูลสำรองไว้นอก ~/.claude/projects/ การล้างข้อมูลทำงานเฉพาะภายในโฟลเดอร์นี้ สำเนาที่เก็บไว้นอกโฟลเดอร์จะอยู่พ้นจากการเข้าถึงของระบบล้างข้อมูล ฉันจะสร้างวิธีแก้ปัญหาโดยยึดหลักการนี้
จะหยุดการลบประวัติได้อย่างไรในตอนนี้?
ประเด็นสำคัญ
มีการตั้งค่าเดียว เปิด ~/.claude/settings.json แล้วกำหนด cleanupPeriodDays เป็นตัวเลขจำนวนมาก เช่น 3650 (สิบปี) ในทางปฏิบัติ วิธีนี้จะปิดการลบอัตโนมัติ เพราะไม่มีไฟล์ใดเก่าเกินขีดจำกัด ข้อสำคัญ: การตั้งค่านี้ปกป้องเฉพาะสิ่งที่ยังไม่ถูกลบ ประวัติที่การล้างข้อมูลลบไปแล้วกู้คืนไม่ได้ ดังนั้นขั้นแรกคือลงมือก่อนที่คุณจะเสียอีกเซสชันหนึ่ง
หยุดการลบได้ในสามขั้นตอน:
- เปิดไฟล์การตั้งค่า:
~/.claude/settings.json(หากไม่มีไฟล์นี้ ให้สร้างขึ้น) - เพิ่มการตั้งค่า
cleanupPeriodDaysพร้อมกำหนดค่าให้สูง:
{
"cleanupPeriodDays": 3650
}
- บันทึกไฟล์ การตั้งค่านี้จะมีผลในครั้งถัดไปที่ Claude Code เริ่มทำงาน
ค่า 3650 หมายถึงสิบปี ในทางปฏิบัติ การลบจะไม่เกิดขึ้นอีก หากต้องการคงการล้างข้อมูลไว้แต่เพิ่มเวลา ให้ตั้งค่าเป็น 365 (หนึ่งปี) จากนั้นจะมีเพียงเซสชันที่เก่ากว่าหนึ่งปีเท่านั้นที่หายไป คุณตรวจสอบได้ว่าระบบใช้การตั้งค่านี้แล้วด้วยคำสั่งต่อไปนี้:
grep cleanupPeriodDays ~/.claude/settings.json
ข้อควรระวังที่มองข้ามได้ง่าย: การขยายระยะเวลาไม่ได้กู้คืนสิ่งที่ถูกลบไปแล้ว การล้างข้อมูลทำงานเมื่อเริ่มต้น และทุกอย่างที่ถูกลบในการทำงานครั้งก่อน ๆ จะหายไปถาวร จึงควรตั้งค่านี้ก่อน เพื่อป้องกันการสูญเสียในอนาคต แต่ไม่สามารถนำสิ่งที่ถูกลบไปแล้วกลับมาได้ หากต้องการหลีกเลี่ยงการสูญเสียประวัติ Claude Code รวมถึงปกป้องโครงการจากคำสั่งที่เผลอใช้ โปรดดูคู่มือ “วิธีกำหนดค่า Claude Code เพื่อไม่ให้ทำให้โครงการของคุณเสียหาย”
ประวัติเซสชันของคุณเป็นส่วนหนึ่งของสมองที่สองของโครงการ เพราะมีตรรกะการตัดสินใจที่คุณไม่ได้บันทึกไว้ที่อื่น cleanupPeriodDays ช่วยเก็บไฟล์ไว้ แต่ไม่ได้เปลี่ยนไฟล์เหล่านั้นให้เป็นระบบที่ช่วยค้นหาสิ่งที่ต้องการได้ในอีกหกเดือนข้างหน้า
จะเก็บประวัติอัตโนมัตินอกโฟลเดอร์ล้างข้อมูลได้อย่างไร?
ประเด็นสำคัญ
คัดลอกเซสชันไปยังคลังเก็บถาวรที่อยู่นอก ~/.claude/projects/ ซึ่งไม่ได้รับผลจากการล้างข้อมูล การใช้ rsync -a คัดลอกไปยังไดเรกทอรีแยกต่างหากวันละครั้งก็เพียงพอ: ไฟล์ใหม่จะถูกเพิ่ม ส่วนไฟล์เก่าก็ยังอยู่ เนื่องจากคลังเก็บถาวรอยู่ภายนอก ทั้ง cleanupPeriodDays และบั๊ก mtime จึงไม่ส่งผล ตั้งเวลาให้ทำงานอัตโนมัติด้วย launchd (macOS) หรือ cron (Linux) แล้วประวัติของคุณจะสะสมไปเรื่อย ๆ
แนวคิดเรียบง่าย: ปล่อยให้ Claude Code จัดการโฟลเดอร์ของตัวเองตามต้องการ ขณะที่คุณเก็บคลังแยกไว้ภายนอก คลังรอดจากกลไกล้างนี้ แต่ยังสูญจากดิสก์เสีย ลบโดยไม่ตั้งใจ หรือคัดลอกล้มเหลวได้ ตั้งค่าดังนี้:
- สร้างโฟลเดอร์คลังเก็บถาวรนอกไดเรกทอรีที่ระบบจัดการ:
mkdir -p ~/claude-history-archive
- คัดลอกประวัติปัจจุบันไปไว้ที่นั่น แฟล็ก
-aจะรักษาโครงสร้างและเวลาไว้ ส่วน--ignore-existingจะไม่แตะต้องไฟล์ที่คัดลอกไปแล้ว:
rsync -a ~/.claude/projects/ ~/claude-history-archive/
- ตั้งเวลาให้ทำงานอัตโนมัติวันละครั้ง บน 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>
- โหลดเอเจนต์เพื่อให้ทำงานอยู่เบื้องหลัง:
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 "database migration" ~/claude-history-archive/
ดึงเฉพาะข้อความพรอมป์ต์ของคุณจากเซสชันหนึ่ง (ใช้ jq เพราะข้อมูลเป็น JSON):
jq -r 'select(.type=="user") | .message.content' session.jsonl
เมื่อถึงจุดนี้ ประวัติเซสชันของคุณก็เริ่มทำหน้าที่เป็นสมองที่สองของโครงการ เป็นฐานข้อมูลที่ช่วยค้นหาได้ในไม่กี่วินาทีว่า “เราตัดสินใจเรื่องนี้อย่างไรในเดือนมีนาคม” หากต้องการรายละเอียดแยกต่างหากว่าบริบทอยู่ตรงไหนในเซสชันและจัดการอย่างไร โปรดดูคู่มือ “โทเค็นไปอยู่ที่ไหนใน Claude Code”
กู้คืนเซสชันที่ถูกลบไปแล้วได้หรือไม่?
ประเด็นสำคัญ
ไม่มีวิธีที่มีมาให้ในระบบ Claude Code ไม่ย้ายไฟล์ที่ถูกลบไปยังถังขยะและไม่มีระบบย้อนกลับ ไฟล์ถูกลบถาวร โอกาสเดียวคือมีสำเนาภายนอกที่ทำไว้ก่อนการลบ เช่น สแนปช็อต Time Machine บน macOS ประวัติเวอร์ชันของ OneDrive หรือ Dropbox หรือข้อมูลสำรองที่ทำด้วยตนเอง หากไม่มีสิ่งเหล่านี้ เซสชันก็สูญหาย นั่นคือเหตุผลที่ต้องตั้งค่าการป้องกันไว้ล่วงหน้า ก่อนที่จะมีอะไรให้สูญเสีย
คำตอบตามตรงคือ: อาจกู้คืนไม่ได้ Claude Code ไม่มีฟีเจอร์กู้คืน ไม่มีถังขยะ และไม่มีบันทึกการเลิกทำสำหรับทรานสคริปต์ที่ถูกลบ ไฟล์จะหายไปจากดิสก์เลย
มีทางเลือกหนึ่ง คือข้อมูลสำรองของระบบ หากเปิดใช้ไว้ล่วงหน้า:
- Time Machine บน macOS — หากสแนปช็อตบันทึก
~/.claude/projects/ไว้ก่อนการลบ คุณก็ดึงไฟล์จากข้อมูลสำรองของวันที่ต้องการได้ - ประวัติเวอร์ชันของ OneDrive / Dropbox — หากโฟลเดอร์ซิงก์ไว้โดยเปิดใช้การจัดการเวอร์ชัน ให้ค้นหาไฟล์ในประวัติเวอร์ชันของคลาวด์ (แต่โปรดจำกับดัก mtime: การซิงก์อาจเป็นสาเหตุให้เกิดการลบได้เช่นกัน)
- สำเนาที่ทำด้วยตนเอง — ไฟล์ใดก็ตามที่คุณคัดลอกด้วย
rsync/cpไปยังตำแหน่งนอกโฟลเดอร์ที่ระบบจัดการ
หากไม่มีสิ่งเหล่านี้ เซสชันก็หายไปแล้ว และนี่ไม่ใช่เรื่องที่เกิดขึ้นได้ยาก: ผู้เขียนรายหนึ่งของบั๊กในคลังโค้ดของ Anthropic มีระเบียน 26 จาก 38 รายการเสียหาย ซึ่งเป็นงานที่สะสมมาหลายเดือน การป้องกันที่เชื่อถือได้มีเพียงการตั้งค่าไว้ก่อนเกิดการสูญเสีย ตั้งค่า cleanupPeriodDays และการเก็บถาวรอัตโนมัติวันนี้ ขณะที่ยังมีสิ่งให้บันทึกอยู่
ควรเลือกค่าใดสำหรับ cleanupPeriodDays?
ประเด็นสำคัญ
สำหรับคนส่วนใหญ่ ให้ใช้ 3650 (สิบปี ซึ่งแทบจะปิดการลบได้) ร่วมกับคลังเก็บถาวรภายนอกแบบอัตโนมัติ คงค่าเริ่มต้น 30 ไว้เฉพาะเมื่อคุณไม่ต้องการประวัติ และการไม่เก็บความลับไว้บนดิสก์สำคัญกว่า ค่า 365 เป็นทางสายกลางที่เหมาะสม โดยล้างข้อมูลปีละครั้ง อีกทางเลือกหนึ่งคือไม่เขียนประวัติเลย ใช้ตัวแปรสภาพแวดล้อม CLAUDE_CODE_SKIP_PROMPT_HISTORY หรือแฟล็ก --no-session-persistence แต่ตัวเลือกเหล่านี้ตอบโจทย์ตรงกันข้าม
มีการตั้งค่าเดียว แต่ใช้ให้ได้ผลหลายแบบ เปรียบเทียบตัวเลือกแล้วเลือกให้เหมาะกับการใช้งานของคุณ:
| ค่า | ทำอะไร | เหมาะกับใคร |
|---|---|---|
30 (ค่าเริ่มต้น) | ลบเซสชันที่เก่ากว่า 30 วันเมื่อเริ่มทำงาน | คุณไม่ต้องการประวัติ และการหลีกเลี่ยงการจัดเก็บข้อมูลอ่อนไหวบนดิสก์สำคัญกว่า |
365 | เก็บประวัติไว้หนึ่งปี แล้วล้างปีละครั้ง | คุณต้องการประวัติล่าสุด แต่ไม่ต้องการคลังเก็บถาวรแบบไม่มีกำหนด |
3650 | แทบจะปิดการลบ | คุณต้องการเก็บทุกอย่าง + มีคลังเก็บถาวรภายนอก (แนะนำ) |
CLAUDE_CODE_SKIP_PROMPT_HISTORY | ไม่เขียนประวัติลงดิสก์เลย | ความเป็นส่วนตัวสูงสุด; คุณไม่ต้องการประวัติเลย |
ข้อควรระวังด้านความปลอดภัยที่สำคัญ: หากคุณตั้งค่า 3650 และเก็บทุกอย่างไว้ เท่ากับยอมรับการจัดเก็บทรานสคริปต์ที่อาจมีคีย์และโค้ดบนดิสก์ นี่คือการแลกเปลี่ยนอย่างตั้งใจระหว่างความสะดวกของการมีคลังเก็บถาวรกับความเสี่ยง ลดความเสี่ยงด้วยการเก็บคลังไว้บนดิสก์ที่เข้ารหัส (FileVault บน macOS) อย่านำไปไว้บนคลาวด์สาธารณะ และอย่า commit ลงในคลัง git สาธารณะ ฉันจัดทำคู่มือแยกเกี่ยวกับข้อมูลที่อาจรั่วไหลผ่าน Claude Code ไว้ที่นี่: “ความปลอดภัยของข้อมูลใน Claude Code”
วันนี้ควรทำอะไร: รายการตรวจสอบ
ประเด็นสำคัญ
ขั้นเหล่านี้ลดการสูญประวัติ: เพิ่ม retention ด้วย cleanupPeriodDays: 3650 คัดลอกเซสชันออกนอก ~/.claude/projects/ และเก็บเวอร์ชันคลัง เฉพาะไฟล์ที่คัดลอกสำเร็จรอดจากการล้างของ Claude Code ตารางรายวันยังทำให้ข้อมูลเปลี่ยนล่าสุดได้ถึงหนึ่งวันไม่ถูกเก็บ แม้งานสำเร็จ หากพลาดหรือล้มเหลวช่องว่างจะยาวขึ้น สำเนาบนดิสก์เดียวไม่ป้องกันดิสก์เสีย
ตั้งค่าการป้องกันทีละขั้นตอน:
- ตั้ง
cleanupPeriodDays: 3650ใน~/.claude/settings.json— เท่านี้ก็หยุดการลบแล้ว - สร้าง
~/claude-history-archiveนอกโฟลเดอร์ที่ระบบจัดการ แล้วเรียกrsync -aครั้งแรก - ตั้งเวลาให้ทำงานทุกวันด้วย launchd (macOS) หรือ cron (Linux)
- เริ่มต้น git ในคลังเก็บถาวร และเพิ่ม
git add -A && git commitในการทำงานเดียวกัน - ตรวจสอบว่าคลังเก็บถาวรอยู่บนดิสก์ที่เข้ารหัสและไม่ได้ซิงก์กับคลาวด์สาธารณะ
- ตรวจทุกรอบตามตารางว่าคัดลอกสำเร็จ แล้วตรวจเซสชันล่าสุดในคลัง และกู้ตัวอย่างลงโฟลเดอร์ชั่วคราวแยกเป็นระยะเพื่อยืนยันว่าอ่านได้
- หากต้องป้องกันอุปกรณ์หรือดิสก์สูญหาย ให้เก็บสำรองอิสระที่มีสิทธิ์เหมาะสมและทดสอบกู้ด้วย ประวัติ Git บนดิสก์เดียวไม่ใช่สำรองอิสระ
ประวัติเซสชันเป็นเพียงชั้นหนึ่งของบริบทที่ทำให้ Claude ทำงานได้อย่างน่าเชื่อถือ
แหล่งที่มา
มาทำความรู้จักกับ Ailoot
รายละเอียดเพิ่มเติม
คำถามที่พบบ่อย
เก็บคลังรายวันรับประกันว่าไม่มีเซสชันสูญได้หรือไม่?
ไม่รับประกัน ป้องกันเฉพาะไฟล์ที่คัดสำเร็จจากการล้างโฟลเดอร์จัดการ แม้รันรายวันสำเร็จก็อาจขาดการเปลี่ยนล่าสุดได้ถึงหนึ่งวัน งานล้มเหลวทำช่องว่างยาวขึ้น และสำเนาดิสก์เดียวเสียพร้อมต้นฉบับได้
ตรวจว่าคลังใช้ได้จริงอย่างไร?
ยืนยันว่าคัดลอกตามตารางสำเร็จ ตรวจเซสชันล่าสุด และกู้ตัวอย่างลงโฟลเดอร์ชั่วคราวแยกเป็นระยะ หากป้องกันอุปกรณ์หรือดิสก์สูญหาย ให้ทดสอบสำรองที่เก็บอิสระจากต้นฉบับด้วย