Claude Code

ส่งงานต่อข้ามแชทแบบไม่เสีย Context ด้วย /handoff

พอคุยยาว ๆ จน AI เริ่มมึน การเปิดแชทใหม่แล้วเล่าใหม่ทั้งหมดคือการเสียเวลาฟรี ๆ มาดูวิธีส่งไม้ต่อให้ Agent ตัวใหม่รับงานได้ทันที ด้วยสกิล /handoff ของ Matt Pocock

เวลาคุยกับ AI นอกจากการเขียน prompt ให้ชัดและให้บริบทครบแล้ว ยังมีอีกเรื่องที่ส่งผลกับคุณภาพงานมากกว่าที่หลายคนคิด นั่นคือการจัดการ context window คือพื้นที่ความจำที่ AI ใช้เก็บทุกอย่างในบทสนทนาปัจจุบัน (บทความก่อนหน้าเรียกสั้น ๆ ว่า context) ปัญหาคลาสสิกที่เจอกันคือ "ยิ่งคุยยิ่งเอ๋อ" คุยไปสักพักแล้วรู้สึกว่า AI เริ่มลืมสิ่งที่ตกลงกันไว้ ตอบวน หรือจับประเด็นพลาด ทั้งที่โมเดลตัวท็อป ๆ ทุกวันนี้โฆษณาว่ารับ context ได้ถึง 1 ล้านโทเคน (token คือหน่วยย่อยของข้อความที่โมเดลใช้นับความยาว)

ทำไม 1 ล้านโทเคนถึงยังไม่พอ

กุญแจสำคัญคือ "รับได้" กับ "ใช้ได้ดี" เป็นคนละเรื่องกัน หน้าต่าง context ไม่ได้ฉลาดเท่ากันตลอดทั้งเส้น ช่วงต้น ๆ ของบทสนทนาโมเดลจดจ่อกับเนื้อหาได้แม่นที่สุด แต่พอโทเคนสะสมมากขึ้นเรื่อย ๆ ความสนใจจะเริ่มกระจายจนจับใจความหลุด Matt Pocock (อ่านว่า "แมตต์ โพค็อก" วิศวกร AI ที่ทำสกิลตัวนี้) อธิบายไว้ตรง ๆ ว่าพอเลยราว ๆ 120,000 โทเคน เขา "รู้สึกเหมือนเข้าสู่โซนมึน (dumb zone) แล้ว" แปลว่าถึงเพดานจะเขียนว่า 1 ล้าน แต่ช่วงที่ทำงานได้คุณภาพจริง ๆ มีอยู่แค่ประมาณ 120K แรกเท่านั้น

หน้าต่าง Context หนึ่งอัน · เพดานสูงสุด ~1,000,000 โทเคน โซนฉลาด โซนมึน ยิ่งไกลยิ่งเบลอ จับประเด็นพลาด ~120K โทเคนแรก ปลายทาง ~1M
ช่วงที่โมเดลจดจ่อได้แม่นจริง ๆ คือ ~120K โทเคนแรก เลยจากนั้นความแม่นจะค่อย ๆ ลดลง

วิธีเดิมที่หลายคนใช้ (แล้วมันเสียเวลาตรงไหน)

พอ context เริ่มเต็มหรือเริ่มมึน คนส่วนใหญ่มีอยู่สองทางเลือกหลัก ๆ ซึ่งทั้งคู่ก็พอใช้ได้ แต่มีจุดอ่อนของมันอยู่

  • ใช้ /compact: สรุปบทสนทนาที่ผ่านมาให้สั้นลงเพื่อคืนพื้นที่ แต่ยังอยู่ในแชทเดิม ต่องานเดิมได้เลย ข้อจำกัดคือมันยัง "ลาก" ทุกเรื่องที่คุยมาไว้ในแชทเดียวกันหมด รวมถึงเรื่องที่ออกทะเลระหว่างทางด้วย งานเดียวจึงกินพื้นที่บวมขึ้นเรื่อย ๆ
  • เปิดแชทใหม่แล้วเริ่มทำงานต่อ: ได้ context โล่ง ๆ กลับมา แต่ต้องมานั่งเล่าเองว่า "เมื่อกี้ทำถึงไหนแล้ว ตกลงอะไรกันไว้บ้าง ไฟล์ไหนที่เกี่ยวข้อง" ทุกครั้งที่ย้ายแชท เท่ากับเสียเวลาปูพื้นใหม่ทั้งหมด และถ้าเล่าตกหล่นไปนิดเดียว AI ตัวใหม่ก็ทำงานพลาดได้ทันที

ขั้นตอน "ย้ายแชทแล้วเล่าใหม่" นี่แหละที่กินเวลาโดยไม่จำเป็น สกิล /handoff เกิดมาเพื่อตัดงานตรงนี้ทิ้งไปเลย

ชื่อสกิลก็บอกใบ้อยู่แล้ว คำว่า handoff อ่านออกเสียงว่า "แฮนด์-ออฟ" แปลว่า "การส่งต่อ" หรือ "ส่งมอบงาน" มาจากศัพท์กีฬาวิ่งผลัดตอนที่นักวิ่งส่งไม้ต่อให้คนถัดไปโดยไม่หยุดวิ่ง ตรงกับสิ่งที่สกิลนี้ทำเป๊ะ คือส่งไม้งานต่อให้ Agent ตัวใหม่รับช่วงวิ่งต่อทันที

