Dictionary · เครื่องมือและสภาพแวดล้อม · 93 / 291

Hook

คำสั่งที่ตั้งไว้ให้ทำงานเองอัตโนมัติทุกครั้งที่ AI ถึงจังหวะที่กำหนด เช่น ก่อนเรียกเครื่องมือ ใช้บังคับกติกาที่ห้ามพลาด

Hook คือคำสั่งที่เราตั้งไว้ล่วงหน้าให้ทำงานเองโดยอัตโนมัติเมื่อ AI ทำงานมาถึงจังหวะที่กำหนด เอกสารของ claude-code นิยามไว้ว่า "Hooks are user-defined shell commands, HTTP endpoints, or LLM prompts that execute automatically at specific points in Claude Code's lifecycle." จังหวะที่ใช้บ่อยที่สุดมีสามระดับ คือระดับ session อย่าง SessionStart และ SessionEnd ระดับรอบสนทนาอย่าง UserPromptSubmit และ Stop และระดับการเรียกเครื่องมือทุกครั้งอย่าง PreToolUse กับ PostToolUse การตั้งค่าวางได้หลายชั้น ตั้งแต่ระดับผู้ใช้ที่ ~/.claude/settings.json ระดับโปรเจกต์ที่ commit ขึ้น repo ให้ทีมใช้ร่วมกัน ไปจนถึงระดับที่องค์กรบังคับจากส่วนกลาง

จุดที่ทำให้ hook สำคัญกว่าที่คนคิดคือมันเป็นชั้นบังคับจริง ต่างจากคำสั่งที่เราเขียนใส่ไฟล์แนะนำอย่าง claude-md ซึ่งเป็นเพียงบริบทที่โมเดลอ่านแล้วพยายามทำตาม เอกสารระบุตรงๆ ว่าถ้าต้องการบล็อกการกระทำใดให้ได้แน่นอนไม่ว่าโมเดลจะตัดสินใจอย่างไร ให้ใช้ hook แบบ PreToolUse แทนการเขียนกำชับในไฟล์แนะนำ กลไกการควบคุมทำผ่านรหัสสถานะที่ hook คืนกลับมา ถ้าคืนค่า 0 แปลว่าผ่าน ถ้าคืนค่า 2 แปลว่าบล็อก และข้อความที่เขียนออกทาง stderr จะถูกส่งกลับไปให้ AI อ่านเป็นเหตุผล นอกจากนี้ยังคืนค่าเป็น JSON เพื่อสั่งอนุญาตหรือปฏิเสธพร้อมเหตุผล หรือแทรกบริบทเพิ่มให้ AI อ่านได้ด้วย

ตัวอย่างการใช้งานที่เห็นภาพชัดที่สุดมีสามแบบ แบบแรกคือบล็อกคำสั่งอันตราย เช่น ดักทุกครั้งที่จะรันคำสั่งลบไฟล์แบบกวาดทั้งโฟลเดอร์แล้วปฏิเสธทันที แบบที่สองคือรัน linter หรือ formatter ให้อัตโนมัติทุกครั้งหลัง AI แก้ไฟล์เสร็จ ทำให้โค้ดที่ออกมาผ่านมาตรฐานของทีมเสมอโดยไม่ต้องคอยเตือน แบบที่สามคือส่งเหตุการณ์ออกไปยังระบบภายนอกผ่าน HTTP เพื่อทำบันทึกการตรวจสอบว่า AI ทำอะไรไปบ้าง ซึ่งเป็นสิ่งที่องค์กรที่ต้องผ่านการตรวจสอบมักต้องมี สำหรับทีมไทยที่เริ่มให้ AI แตะระบบจริง หลักที่ควรยึดคือกติกาที่ผิดแล้วเสียหายหนักควรอยู่ใน hook ไม่ใช่อยู่ในคำสั่งที่เขียนกำชับไว้เฉยๆ เพราะอย่างแรกบังคับได้จริง ส่วนอย่างหลังเป็นเพียงคำแนะนำที่โมเดลอาจทำตามหรือไม่ก็ได้

ตัวอย่างจากบทสนทนาจริง

หัวหน้าทีม: "ผมเขียนไว้ใน CLAUDE.md แล้วนะว่าห้ามแก้ไฟล์ใน migrations เอง แต่มันก็ยังแก้อยู่ดีบางครั้ง ทำไงดีครับ"

สถาปนิกระบบ: "เพราะไฟล์แนะนำเป็นแค่บริบทที่โมเดลอ่านแล้วพยายามทำตามครับ ไม่ใช่กฎที่บังคับได้ ถ้าเรื่องนี้ผิดแล้วเสียหายจริง ให้ย้ายไปเป็น hook แบบ PreToolUse ที่ดักทุกครั้งที่จะเขียนไฟล์ แล้วเช็กว่า path อยู่ใน migrations หรือเปล่า ถ้าใช่ให้คืนค่าปฏิเสธพร้อมเหตุผล แบบนี้ไม่ว่าโมเดลจะคิดยังไงมันก็แก้ไม่ได้ครับ แล้ว commit ไฟล์ตั้งค่าขึ้น repo ด้วย ทั้งทีมจะได้กติกาเดียวกัน"

ระวังสับสนกับ

  • claude-md : CLAUDE.md เป็นคำแนะนำที่โมเดลอ่านเป็นบริบทแล้วพยายามทำตาม ส่วน hook เป็นโค้ดที่ระบบรันให้จริงตามจังหวะที่กำหนด ไม่ขึ้นกับว่าโมเดลตัดสินใจอย่างไร กติกาที่ห้ามพลาดควรอยู่ที่ hook
  • permission-mode : permission mode คือระดับการขออนุญาตแบบกว้างที่ตั้งไว้ทั้ง session ส่วน hook ให้เราเขียนเงื่อนไขเฉพาะเจาะจงของเราเองได้ เช่น อนุญาตคำสั่ง git ทุกตัวยกเว้น push ไปที่ branch หลัก
  • automated-check : automated check คือการตรวจที่คอมพิวเตอร์รันเองอย่างเทสต์หรือ lint ซึ่งเป็นตัวงาน ส่วน hook คือกลไกที่ทำให้การตรวจนั้นถูกเรียกอัตโนมัติในจังหวะที่ถูกต้อง คนหนึ่งเป็นสิ่งที่ทำ อีกคนเป็นตัวสั่งให้ทำ

ดูคำนี้ใน Knowledge Atlas →

■ ไม่อยากพลาดของใหม่

อ่านจบแล้วอยากตามเรื่อง AI แบบนี้ต่อทุกวัน เรามีสรุปข่าวภาษาไทยส่งทาง LINE ทุกเช้า กดเพิ่มเพื่อนไว้ได้เลย ไม่มีค่าใช้จ่าย

เพิ่มเพื่อนใน LINE →
QR เพิ่มเพื่อน LINE ของ TRAINIAC AIคอมพิวเตอร์สแกนด้วยมือถือได้เลย

Headless modeMCP