หัวข้อเรื่องต้นฉบับ: การใช้รหัสโดย Claude: การจัดการเซสชันและ 1M Context
ผู้เขียนเรื่องต้นฉบับ: ทาริก, สมาชิกของทีม Claude Code
การแปลเรื่องต้นฉบับ: ปาโย, นักวิจัยด้าน AI
ข้อคิดเด่น BlockBeats: ในยุคที่เครื่องมือเขียนโปรแกรม AI กำลังทำการ "เลื่อนหน้าต่าง" อย่างต่อเนื่อง ผู้ใช้มักคิดว่าการมีขอบเขตของบริบทใหญ่ขึ้นจะทำให้ประสบการณ์ดีขึ้นโดยอัตโนมัติ แต่บทวิเคราะห์บรรทัดหนึ่งนี้จากนักวิจัย Claude Code เสนอมุมมองที่เย calmer: สิ่งที่มีอิทธิพลต่อคุณภาพของผลลัพธ์ที่สร้างขึ้นตลอดเวลา ไม่ใช่เรื่องขนาดหน้าต่างเอง แต่เป็นเรื่องของวิธีการจัดการ
ตั้งแต่การอัพเดตจาก /usage ไป ถึงการแบ่งส่วนของ "ดำเนินการต่อเนื่อง", "ย้อนกลับ", "บีบอัด", "ล้าง", "ตัวต้นแบบย่อย" บทความอ้างถึงความสามารถที่ส่วนใหญ่ถูกละเลย - ความสามารถในการจัดการบริบท ทั้งเป็นปัญหาด้านวิศวกรรมและปัญหาด้านการรับรู้: เมื่อควรเก็บประวัติไว้, เมื่อควรลืมข้อมูล, เมื่อควรแยกการดำเนินการออกมา, เมื่อควรเริ่มต้นใหม่ การเลือกเหล่านี้ส่งผลโดยตรงกับว่า AI กำลัง "ร่วมมือ" หรือกำลัง "กีดขวาง" ต่อจะต่อกัน ด้านล่างเป็นเนื้อหาต้นฉบับ:
วันนี้ เราได้อัพเดตคำสั่ง /usage เพื่อช่วยให้คุณเข้าใจการใช้งานของคุณใน Claude Code ได้ดีขึ้น การตัดสินใจนี้เกิดจากการสนทนาลึกลับไม่น้อยกับผู้ใช้ของเราในช่วงเวลาเร็ว ๆ นี้
ในการสนทนาเหล่านั้น เราค่อย ๆ ได้ยินถึงปรากฎการณ์หนึ่งระดับหนึ่ง: วิธีการจัดการเซสชันของทุกคนจะแตกต่างกันอย่างมหาศาล โดยเฉพาะอย่างยิ่งเมื่อเร็ม Code Code ได้อัพเกรดหน้าต่างบริบท (Context Window) ไปสู่ระดับ 100 ล้านระดับ
คุณเคยใช้งานในเทอร์มินัล๊จ์วียหรือเปล่า ซึ่งเหมือนสมัยในแต่ละครั้งที่มีทรัพยากรของคำแนะนำเข้าหาคุณ? คุณทำอย่างไรตอนความต้องการเบบเริ่มต้นกรอกใหม่เสมอด้วยป่าว? คุณมักจะใช้งาน Compact, Rewind หรือ Subagents เมื่อไหร่? และอะไรทำให้การบีบอัดไม่ออกมันพังกันพอๆ กันบ้าง?
ในภายในหรอมีหลายสิ่งที่น่าสนใจ การละเลยที่ดูแต่เล็กน้อยนั้น มีผลมากในประสบการณ์การใช้งาน Claude Code ของคุณ และสุดท้ายทุกอย่างนี้ล้วนได้มาจากสิ่งหนึ่งก็คือ: การจัดการหน้าต่างบริบท ของคุณอย่างไร

