ทุกเซสชันของ coding agent เริ่มต้นจากความว่างเปล่า Claude Code ระบุไว้ในเอกสารของตัวเองว่า แต่ละเซสชันจะเริ่มด้วย context window ใหม่เอี่ยม เครื่องมือจะไม่จำอะไรที่คุณบอกไปเมื่อวาน เว้นแต่ว่ามีบางสิ่งนอกบทสนทนาที่พาข้อมูลนั้นต่อมา ดังนั้น การเรียนรู้วิธีรักษา context ข้ามเซสชัน AI จึงไม่ใช่เคล็ดลับเพียงข้อเดียว แต่เป็นการรู้ว่าข้อมูล context ชิ้นหนึ่งควรอยู่ในเลเยอร์ใดจากสี่เลเยอร์ และใส่ไว้ตรงนั้นก่อนที่เซสชันจะจบลง
คู่มือนี้จะพาดูทั้งสี่เลเยอร์ตามลำดับ ได้แก่ ไฟล์คำสั่ง (instruction files) ที่เครื่องมืออ่านตอนเริ่มทำงาน, โน้ตที่เครื่องมือเขียนให้ตัวเอง, การกลับเข้าเซสชันเดิม (session resume) และบันทึกงานที่ใช้ร่วมกัน ซึ่งสามอย่างแรกไม่มีให้ เลเยอร์ที่สี่คือจุดที่ Sharkly เข้ามาเกี่ยวข้อง เพราะ Task ที่บรรจุเป้าหมาย บทสนทนา การรัน และการยอมรับไว้ด้วยกัน คือเลเยอร์เดียวที่คนที่สองสามารถอ่านได้ หากคุณยังลังเลว่าจะแชตหรือมอบหมายงานดี คู่มือของเราเรื่อง แชตกับ AI agent หรือมอบหมาย Task คือบทที่ควรอ่านคู่กัน
สรุปสั้น ๆ
Context อยู่รอดข้ามเซสชันได้ในสี่ที่ ไฟล์คำสั่ง (CLAUDE.md, AGENTS.md, GEMINI.md) เก็บกฎที่เครื่องมือควรยึดถือทุกครั้ง Auto memory เก็บคำแก้ไขและ preference ที่เครื่องมือเรียนรู้มา Session resume พาบทสนทนาหนึ่งบทต่อไปข้างหน้าให้คนหนึ่งคนบนเครื่องหนึ่งเครื่อง บันทึกงาน ซึ่งก็คือ Task พร้อมคำอธิบาย คอมเมนต์ และ execution log เก็บสิ่งที่ถูกตัดสินใจ สิ่งที่รันไป และสิ่งที่คนหนึ่งคนยอมรับ และมันเป็นเลเยอร์เดียวที่ใช้ร่วมกันได้ วาง context แต่ละประเภทลงในเลเยอร์ของมัน แล้ว context window ใหม่ก็จะไม่ใช่ความสูญเสียอีกต่อไป
เลเยอร์ 1: ไฟล์คำสั่งที่เครื่องมืออ่านตอนเริ่มทำงาน
ไฟล์คำสั่งคือ context ที่คุณเขียนครั้งเดียว แล้วเครื่องมือจะโหลดทุกเซสชัน CLI หลัก ๆ แต่ละตัวมีไฟล์แบบนี้ และมีวิธี resolve ที่คล้ายกัน
| เครื่องมือ | ไฟล์ | วิธี resolve |
|---|---|---|
| Claude Code | CLAUDE.md (ระดับโปรเจกต์หรือ .claude/CLAUDE.md), ~/.claude/CLAUDE.md (ระดับผู้ใช้), CLAUDE.local.md (ส่วนตัว, อยู่ใน .gitignore) |
โหลดจาก working directory และทุก directory ที่อยู่เหนือขึ้นไป โดยต่อกันจาก root ลงมา ส่วนไฟล์ใน subdirectory จะโหลดเมื่อต้องการ |
| Codex | AGENTS.md โดยมี ~/.codex/AGENTS.md สำหรับ scope ระดับ global และ AGENTS.override.md สำหรับ override ชั่วคราว |
ต่อกันจาก Git root ลงมา จำกัดขนาดด้วย project_doc_max_bytes ซึ่งค่าเริ่มต้นคือ 32 KiB |
| Gemini CLI | GEMINI.md โดยมี ~/.gemini/GEMINI.md สำหรับ scope ระดับ global |
ค้นหาจาก global, workspace และแบบ just-in-time; /memory show จะแสดงผลลัพธ์ที่รวมแล้ว |
มีนิสัยสองอย่างที่ทำให้เลเยอร์นี้มีประโยชน์ เขียนไฟล์ให้สั้น คำแนะนำของ Claude Code ตั้งเป้าไว้ที่ไม่เกิน 200 บรรทัดต่อไฟล์ เพราะยิ่งไฟล์ยาว ความยึดถือก็จะยิ่งลดลง และเขียนข้อเท็จจริงที่ไม่งั้นคุณต้องอธิบายซ้ำ เช่น คำสั่ง build, convention และกฎที่คุณพิมพ์ลงในแชตเมื่อเซสชันก่อน ถ้า repository มี AGENTS.md อยู่แล้ว CLAUDE.md ที่มีแค่ @AGENTS.md จะ import ไฟล์นั้นมา ทำให้ทั้งสองเครื่องมืออ่านจากแหล่งเดียว ทุกอย่างในเลเยอร์นี้เป็น context ไม่ใช่การบังคับใช้ เอกสาร memory ของ Claude Code ระบุชัดเจนว่า hook ต่างหาก ไม่ใช่คำสั่ง ที่เป็นตัวบล็อกการกระทำ
เลเยอร์ 2: โน้ตที่เครื่องมือเขียนให้ตัวเอง
auto memory ของ Claude Code คือเลเยอร์ที่ผู้คนมักลืมว่ามีอยู่ ระหว่างทำงาน Claude จะบันทึกโน้ตเกี่ยวกับบทบาทและ preference ของคุณ คำแก้ไขที่คุณให้ context ของโปรเจกต์ที่มันหาจากโค้ดไม่ได้ และตำแหน่งของสิ่งที่อยู่นอก repository โน้ตเหล่านี้เก็บอยู่ที่ ~/.claude/projects/<project>/memory/ โดยมี MEMORY.md เป็นดัชนี ซึ่ง 200 บรรทัดแรกหรือ 25 KB จะโหลดตอนเริ่มทุกเซสชัน ส่วนไฟล์หัวข้ออื่น ๆ จะโหลดเมื่อต้องการ
มีสามขอบเขตที่ต้องรู้ auto memory แยกตาม repository และใช้ร่วมกันข้าม worktree มันอยู่เฉพาะบนเครื่องนั้น ดังนั้นโน้ตบนเดสก์ท็อปของคุณจะไม่มีอยู่บนแล็ปท็อป และมันอยู่รอดข้าม /compact เพราะการ compact เขียนบทสนทนาใหม่ ไม่ใช่ไฟล์บนดิสก์ หากอยากดูว่าบันทึกอะไรไว้ ให้รัน /memory หากอยากปิด ให้ตั้ง autoMemoryEnabled เป็น false หรือ export CLAUDE_CODE_DISABLE_AUTO_MEMORY=1
ใช้เลเยอร์นี้กับเรื่องที่คุณพูดครั้งเดียวแล้วหวังให้ติดไปตลอด เช่น “ใช้ pnpm เสมอ” หรือ “เทสต์ API ต้องมี Redis ในเครื่อง” อย่าพึ่งพามันกับเรื่องที่เพื่อนร่วมทีมต้องรู้ เพราะมันเป็นของคุณคนเดียว
เลเยอร์ 3: การกลับเข้าเซสชันเดิม
บางครั้ง context ที่คุณต้องการก็คือตัวบทสนทนาเอง Claude Code เก็บเซสชันไว้บนดิสก์ โดย claude --continue จะเปิดบทสนทนาล่าสุดใน directory ปัจจุบันขึ้นมาใหม่ ส่วน claude --resume <id-or-name> จะเปิดอันที่ระบุเจาะจง และ --fork-session จะสร้าง session ID ใหม่เพื่อให้คุณแยกสาขาจาก checkpoint ได้โดยไม่ทับของเดิม ตั้งชื่อเซสชันด้วย /rename ก่อนที่คุณจะ /clear เพื่อให้กลับมาหาเจออีกครั้ง Codex มี codex resume สำหรับเปิดแชตล่าสุดจาก repository ปัจจุบันขึ้นมาใหม่
การ resume มีต้นทุน ทุกคำขอจะพาบทสนทนาทั้งหมดไปด้วย ดังนั้นเซสชันที่เปิดค้างไว้นานจะกิน usage มากกว่าเซสชันใหม่สำหรับคำถามบรรทัดเดียว /compact พร้อมคำสั่งกำหนดโฟกัส เช่น /compact Focus on the migration plan จะแลกความละเอียดกับพื้นที่ว่าง สิ่งที่รอดจากการ compact คือ summary บวกกับสิ่งที่ไฟล์คำสั่งโหลดกลับมา ส่วนอะไรก็ตามที่ให้ไว้ในบทสนทนาเท่านั้นและไม่ได้ถูกสรุปไว้ก็จะหายไป มองการ resume เป็นสะพานข้ามช่วงพักเที่ยง ไม่ใช่ความจำของทีม
เลเยอร์ 4: บันทึกงาน
ไม่มีเลเยอร์ใดในสามข้อแรกตอบคำถามที่เพื่อนร่วมทีมถามในวันพฤหัสบดีได้ว่า เมื่อวันอังคาร agent ทำอะไร เพราะอะไร และใครเป็นคนยอมรับ ไฟล์คำสั่งเก็บกฎ Auto memory เก็บ preference ของคนคนหนึ่ง เซสชันที่ resume กลับมาเก็บบทสนทนาของคนคนหนึ่งบนเครื่องหนึ่งเครื่อง การตัดสินใจ การรัน และการยอมรับ จำเป็นต้องมีบันทึกที่ใช้ร่วมกัน และบันทึกนั้นก็คือ Task
ใน Sharkly การรันที่ผูกกับ task จะประกอบด้วยชื่อและคำอธิบายของ Task คอมเมนต์ล่าสุดและคอมเมนต์ที่เป็นตัวกระตุ้นให้รัน คำสั่งและ Skills ของ Agent และ repository ที่ตั้งค่าไว้สำหรับ Task นั้น นี่คือการส่งต่อ context นั่นคือการรันครั้งถัดไปเริ่มจาก Task ไม่ใช่จากความจำของเซสชันก่อนหน้า ความคืบหน้า trace event และผลลัพธ์จะกลับไปที่ Task และ execution log จะบันทึกว่าทำไมการรันจึงถูกจัดคิว เริ่มและจบเมื่อไร มี tool call อะไรบ้าง แหล่งที่มาของตัวกระตุ้น และรายละเอียดของความล้มเหลว
มีกฎสองข้อจากเอกสารผลิตภัณฑ์ที่กำหนดว่าอะไรควรไปอยู่ที่ไหน และทั้งสองข้อเป็นกฎเรื่องขอบเขตมากกว่าจะเป็นฟีเจอร์ เซสชัน Agent Chat แบบเดี่ยวเป็นของคนที่สร้างขึ้น และสมาชิกคนอื่นจะไม่ได้รับสิทธิ์เข้าถึง หากทีมต้องการข้อสรุป ให้คัดลอกลงในคำอธิบาย Task หรือคอมเมนต์ และ Agent chat บน Task ไม่ใช่คอมเมนต์ เพราะมันไม่ปรากฏใน Activity ดังนั้นการตัดสินใจที่ทำตรงนั้นจะมองไม่เห็น เว้นแต่มีใครสักคนจดมันลงไป บทแนะนำของเราเรื่อง การจัดการโปรเจกต์ด้วย Claude Code แสดงให้เห็น Task ที่พาการเปลี่ยนแปลงตั้งแต่ issue ไปจนถึงขั้นรีวิว
ยังมีความแตกต่างอีกข้อที่ควรยกมาอ้าง เพราะมันคือกับดักที่บทความนี้กำลังพูดถึงพอดี Crew สามารถเปิดใช้การนำ Task directory กลับมาใช้ร่วมกันได้ ทำให้การรันของ Agent สมาชิกรุ่นหลังสืบทอดความเปลี่ยนแปลงในเครื่องของสมาชิกรุ่นก่อนบน Computer เครื่องเดียวกันได้ การตั้งค่านั้นแชร์สถานะของ filesystem ไม่ใช่ provider session ของ Agent ตัวก่อน ไฟล์ส่งต่อกันได้ แต่บทสนทนาของโมเดลส่งต่อไม่ได้ หาก Agent ตัวที่สองต้องการเหตุผลของ Agent ตัวแรก มันต้องอยู่ใน Task
วาง context แต่ละประเภทลงในเลเยอร์ของมัน
| ประเภทของ context | เลเยอร์ | ตัวอย่าง |
|---|---|---|
| กฎที่ยึดถือทุกเซสชัน | ไฟล์คำสั่ง | รันชุดเทสต์ก่อน commit |
| คำแก้ไขหรือ preference | Auto memory | ใช้ pnpm ไม่ใช่ npm |
| การสำรวจที่ยังไม่จบ | Session resume | thread debug ของเมื่อวาน |
| ขั้นตอนที่นำกลับมาใช้ซ้ำได้ซึ่ง Agent หลายตัวใช้ร่วมกัน | Skill | เช็กลิสต์การ release |
| เป้าหมาย ขอบเขต เกณฑ์การยอมรับ | คำอธิบาย Task | requirement ที่กำลังสร้าง |
| การตัดสินใจ หลักฐาน ผลการรีวิว | คอมเมนต์ใน Task | ทำไมจึงเลือกทางเลือก B |
| อะไรที่รัน เมื่อไร และจบอย่างไร | Execution log | การรัน migration ที่ล้มเหลว |
Skill ได้แถวของตัวเอง A Skill รวบรวมคำสั่งและไฟล์ประกอบที่นำกลับมาใช้ซ้ำได้ สำหรับคำแนะนำที่ควรใช้ซ้ำ ๆ และ Skill ที่ค้นพบใน Runtime directory ภายในเครื่องสามารถ import เข้าสู่องค์กรได้ เพื่อไม่ให้มันอยู่แค่ในแล็ปท็อปเครื่องเดียว คู่มือของเราเรื่อง Skills ใน Sharkly ครอบคลุมเรื่อง scope และการ binding และ coding agent skill คืออะไร ครอบคลุมเรื่องรูปแบบไฟล์
ใช้ไฟล์คำสั่งและ auto memory เมื่อ context เป็นเรื่องเกี่ยวกับวิธีทำงานของคุณ ใช้ Task เมื่อ context เป็นเรื่องเกี่ยวกับสิ่งที่ทีมกำลังสร้างและอาจมีคนอื่นต้องอ่าน Sharkly ไม่ได้มาแทนที่ Claude Code, Codex หรือเครื่องมือ execution อื่น ๆ แต่เพิ่มบันทึกที่ใช้ร่วมกันซึ่งเครื่องมือเหล่านั้นไม่ได้เก็บไว้
คำถามที่พบบ่อย
การ /compact ทำให้ CLAUDE.md หายไปไหม? ไม่หาย CLAUDE.md ที่อยู่ root ของโปรเจกต์จะถูกอ่านจากดิสก์ใหม่หลังการ compact ส่วนคำสั่งที่ให้ไว้ในบทสนทนาเท่านั้นอาจหายไป ควรย้ายสิ่งเหล่านั้นเข้าไปในไฟล์
auto memory ถูกแชร์ให้ทีมของฉันไหม? ไม่แชร์ มันถูกเก็บไว้ใต้ home directory ของคุณ แยกตาม repository และไม่ซิงก์ให้ใคร context ที่ทีมควรเห็นควรอยู่ในไฟล์คำสั่งที่ commit เข้า repo หรือบน Task
Agent ใน Sharkly จำการรันครั้งก่อนได้ไหม? มันได้รับ Task คอมเมนต์ล่าสุด และคอมเมนต์ที่เป็นตัวกระตุ้นในทุกการรัน ซึ่งเป็นรูปแบบการจำที่คงทน มันไม่ได้รับบทสนทนาส่วนตัวของการรันครั้งก่อน ดู Agents ใน Sharkly เพื่อรู้ว่าการรันหนึ่งครั้งมีอะไรบ้าง
แล้ว MCP memory server ล่ะ? มันเพิ่มที่เก็บข้อมูลแห่งที่ห้าที่โมเดลสามารถ query ได้ มีประโยชน์สำหรับการเรียกคืนโครงสร้างของ codebase แต่ก็ยังไม่บันทึกว่าใครยอมรับการเปลี่ยนแปลง ดังนั้นควรใช้คู่กับบันทึกงาน ไม่ใช่ใช้แทนกัน