/handoff ต่างจาก /compact ยังไง

สองอย่างนี้ฟังดูคล้ายกันเพราะต่างก็ "บีบสรุป" บทสนทนาเหมือนกัน แต่เป้าหมายคนละทางกันเลย

  • /compact = อยู่แชทเดิม: ย่อบทสนทนาลงแล้วทำงานต่อในแชทเดียวกัน เหมาะกับงานยาวเรื่องเดียวที่ไม่อยากตัดขาด
  • /handoff = ส่งต่อไปแชทใหม่: หยิบเฉพาะส่วนที่เกี่ยวข้องออกมาเป็นเอกสารสรุป เพื่อให้ Agent อีกตัว (แชทใหม่) รับไปทำต่อ โดยแชทเดิมยัง "สะอาด" อยู่

ความต่างนี้เปิดทางให้ทำงานแบบแยกสายพร้อมกันได้ เช่นกำลังคุยเรื่องหลักอยู่ แล้วจู่ ๆ เจองานแยกที่ต้องทำ (เช่นต้องไป refactor โมดูลนึงก่อน) แทนที่จะลากงานแยกนั้นมาถมในแชทหลักจน context บวม ก็แค่ /handoff ตัดเฉพาะบริบทที่เกี่ยวกับงานแยกออกไปให้อีกแชททำ ส่วนแชทหลักก็ยังโฟกัสเรื่องเดิมต่อได้แบบไม่มึน ทั้งสองแชทเลยฉลาดพร้อมกันทั้งคู่

Session เดิม context ใกล้เต็ม เริ่มมึน /handoff handoff.md สรุปงาน + ลิงก์ไฟล์ เซฟในโฟลเดอร์ temp อ่านไฟล์นี้ Session ใหม่ รู้งานครบ แต่ context โล่ง
พิมพ์ /handoff ครั้งเดียว แชทเดิมสรุปงานเป็นไฟล์ให้ แล้วแชทใหม่อ่านไฟล์นั้นเพื่อรับงานต่อทันที

ในไฟล์ handoff มีอะไรบ้าง

หัวใจของสกิลนี้คือตัวเอกสารสรุปที่มันเขียนให้ ซึ่งไม่ได้ก๊อปบทสนทนาทั้งหมดมาแปะ แต่คัดมาเฉพาะสิ่งที่ Agent ตัวใหม่ "จำเป็นต้องรู้" เพื่อทำงานต่อ ประกอบด้วย

  • เป้าหมายของ session ใหม่: งานชิ้นถัดไปคืออะไร ต้องทำอะไรให้เสร็จ
  • บริบทที่เกี่ยวข้อง: สิ่งที่คุย/ตัดสินใจกันไปแล้วในแชทเดิม เฉพาะส่วนที่เกี่ยวกับงานถัดไป
  • Skills ที่ควรเรียกใช้: แนะนำว่างานนี้ควรหยิบสกิลตัวไหนมาใช้ต่อ (เช่น /tdd ถ้าเป็นงานที่ควรเขียน test ก่อน)
  • ตัวชี้ไปยังไฟล์/เอกสารเดิม: ชี้เป็น path หรือ URL ไปที่ของจริง (เอกสารสเปก, plan, issue, commit, diff) แทนที่จะก๊อปเนื้อหามาซ้ำ ประหยัด context และไม่มีข้อมูลตกรุ่น

ลองดูตัวอย่างไฟล์ที่มันเขียนออกมา จะเห็นภาพชัดขึ้นว่าทำไมมันสั้นแต่ครบ

handoff-rate-limit.md
# 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 ถัดไปต่อท้ายไปด้วยก็ได้ เพื่อให้มันคัดบริบทมาให้ตรงงานยิ่งขึ้น เช่น

พิมพ์ใน Claude Code
/handoff ทำต่อเฉพาะส่วน rate limiting ของ endpoint login

Claude จะสรุปบทสนทนาปัจจุบันตามโครงด้านบน แล้วเซฟเป็นไฟล์ .md ไว้ในโฟลเดอร์ชั่วคราว (temp) ของระบบ ไม่ใช่ในโฟลเดอร์โปรเจกต์ เพราะมันเป็นแค่ไฟล์ทำงานชั่วคราว ไม่ใช่เอกสารถาวรที่ต้อง commit เก็บไว้ จากนั้นจะส่ง path กลับมาให้ เช่นบน Windows

พาธไฟล์ที่ Claude ส่งกลับมา
C:\Users\USER\AppData\Local\Temp\handoff-a1b2c3.md

ก๊อป path ไปเปิดใน session ใหม่

เปิดแชทใหม่ขึ้นมา (หรือจะเปิดเป็นอีก session คู่ขนานไปเลยก็ได้) แล้วบอกให้มันอ่านไฟล์นั้น เอา path ที่ได้มาวางตรง ๆ