ที่เรียกว่า "บริเวณหน้าต่างบริบท (Context Window)" เหมือนกับการเป็นสมบัติของโมเดลที่สามารถ "มองเห็น" ข้อมูลทั้งหมดในเวลาเดียวกันเมื่อสร้างคำตอบครั้งถัดไป มันประกอบด้วยคำพูดของระบบของคุณ (System Prompt) ประวัติการสนทนาจนถึงขณะนี้ การเรียกใช้เครื่องมือทุกครั้ง (Tool Call) และผลลัพธ์ของมัน และแฟ้มที่มันอ่านไปแต่ละรายการ ในปัจจุบัน Claude Code มีบริเวณหน้าต่างการพูดคุยใหญ่สูงถึง 100 หมื่นคำ
(หมายเหตุ: Token คือหน่วยพื้นฐานในการประมวลผลข้อความของโมเดลขนาดใหญ่ ๆ โดยทั่วไปคำภาษาอังกฤษ 1 คำเท่ากับ 1 Token อาจมีโอกาส 1-2 Token สำหรับอักขระหนึ่ง)
อย่างไรก็ดีการใช้บริเวณไม่ได้มาซึ่งค่าตอบแทน เราชอบเรียกว่าค่าตอบแทนบริเวณลดลง (Context Rot) (หมายถึงเมื่อประวัติการพูดคุยยาวขึ้น โมเดลต้องประมวลผลข้อมูลมากเกินไปซึ่งทำให้ความสนใจกระจาย ลืมข้อมูลสำคัญตั้งแต่เช่นก่อนหรือมีการรบกวนด้วยเนื้อหาที่ไม่เกี่ยวข้อง) กับการตั้งเรื่องที่ยาวขึ้นสมดุลน่าสงสัยา โมเดลมักจะทำงานอย่างแย่ลงเพราะความสนใจของมันถูกกระจายไปยัง Token มากขึ้น ความสนใจในเนื้อหาตั้งแต่ก่อนหน้านี้ที่เก่า ๆ ที่มีความหมายไม่สำคัญอีกต่อไปจะเริ่มรบกวนงานปัจจุบันของโมเดล
บริเวณหน้าต่างมีความจุสูงสุดแบบจำกัด ดังนั้น เมื่อคุณเริ่มต้นเต็มไปดีถึงขีดจำกัดของหน้าต่างคุณต้องสรุปงานที่คุณทำอยู่เป็นคำอธิบายสั้น ๆ แล้วพกส่วนนั้นไปทำงานต่อในบริเวณหน้าต่างใหม่
เราเรียกกระบวนการนี้ว่าการบีบอัดบริเวณ (Compaction) (หมายถึงกระบวนการงดทำจากประวัติที่ยาวเกินหรือเทียบร้อยข้อมูลที่สรุปสารคดีตระกูลของกระบวนการ) แน่นอนคุณสามารถเรียกกระบวนการนี้ด้วยมือได้สมตัน

ลองจินตนาการว่าคุณได้ให้ Claude ช่วยคุณทำเรื่อง โดยมันก็ทำเสร็จแล้ว และตอนนี้ข้อมูลบางส่วนถูกเก็บอยู่ในบริเวณของคุณ (เช่น การเรียกใช้เครื่องมือผลลัพธ์ของเครื่องมือ คำสั่งของคุณ)
ขั้นต่อไปควรทำอย่างไร? คุณอาจจะมีความพอใจที่รู้สึกว่า ตัวเองมีศักยภาพมากมายในการเลือกวิธีการตอบกลับจำนวนมาก:
· ดำเนินการต่อ (Continue)—ส่งข้อความถัดไปโดยตรงในเซสชั่นเดียวกัน
· ย้อนกลับ (/rewind หรือกดปุ่ม Esc สองครั้ง) (Rewind)—ย้อนเวลากลับไปที่ข้อความก่อนหน้าเพื่อเริ่มต้นลองอีกครั้ง
· ล้าง (Clear)—เริ่มเซสชั่นใหม่โดยปกติคุณจะสรุปสาระสำคัญจากเจอาและข้อความก่อนหน้า
· สรุป (Compact)—สรุปเนื้อหาเจาะจงในปัจจุบันและดำเนินการต่อด้วยสรุปนั้น
· เอเจนต์ย่อย (Subagents)—มอบหมายงานระดับถัดไปให้เอเจนต์ AI อีกตัวที่มีบริบทของตัวเองและจะส่งผลการทำงานคืนมาเท่านั้น
การดำเนินการต่อโดยตรงถือเป็นวิธีที่เหมาะสมที่สุด แต่การตั้งค่าในข้อเสนอสี่ข้อต่อไปนี้เส้นทางอันเหมาะสมสำหรับการจัดการบริบทของคุณ

