/handoffพอคุยยาว ๆ จน AI เริ่มมึน การเปิดแชทใหม่แล้วเล่าใหม่ทั้งหมดคือการเสียเวลาฟรี ๆ มาดูวิธีส่งไม้ต่อให้ Agent ตัวใหม่รับงานได้ทันที ด้วยสกิล /handoff ของ Matt Pocock
เวลาคุยกับ AI นอกจากการเขียน prompt ให้ชัดและให้บริบทครบแล้ว ยังมีอีกเรื่องที่ส่งผลกับคุณภาพงานมากกว่าที่หลายคนคิด นั่นคือการจัดการ context window คือพื้นที่ความจำที่ AI ใช้เก็บทุกอย่างในบทสนทนาปัจจุบัน (บทความก่อนหน้าเรียกสั้น ๆ ว่า context) ปัญหาคลาสสิกที่เจอกันคือ "ยิ่งคุยยิ่งเอ๋อ" คุยไปสักพักแล้วรู้สึกว่า AI เริ่มลืมสิ่งที่ตกลงกันไว้ ตอบวน หรือจับประเด็นพลาด ทั้งที่โมเดลตัวท็อป ๆ ทุกวันนี้โฆษณาว่ารับ context ได้ถึง 1 ล้านโทเคน (token คือหน่วยย่อยของข้อความที่โมเดลใช้นับความยาว)
กุญแจสำคัญคือ "รับได้" กับ "ใช้ได้ดี" เป็นคนละเรื่องกัน หน้าต่าง context ไม่ได้ฉลาดเท่ากันตลอดทั้งเส้น ช่วงต้น ๆ ของบทสนทนาโมเดลจดจ่อกับเนื้อหาได้แม่นที่สุด แต่พอโทเคนสะสมมากขึ้นเรื่อย ๆ ความสนใจจะเริ่มกระจายจนจับใจความหลุด Matt Pocock (อ่านว่า "แมตต์ โพค็อก" วิศวกร AI ที่ทำสกิลตัวนี้) อธิบายไว้ตรง ๆ ว่าพอเลยราว ๆ 120,000 โทเคน เขา "รู้สึกเหมือนเข้าสู่โซนมึน (dumb zone) แล้ว" แปลว่าถึงเพดานจะเขียนว่า 1 ล้าน แต่ช่วงที่ทำงานได้คุณภาพจริง ๆ มีอยู่แค่ประมาณ 120K แรกเท่านั้น
พอ context เริ่มเต็มหรือเริ่มมึน คนส่วนใหญ่มีอยู่สองทางเลือกหลัก ๆ ซึ่งทั้งคู่ก็พอใช้ได้ แต่มีจุดอ่อนของมันอยู่
/compact: สรุปบทสนทนาที่ผ่านมาให้สั้นลงเพื่อคืนพื้นที่ แต่ยังอยู่ในแชทเดิม ต่องานเดิมได้เลย
ข้อจำกัดคือมันยัง "ลาก" ทุกเรื่องที่คุยมาไว้ในแชทเดียวกันหมด รวมถึงเรื่องที่ออกทะเลระหว่างทางด้วย งานเดียวจึงกินพื้นที่บวมขึ้นเรื่อย ๆ
ขั้นตอน "ย้ายแชทแล้วเล่าใหม่" นี่แหละที่กินเวลาโดยไม่จำเป็น สกิล /handoff เกิดมาเพื่อตัดงานตรงนี้ทิ้งไปเลย
ชื่อสกิลก็บอกใบ้อยู่แล้ว คำว่า handoff อ่านออกเสียงว่า "แฮนด์-ออฟ" แปลว่า "การส่งต่อ" หรือ "ส่งมอบงาน" มาจากศัพท์กีฬาวิ่งผลัดตอนที่นักวิ่งส่งไม้ต่อให้คนถัดไปโดยไม่หยุดวิ่ง ตรงกับสิ่งที่สกิลนี้ทำเป๊ะ คือส่งไม้งานต่อให้ Agent ตัวใหม่รับช่วงวิ่งต่อทันที
/handoff ต่างจาก /compact ยังไงสองอย่างนี้ฟังดูคล้ายกันเพราะต่างก็ "บีบสรุป" บทสนทนาเหมือนกัน แต่เป้าหมายคนละทางกันเลย
/compact = อยู่แชทเดิม: ย่อบทสนทนาลงแล้วทำงานต่อในแชทเดียวกัน เหมาะกับงานยาวเรื่องเดียวที่ไม่อยากตัดขาด/handoff = ส่งต่อไปแชทใหม่: หยิบเฉพาะส่วนที่เกี่ยวข้องออกมาเป็นเอกสารสรุป เพื่อให้ Agent อีกตัว (แชทใหม่) รับไปทำต่อ โดยแชทเดิมยัง "สะอาด" อยู่
ความต่างนี้เปิดทางให้ทำงานแบบแยกสายพร้อมกันได้ เช่นกำลังคุยเรื่องหลักอยู่ แล้วจู่ ๆ เจองานแยกที่ต้องทำ (เช่นต้องไป refactor โมดูลนึงก่อน)
แทนที่จะลากงานแยกนั้นมาถมในแชทหลักจน context บวม ก็แค่ /handoff ตัดเฉพาะบริบทที่เกี่ยวกับงานแยกออกไปให้อีกแชททำ
ส่วนแชทหลักก็ยังโฟกัสเรื่องเดิมต่อได้แบบไม่มึน ทั้งสองแชทเลยฉลาดพร้อมกันทั้งคู่
/handoff ครั้งเดียว แชทเดิมสรุปงานเป็นไฟล์ให้ แล้วแชทใหม่อ่านไฟล์นั้นเพื่อรับงานต่อทันทีหัวใจของสกิลนี้คือตัวเอกสารสรุปที่มันเขียนให้ ซึ่งไม่ได้ก๊อปบทสนทนาทั้งหมดมาแปะ แต่คัดมาเฉพาะสิ่งที่ Agent ตัวใหม่ "จำเป็นต้องรู้" เพื่อทำงานต่อ ประกอบด้วย
/tdd ถ้าเป็นงานที่ควรเขียน test ก่อน)ลองดูตัวอย่างไฟล์ที่มันเขียนออกมา จะเห็นภาพชัดขึ้นว่าทำไมมันสั้นแต่ครบ
# Handoff: เพิ่ม rate limiting ให้ endpoint login
## เป้าหมายของ session ใหม่
ทำ middleware จำกัดจำนวน request ต่อ IP ให้ POST /api/login
## บริบทที่ตกลงกันไว้แล้ว
- ใช้ sliding window เก็บ counter ไว้ใน Redis
- limit ที่ 5 ครั้ง ต่อ 15 นาที ต่อ 1 IP
- ตอบ 429 พร้อม header Retry-After เมื่อเกิน
## Skills ที่ควรเรียกใช้
- /tdd เขียน test ให้ครอบเคสเกิน limit ก่อนลงมือ
## ไฟล์และอ้างอิงที่เกี่ยวข้อง (ของจริงอยู่ที่นี่)
- สเปก: docs/rate-limit-prd.md
- middleware เดิมให้ดูเป็นแบบ: src/middleware/auth.ts
- Issue ต้นเรื่อง: github.com/org/repo/issues/482 โน้ต
ตอนสร้างไฟล์ สกิลนี้จะลบข้อมูลอ่อนไหวออกให้โดยอัตโนมัติ เช่น API key, รหัสผ่าน หรือข้อมูลส่วนตัว (PII) จะได้ไม่มีความลับหลุดติดไปในไฟล์ที่เอาไปส่งต่อ
/handoff ให้มันสรุปงานให้
พอถึงจังหวะที่ context เริ่มเยอะ หรืออยากแตกงานแยกออกไป ก็แค่พิมพ์ /handoff ในแชทที่ทำงานอยู่
จะพิมพ์บอกโฟกัสของ session ถัดไปต่อท้ายไปด้วยก็ได้ เพื่อให้มันคัดบริบทมาให้ตรงงานยิ่งขึ้น เช่น
/handoff ทำต่อเฉพาะส่วน rate limiting ของ endpoint login
Claude จะสรุปบทสนทนาปัจจุบันตามโครงด้านบน แล้วเซฟเป็นไฟล์ .md ไว้ในโฟลเดอร์ชั่วคราว (temp) ของระบบ
ไม่ใช่ในโฟลเดอร์โปรเจกต์ เพราะมันเป็นแค่ไฟล์ทำงานชั่วคราว ไม่ใช่เอกสารถาวรที่ต้อง commit เก็บไว้ จากนั้นจะส่ง path กลับมาให้ เช่นบน Windows
C:\Users\USER\AppData\Local\Temp\handoff-a1b2c3.md เปิดแชทใหม่ขึ้นมา (หรือจะเปิดเป็นอีก session คู่ขนานไปเลยก็ได้) แล้วบอกให้มันอ่านไฟล์นั้น เอา path ที่ได้มาวางตรง ๆ
อ่านไฟล์ C:\Users\USER\AppData\Local\Temp\handoff-a1b2c3.md แล้วทำงานต่อได้เลย Agent ตัวใหม่จะอ่านสรุป เปิดไฟล์อ้างอิงที่ระบุไว้ตามต้องการ แล้วเข้าใจงานทั้งหมดทันทีโดยที่เราไม่ต้องเล่าอะไรซ้ำเลย เท่ากับได้ context โล่ง ๆ กลับมาเต็ม ๆ แต่ยังรู้เรื่องงานครบ
จากตรงนี้ก็ทำงานยาวต่อได้เลยเหมือนเริ่มใหม่ พองานนี้เริ่มยาวจนมึนอีกรอบ ก็แค่ /handoff ส่งต่ออีกทอดได้เรื่อย ๆ
(ในภาพจากต้นทางจะเห็นว่ามีทั้ง handoff.md และ handoff-2.md คือส่งต่อกันเป็นทอด ๆ นั่นเอง)
เคล็ดลับ
เพราะไฟล์ handoff เป็นแค่ markdown ธรรมดา มันเลยข้ามเครื่องมือได้ ไม่ผูกกับ Claude อย่างเดียว จะเอาไฟล์เดียวกันไปให้ AI ตัวอื่นอย่าง Codex หรือ Copilot CLI อ่านต่อก็ได้ เหมาะเวลาอยากได้ความเห็นที่สองจากคนละโมเดลโดยไม่ต้องเล่าเรื่องใหม่
ระวัง
ไฟล์อยู่ในโฟลเดอร์ temp ของระบบ ซึ่งอาจถูกล้างเมื่อไหร่ก็ได้ (เช่นตอนรีสตาร์ตเครื่อง) ถือเป็นไฟล์ใช้แล้วทิ้ง ถ้าอยากเก็บสรุปงานไว้ถาวรจริง ๆ ให้ก๊อปเนื้อหาไปไว้ในโปรเจกต์เอง อย่าพึ่งพา path ใน temp ว่าจะอยู่ตลอด
/handoff ไม่ได้เป็นคำสั่งที่ติดมากับ Claude Code ตั้งแต่แรก แต่เป็นสกิลที่ Matt Pocock ทำแจกไว้ (เรื่องสกิลคืออะไร ดูได้ในบทความก่อนหน้า)
ติดตั้งได้ด้วยคำสั่งเดียวจาก terminal แล้วทำ setup ตามขั้นตอนสั้น ๆ
npx skills@latest add mattpocock/skills
ระหว่างติดตั้งมันจะถามให้เลือกสกิลและตั้งค่า (ตรงนี้เลือก /setup-matt-pocock-skills ไว้ด้วย) เสร็จแล้วรันคำสั่ง setup ในแชทอีกทีเพื่อบอกค่าพื้นฐาน
เช่นใช้ระบบ issue อะไร (GitHub, Linear หรือไฟล์ในเครื่อง) และเก็บเอกสารไว้ที่ไหน
/setup-matt-pocock-skills
ในชุดนี้ไม่ได้มีแค่ /handoff ตัวเดียว ยังมีสกิลอื่นที่ใช้คู่กันได้ดี เช่น /tdd (วนเขียน test ก่อนโค้ด),
/grill-me (ให้ AI ซักถามเราจนสเปกงานชัดก่อนเริ่ม) และ /diagnosing-bugs ลองเข้าไปดูใน repo ต้นทางได้ตามลิงก์อ้างอิง
โน้ต
สกิลจากภายนอกก็เหมือนโค้ดจากภายนอกทั่วไป ควรดูสักนิดว่ามันสั่งให้ Claude ทำอะไรบ้างก่อนติดตั้ง โดยเฉพาะสกิลที่รันคำสั่งในเครื่องเราได้
ตัว /handoff ทำแค่สรุปบทสนทนาแล้วเขียนไฟล์ลง temp ถือว่าอ่านง่ายและปลอดภัยดี แต่นิสัยเช็คก่อนติดตั้งควรมีติดตัวไว้เสมอ
เรียบเรียงและอธิบายใหม่ด้วยคำตัวเอง โดยได้แรงบันดาลใจจากสกิลและบทความของ Matt Pocock ด้านล่าง