พิมพ์ใน Claude Code (session ใหม่)
อ่านไฟล์ C:\Users\USER\AppData\Local\Temp\handoff-a1b2c3.md แล้วทำงานต่อได้เลย

Agent ตัวใหม่จะอ่านสรุป เปิดไฟล์อ้างอิงที่ระบุไว้ตามต้องการ แล้วเข้าใจงานทั้งหมดทันทีโดยที่เราไม่ต้องเล่าอะไรซ้ำเลย เท่ากับได้ context โล่ง ๆ กลับมาเต็ม ๆ แต่ยังรู้เรื่องงานครบ

ทำงานต่อแบบ context สดใหม่

จากตรงนี้ก็ทำงานยาวต่อได้เลยเหมือนเริ่มใหม่ พองานนี้เริ่มยาวจนมึนอีกรอบ ก็แค่ /handoff ส่งต่ออีกทอดได้เรื่อย ๆ (ในภาพจากต้นทางจะเห็นว่ามีทั้ง handoff.md และ handoff-2.md คือส่งต่อกันเป็นทอด ๆ นั่นเอง)

เคล็ดลับ

เพราะไฟล์ handoff เป็นแค่ markdown ธรรมดา มันเลยข้ามเครื่องมือได้ ไม่ผูกกับ Claude อย่างเดียว จะเอาไฟล์เดียวกันไปให้ AI ตัวอื่นอย่าง Codex หรือ Copilot CLI อ่านต่อก็ได้ เหมาะเวลาอยากได้ความเห็นที่สองจากคนละโมเดลโดยไม่ต้องเล่าเรื่องใหม่

ระวัง

ไฟล์อยู่ในโฟลเดอร์ temp ของระบบ ซึ่งอาจถูกล้างเมื่อไหร่ก็ได้ (เช่นตอนรีสตาร์ตเครื่อง) ถือเป็นไฟล์ใช้แล้วทิ้ง ถ้าอยากเก็บสรุปงานไว้ถาวรจริง ๆ ให้ก๊อปเนื้อหาไปไว้ในโปรเจกต์เอง อย่าพึ่งพา path ใน temp ว่าจะอยู่ตลอด


ติดตั้งสกิลนี้ยังไง

/handoff ไม่ได้เป็นคำสั่งที่ติดมากับ Claude Code ตั้งแต่แรก แต่เป็นสกิลที่ Matt Pocock ทำแจกไว้ (เรื่องสกิลคืออะไร ดูได้ในบทความก่อนหน้า) ติดตั้งได้ด้วยคำสั่งเดียวจาก terminal แล้วทำ setup ตามขั้นตอนสั้น ๆ

bash
npx skills@latest add mattpocock/skills

ระหว่างติดตั้งมันจะถามให้เลือกสกิลและตั้งค่า (ตรงนี้เลือก /setup-matt-pocock-skills ไว้ด้วย) เสร็จแล้วรันคำสั่ง setup ในแชทอีกทีเพื่อบอกค่าพื้นฐาน เช่นใช้ระบบ issue อะไร (GitHub, Linear หรือไฟล์ในเครื่อง) และเก็บเอกสารไว้ที่ไหน

พิมพ์ใน Claude Code
/setup-matt-pocock-skills

ในชุดนี้ไม่ได้มีแค่ /handoff ตัวเดียว ยังมีสกิลอื่นที่ใช้คู่กันได้ดี เช่น /tdd (วนเขียน test ก่อนโค้ด), /grill-me (ให้ AI ซักถามเราจนสเปกงานชัดก่อนเริ่ม) และ /diagnosing-bugs ลองเข้าไปดูใน repo ต้นทางได้ตามลิงก์อ้างอิง

โน้ต

สกิลจากภายนอกก็เหมือนโค้ดจากภายนอกทั่วไป ควรดูสักนิดว่ามันสั่งให้ Claude ทำอะไรบ้างก่อนติดตั้ง โดยเฉพาะสกิลที่รันคำสั่งในเครื่องเราได้ ตัว /handoff ทำแค่สรุปบทสนทนาแล้วเขียนไฟล์ลง temp ถือว่าอ่านง่ายและปลอดภัยดี แต่นิสัยเช็คก่อนติดตั้งควรมีติดตัวไว้เสมอ


แหล่งอ้างอิง

เรียบเรียงและอธิบายใหม่ด้วยคำตัวเอง โดยได้แรงบันดาลใจจากสกิลและบทความของ Matt Pocock ด้านล่าง

  1. "handoff: Move Context Between Agent Sessions" โดย Matt Pocock (AI Hero) · สืบค้นเมื่อ 5 กรกฎาคม 2026
  2. "handoff/SKILL.md" · mattpocock/skills, GitHub, สืบค้นเมื่อ 5 กรกฎาคม 2026
  3. "mattpocock/skills: Skills for Real Engineers" · วิธีติดตั้งและรายการสกิลทั้งหมด, GitHub, สืบค้นเมื่อ 5 กรกฎาคม 2026
  4. "Extend Claude with skills" · Claude Code Docs, Anthropic, สืบค้นเมื่อ 5 กรกฎาคม 2026