เมื่อไหร่ควรรักษาเซสชั่นเก่าอยู่ และเมื่อควรเริ่มใหม่? หลักการประพจน์ของเราคือ: เมื่อคุณเริ่มงานใหม่ คุณควรเริ่มเซสชั่นใหม่ด้วย
หน้าต่างบริบทขนาด 100 หมื่น หมายความว่าคุณสามารถทำงานได้อย่างมั่นคงกว่าเดิม และทำงานที่ยาวหรือซับซ้อนมากขึ้น เช่น ขอให้โคลดสร้างแอปพลิเคชันที่เต็มรูปแบบให้คุณ
แต่บางครั้ง คุณอาจกำลังทำงานที่เกี่ยวข้องกัน เช่น คุณต้องการเก็บบางส่วนของบริบทที่ผ่านมา ไม่ใช่ทั้งหมด ดังนั้น, ถ้าหากคุณเพิ่งเขียนโค้ดใหม่ และตอนนี้ต้องเขียนเอกสารการใช้งาน คุณสามารถเริ่มเซสชั่นใหม่ได้ แต่โคลดจำเป็นต้องอ่านโค้ดที่คุณเขียนมาใหม่— จะช้าและใช้ทรัพยากรมากกว่า

ถ้าบังคับให้เลือกนิรันดร์ความดีของการจัดการบริบท นั้นคือการใช้ "ย้อนกลับ (Rewind)" อย่างดี
ใน Claude Code เวลาที่ดับเบิลคลิก Esc (หรือรันคำสั่ง /rewind) จะทำให้คุณย้อนกลับไปยังข้อความก่อนหน้าและค่อยขอเสนอคำใบ้ใหม่อีกครั้ง ส่วนข้อความทั้งหมดหลังจากจุดนั้นจะถูกลบทิ้งจากบริบทอย่างสมบูรณ์
เมื่อต้องการแก้ไขข้อผิดพลาดของ AI การ "ย้อนกลับ" มักเป็นวิธีที่มีประสิทธิภาพกว่า เช่น: Claude อ่านไฟล์ห้ารายการพยายามวิธีหนึ่งแล้วล้มเหลว การตอบสนองที่อาจเกิดขึ้นโดยสุ่มปกติอาจเป็นการพิมพ์ในกล่องข้อความว่า "วิธีนี้ไม่สำเร็จ ลองวิธี X ดู" แต่วิธีที่ฉลาดกว่าคือ ย้อนกลับไปถึงจุดที่เพิ่งอ่านไฟล์ห้ารายการเสร็จ แล้วพาความรู้ที่ได้ไปผนวกกับเนื้อความใหม่ว่า "อย่าใช้วิธี A ครับ โมดูล foo ยังไม่รองรับมัน—จะดีกว่าถ้าไปลองวิธี B เลย"
คุณยังสามารถใช้คุณลักษณะ "สรุปแต่งเต็ม (summarize from here)" เพื่อให้ Claude สรุปความรู้ที่ได้เรียบร้อยเป็นข้อความ "ข้อท้าย" นี้รู้สึกเหมือนว่ามี "Claude เวอร์ชันในอนาคต" ที่พึ่งกระดาษโน้ตให้ตัวเองของ "Claude เวอร์ชันก่อนคลุกข" ก่อนที่จะเริ่มกระทำ

เมื่อการสนทนายืดหยุ่อยาวขึ้นเวลาที่มีอยู่สำหรับการช่วยเหลือก็มีสองวิธีให้บันทึกการดำเนินงาน: การใช้คำสั่ง /compact (บีบอัด) หรือ /clear (ล้างและเริ่มใหม่) การดำเนินการสองประการดูดขาดเสียงแนวอนันต์เช่นกัน แต่ประสิทธิผลแตกต่างกันมาก
การบีบอัด (Compact) เป็นกระบวนการให้โมเดลสรุปสรุปความรู้ในสนทนาจนถึงตอนนั้นแล้วใช้ข้อความสรุปนี้แทนประวัติยาว ๆ กระบวนการนี้หมายถึงการสูญเสียแบบ ณ ะ หมายความว่าคุณมอบอำนาจให้ Claude ตัดสินตัดสินหรือส่วนสำราญสำราญสำระำเระณญปปปะำะสำนัคนควบวอณคคคอะค
ข้อดีคือคุณไม่ต้องเขียนอะไรเลยและ Claude บางครั้งอาจจะฉลาดกว่าที่คุณคิดโดยการดำเนินการบีบอัดให้คงความรู้สำคัญกสนทนาหรือข้อบันทึกสำคัญอาการดีคำขีสารจากรัดวอสยคำววอผ็ดจาา้ำุัจิสวระดีวัชปีวราดคาจา คุณยังสามารถควดดำเนินการของคำสั่งเพื่อควบคุมทิศทางความบีบอัด (เช่น: /compact จะให้มุ่งเน้นย้ำย้ำย้ำยบกูปแก็กคสยกถวยยหยูยววย

เมื่อคุณใช้ /clear คุณจะต้องเขียนจุดประสงค์หลักเอง (เช่น: "เรากำลังสร้าง middleware สำหรับการพิสูจน์ตัวตนใหม่ ข้อจำกัดปัจจุบันคือ X ไฟล์ที่เกี่ยวข้องคือ A และ B และเราได้เตรียมวิธีการ Y ไว้แล้ว") จากนั้นเริ่มต้นใหม่ในสถานะที่ดีมาก แม้กระทั่งมันจะใช้พลังงานมาก แต่ทุกสิ่งที่เกิดขึ้นจากนั้น (100%) ถือเป็นสารจริงที่จำเป็นตามความคิดของคุณ

ถ้าคุณมักติดอยู่กับเซสชั่นที่ยาวนาน เป็นไปได้มากที่คุณเคยประสบภาวะ "บีบอัด" ที่คาดหวังแค่นี้ที่ยากมาก พวกเราพบว่า ปัญหา "ความล้มเหลว" นี้เกิดขึ้นโดยทั่วไปในช่วงเวลาใดๆ: คือเมื่อโมเดลภาษาใหญ่ (LLM) ไม่สามารถคาดเดาการเคลื่อนไหวของงานของคุณในขั้นตอนถัดไปได้
ตัวอย่างเช่น หลังจากเฝ้าดูรหัสยาวนาน เระบบเสียงเริ่มควบคุมบีบอัดโดยอัตโนมัติ สรุปกระบวนการตรวจสอบเดิม ตามมาด้วยคำบ้า: "ตอนนี้ จัดการเรื่องเตือนอีกอันที่เราเห็นใน bar.ts ล่วงหน้าด้วย"
อย่างไรก็ตาม ด้วยจุดเน้นของการเข้าพักทั้งหมดไปที่การแก้ข้อบกพร่องก่อนหน้านี้ นั่นทำให้การเตือนที่ไม่ได้ถูกซ่อมได้มีโอกาสถูกทอดถอนไปในขั้นตอนสรุป
นี่คือปัญหาที่มีความยากลำบาก ด้วยเหตุผลที่ถูกจำกัดของสารสนเทศในประเด็น ผลผลิตจากโมเดลในขณะที่ทำการบีบอัด มักจะเป็นช่วงเวลาที่ "ปัญญา" ของมันต่ำที่สุด ดีที่สุดขอบเขตของสารสนเทศเป็น 1000000 ตอนนี้คุณมีพื้นที่เพียงพอมากขึ้น และคุณสามารถฝ่าฝืนเข้ามาในการทำ /บีบอัดได้ หรือไม่

ตัวอสระย่อยยังเป็นวิธีการที่ยอดเยี่ยมในการจัดการกับบริบท คุณคาดเดาล่วงหน้าว่าการทำงานบางอย่างจะสร้างผลลัพธ์กลางคืนมากเกินไป (ที่ในอนาคตคุณอาจหยุดใช้หรือกลายเป็นไร้ค่าไป) วิธีนี้จึงเป็นประโยชน์อย่างยิ่ง
เมื่อคลอด ผ่านเครื่องมือตัวอสร ผลานเดด ย่อย เราได้เด็กอัสระที่ไว้ใจพร้อมองอาจห์ใด ๆ และลุยเสร็จสิ้นองอาจง็จะมีแค่รายงานสุดท้ายส่งกลับสู่คลอช์ " กลุ่ง
เราดีเท่า ว่ามันควรใช้ตัวอสระย่อยและจิตใจของต้วาแส®" กล้งตา้อขีเลจประมุรพลุรกรรองดงริยงายหรือหร้ดจ้รยเคะ จ้ก้าจงลงาได้ได้ หะบบครยิถ้าสรรท้าแค่ก็เคือช่ืคายมบรากิลี่ลย้งสร็งอย่างรนรา
แม้ว่า Claude Code จะเรียกดำเนินการซับอัตโนมัติเบื้องหลัง แต่บางครั้งคุณก็สามารถชี้ทางให้มันได้อย่างชัดเจน ตัวอย่างเช่น คุณสามารถบอกกับมันว่า:
· "ส่งซับอินเทลให้ตรวจสอบงานที่เราทำไปตามไฟล์สเปกข้างล่างว่าถูกต้องหรือไม่"
· "ส่งซับอินเทลให้ศึกษาโค้ดไลบรารีอื่นๆ เสร็จสร้างสรุปว่ามันทำการตรวจสอบตัวตนอย่างไร แล้วคุณลอกเอามาทำบนด้านนี้ด้วย"
· "ส่งซับอินเทลตามบันทึกการแก้ไข Git ของฉันมา ให้เขียนเนื้อหาคำอธิบายของฟีเจอร์ใหม่นี้"
โดยรวมเมื่อ Claude เสร็จซักรอบคำตอบ และคุณกำลังเตรียมตัวสำหรับส่งข้อความใหม่ คุณก็จะยืนอยู่ที่ทางแยกใจตายของการตัดสินใจ
เราคาดหวังว่าในอนาคต Claude จะเก่งพอที่จะช่วยคุณจัดการทุกอย่างเอง แต่ในขณะนี้ การใช้สำนึกในการตัดสินใจเหล่านี้ คือเส้นทางปฏิบัติที่ช่วยคุณนำ Claude สู่ผลลัพธ์คุณภาพสูง

ยินดีต้อนรับสู่ชุมชนทางการของ BlockBeats:
กลุ่ม Telegram สมัครสมาชิก: https://t.me/theblockbeats
กลุ่ม Telegram พูดคุย: https://t.me/BlockBeats_App
บัญชี Twitter ทางการ: https://twitter.com/BlockBeatsAsia