Claude Code Hooks คืออะไร และวิธีใช้งาน

Rebecca Kovács

Rebecca Kovács

2 July 2025

Claude Code Hooks คืออะไร และวิธีใช้งาน

สำหรับ Vibe Coders เครื่องมืออย่าง Claude Code ของ Anthropic กำลังพลิกโฉมวิธีการที่นักพัฒนาเขียนโค้ด ดีบั๊ก และจัดการโปรเจกต์ของพวกเขา Claude Code ทำหน้าที่เป็น "เครื่องมือเขียนโค้ดแบบ agentic" ที่ทำงานอยู่ในเทอร์มินัลของคุณ สามารถเข้าใจโค้ดเบสทั้งหมดของคุณ โต้ตอบกับระบบไฟล์ของคุณ รันคำสั่ง และแม้แต่เรียกดูเว็บเพื่อค้นหาเอกสารประกอบ มันเก่งกาจในงานต่างๆ เช่น การเขียนฟีเจอร์ใหม่ การแก้ไขบั๊ก และการปรับโครงสร้างโค้ดผ่านข้อความสั่งที่เป็นภาษามนุษย์

อย่างไรก็ตาม คุณลักษณะหลักของ Large Language Models (LLMs) คือธรรมชาติของการสุ่ม (probabilistic nature) แม้ว่าสิ่งนี้จะช่วยให้สามารถแก้ปัญหาได้อย่างสร้างสรรค์ แต่บางครั้งก็อาจนำไปสู่ความไม่แน่นอนได้ คุณอาจต้องการให้การกระทำบางอย่าง เช่น การตรวจสอบรูปแบบโค้ด (linting) ไฟล์หลังจากที่มีการเปลี่ยนแปลง หรือการรันการทดสอบหลังจากเขียนฟังก์ชันใหม่ ให้เกิดขึ้น ทุกครั้ง โดยไม่ผิดพลาด การพึ่งพา LLM ให้จำและทำสิ่งเหล่านี้ในทุกกรณีอาจไม่สอดคล้องกัน

นี่คือจุดที่ Claude Code Hooks เข้ามามีบทบาท Hooks เป็นฟีเจอร์ที่ทรงพลังที่ให้การควบคุมพฤติกรรมของ Claude Code แบบกำหนดได้ (deterministic) และเป็นโปรแกรม ทำให้มั่นใจได้ว่าการกระทำบางอย่างจะเกิดขึ้นเสมอ แทนที่จะต้องพึ่งพา LLM ในการเลือกที่จะรันมัน

💡
ต้องการเครื่องมือทดสอบ API ที่ยอดเยี่ยมที่สร้าง เอกสารประกอบ API ที่สวยงาม ใช่ไหม?

ลองใช้ Apidog MCP Server ที่ช่วยให้คุณสร้างโค้ดที่แม่นยำโดยการอ่านจากข้อกำหนด API ของคุณ!
ปุ่ม

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

Claude Code Hooks คืออะไร?

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

Hooks เชื่อมช่องว่างระหว่างความช่วยเหลือที่ขับเคลื่อนด้วย AI และระบบอัตโนมัติที่อิงตามกฎเกณฑ์ พวกมันช่วยให้คุณสามารถบังคับใช้มาตรฐาน ทำงานซ้ำๆ ให้เป็นอัตโนมัติ และรวมเครื่องมือภายนอกเข้ากับเวิร์กโฟลว์ของคุณได้อย่างราบรื่นและเชื่อถือได้เต็มที่

มีเหตุการณ์สำคัญในวงจรชีวิตสี่เหตุการณ์ที่สามารถเรียกใช้ hook ได้:

  1. PreToolUse: ทำงาน ก่อน ที่ Claude จะใช้เครื่องมือเฉพาะ (เช่น ก่อนเขียนลงในไฟล์)
  2. PostToolUse: ทำงาน หลังจาก ที่เครื่องมือถูกใช้งานสำเร็จแล้ว (เช่น หลังจากไฟล์ถูกแก้ไข)
  3. Notification: ทำงานเมื่อใดก็ตามที่ Claude ส่งการแจ้งเตือน (เช่น เมื่อต้องการข้อมูลจากผู้ใช้ หรือทำงานที่ใช้เวลานานเสร็จสิ้น)
  4. Stop: ทำงานเมื่อ Claude สร้างการตอบสนองเสร็จสิ้นและหยุดทำงาน

ด้วยการกำหนดเป้าหมายเหตุการณ์เหล่านี้ คุณสามารถสร้างระบบอัตโนมัติที่ทรงพลังซึ่งสะท้อนแนวปฏิบัติที่ดีที่สุดของการพัฒนาซอฟต์แวร์สมัยใหม่ เช่น การตรวจสอบ Continuous Integration (CI) แต่ทำงานด้วยความเร็วของการพัฒนาในเครื่อง

โครงสร้างของ Claude Code Hooks: การเจาะลึกการกำหนดค่า

ในการใช้ hooks คุณต้องกำหนดพวกมันในไฟล์การตั้งค่า Claude Code ของคุณ ทำได้โดยการเพิ่มตาราง [[hooks]] ลงในไฟล์ settings.toml ซึ่งอยู่ในไดเรกทอรี .claude/ ภายในโปรเจกต์ของคุณ การกำหนดค่า hook แต่ละรายการมีส่วนประกอบหลักบางอย่าง

# Example Hook in .claude/settings.toml

[[hooks]]
# The event that triggers the hook.
event = "PostToolUse" 

# (Optional) Conditions for the hook to run.
[hooks.matcher]
tool_name = "edit_file"
file_paths = ["*.py", "api/**/*.py"]

# The shell command to execute.
command = "ruff check --fix $CLAUDE_FILE_PATHS && black $CLAUDE_FILE_PATHS"

# (Optional) Whether to run the command in the background.
run_in_background = false 

มาเจาะลึกแต่ละส่วนกัน

ฟิลด์ event ใน Claude Code Hooks (จำเป็น)

สตริงนี้ระบุว่าเหตุการณ์ในวงจรชีวิตทั้งสี่เหตุการณ์ใดที่จะเรียกใช้ hook

hooks.matcher ใน Claude Code Hooks (ทางเลือก)

matcher คือสิ่งที่ช่วยให้คุณกำหนดได้อย่างแม่นยำว่า hook ควรทำงาน เมื่อใด หากคุณละเว้น matcher hook จะทำงานสำหรับทุกเหตุการณ์ที่ระบุ ตัวอย่างเช่น PostToolUse hook ที่ไม่มี matcher จะทำงานหลังจากเรียกใช้เครื่องมือ ทุกครั้ง

matcher มีสามฟิลด์ที่คุณสามารถใช้เพื่อกรองเหตุการณ์ได้:

ฟิลด์ command สำหรับ Claude Code Hooks (จำเป็น)

นี่คือหัวใจของ hook — คำสั่งเชลล์ที่จะถูกเรียกใช้เมื่อเงื่อนไขทริกเกอร์เป็นจริง คำสั่งนี้ทำงานด้วยสิทธิ์เดียวกับบัญชีผู้ใช้ของคุณ ดังนั้นจึงสามารถทำอะไรก็ได้ที่คุณสามารถทำได้ในเทอร์มินัลของคุณ

เพื่อให้คำสั่งมีความไดนามิก Claude Code มีชุดตัวแปรสภาพแวดล้อมที่ถูกเติมด้วยบริบทจากเหตุการณ์ที่เรียกใช้ hook

ตัวแปรสภาพแวดล้อมที่พร้อมใช้งาน:

การตั้งค่า run_in_background สำหรับ Claude Code Hooks (ทางเลือก)

นี่คือค่าบูลีน (`true` หรือ `false`) หากตั้งค่าเป็น `true` คำสั่งของ hook จะถูกดำเนินการในกระบวนการแยกต่างหาก และ Claude จะไม่รอให้เสร็จสิ้นก่อนที่จะดำเนินการต่อ เหมาะสำหรับงานที่ใช้เวลานาน เช่น ชุดทดสอบที่ครอบคลุม หรือกระบวนการสร้าง (build processes) ที่คุณไม่ต้องการให้ขัดขวางการกระทำถัดไปของ Claude ค่าเริ่มต้นคือ `false`

กรณีการใช้งานจริงและตัวอย่างสำหรับ Claude Code Hooks

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

1. การตรวจสอบรูปแบบโค้ดและการจัดรูปแบบอัตโนมัติด้วย Claude Code Hooks

บังคับใช้สไตล์โค้ดที่สอดคล้องกันทั่วทั้งโปรเจกต์ของคุณโดยอัตโนมัติ hook นี้จะรัน ruff linter และ black formatter บนไฟล์ Python ใดๆ ที่ Claude แก้ไข

ไฟล์: .claude/settings.toml

[[hooks]]
event = "PostToolUse"

[hooks.matcher]
tool_name = "edit_file"
file_paths = ["*.py"]

# Command to lint, fix, and format the edited Python files.
command = "echo 'Running auto-formatter...' && ruff check --fix $CLAUDE_FILE_PATHS && black $CLAUDE_FILE_PATHS"

2. การรันการทดสอบอัตโนมัติด้วย Claude Code Hooks

แนวปฏิบัติหลักของการพัฒนาแบบทดสอบนำ (Test-Driven Development - TDD) คือการเขียนการทดสอบแล้วจึงเขียนโค้ดเพื่อให้ผ่านการทดสอบเหล่านั้น ทำซ้ำจนกว่าทุกอย่างจะทำงาน คุณสามารถทำให้ขั้นตอน "รันการทดสอบ" เป็นอัตโนมัติด้วย hook ตัวอย่างนี้จะรัน pytest เมื่อใดก็ตามที่ไฟล์ในไดเรกทอรี src/ หรือ tests/ ถูกแก้ไข

ไฟล์: .claude/settings.toml

[[hooks]]
event = "PostToolUse"
run_in_background = true # Tests can be slow, run in background.

[hooks.matcher]
tool_name = "edit_file"
file_paths = ["src/**/*.py", "tests/**/*.py"]

# Command to run the test suite.
command = "pytest"

3. การแจ้งเตือนบนเดสก์ท็อปแบบกำหนดเองผ่าน Claude Code Hooks

หากคุณขอให้ Claude ทำงานที่ใช้เวลานาน คุณอาจจะลุกออกจากคอมพิวเตอร์ hook นี้ใช้เครื่องมือบรรทัดคำสั่งเช่น ntfy (บริการแจ้งเตือนแบบ pub-sub ที่ใช้ HTTP อย่างง่าย) เพื่อส่งการแจ้งเตือนแบบพุชไปยังโทรศัพท์หรือเดสก์ท็อปของคุณเมื่อ Claude ต้องการความสนใจจากคุณ

ไฟล์: .claude/settings.toml

[[hooks]]
event = "Notification"

# Sends the notification content to a public ntfy.sh topic.
# You can host your own for privacy.
command = 'ntfy publish my-claude-alerts "$CLAUDE_NOTIFICATION"'

4. การตรวจสอบความถูกต้องก่อนคอมมิตโดยใช้ Claude Code Hooks

เช่นเดียวกับ Git hooks คุณสามารถใช้ Claude Code Hooks เพื่อรับประกันคุณภาพ ก่อน ที่จะมีการคอมมิต ตัวอย่างนี้จะรันสคริปต์ที่กำหนดเองเพื่อตรวจสอบคีย์ API หรือดำเนินการตรวจสอบความถูกต้องอื่นๆ ก่อนที่ Claude จะได้รับอนุญาตให้ใช้เครื่องมือ git_commit

ไฟล์: .claude/settings.toml

[[hooks]]
event = "PreToolUse"

[hooks.matcher]
tool_name = "git_commit"

# Command to run a pre-commit check script.
# The script should exit with a non-zero code to halt the commit.
command = "sh ./.claude/pre-commit-checks.sh"

การตั้งค่าและการดีบั๊ก Claude Code Hooks ของคุณ

การเริ่มต้นใช้งาน hooks นั้นตรงไปตรงมา แต่การตรวจสอบและการดีบั๊กเป็นกุญแจสำคัญในการทำให้แน่ใจว่าพวกมันทำงานได้ตามที่คาดไว้

  1. สร้างการกำหนดค่าของคุณ: ตรวจสอบให้แน่ใจว่าคุณมีไฟล์ .claude/settings.toml อยู่ในไดเรกทอรีรูทของโปรเจกต์ของคุณ เพิ่มการกำหนดค่า [[hooks]] ของคุณที่นั่น
  2. ตรวจสอบการกำหนดค่า: หลังจากบันทึกไฟล์ settings.toml ของคุณ ให้รันคำสั่ง /hooks ภายในอินเทอร์เฟซเทอร์มินัลของ Claude Code คำสั่งพิเศษนี้จะแสดงการกำหนดค่า hook ที่โหลดอยู่ในปัจจุบัน ทำให้คุณสามารถดูได้ทันทีว่า Claude ได้แยกวิเคราะห์อย่างถูกต้องหรือไม่
  3. ตรวจสอบข้อผิดพลาด:

บทสรุป: พลังของ Claude Code Hooks

Claude Code Hooks ยกระดับเครื่องมือนี้จากผู้ช่วยเขียนโค้ดที่มีความสามารถสูงให้กลายเป็นพันธมิตรการพัฒนาที่บูรณาการอย่างสมบูรณ์และทำงานแบบกำหนดได้ (deterministic) ด้วยการกำหนดกฎง่ายๆ แต่ทรงพลัง คุณสามารถทำให้ส่วนที่น่าเบื่อแต่สำคัญของเวิร์กโฟลว์ของคุณเป็นอัตโนมัติ ทำให้คุณมีอิสระในการมุ่งเน้นไปที่แง่มุมที่ซับซ้อนและสร้างสรรค์ของวิศวกรรมซอฟต์แวร์ ไม่ว่าจะเป็นการบังคับใช้คุณภาพโค้ด การทำให้วงจร TDD ของคุณง่ายขึ้น หรือการรวมเข้ากับบริการของบุคคลที่สาม hooks ก็มอบเฟรมเวิร์กที่แข็งแกร่งซึ่งจำเป็นในการปรับแต่ง Claude Code ให้ตรงกับความต้องการเฉพาะของคุณ

เมื่อคุณคุ้นเคยกับความสามารถของ Claude Code มากขึ้น ให้เริ่มต้นเล็กๆ ด้วย hook การจัดรูปแบบง่ายๆ แล้วจึงสำรวจระบบอัตโนมัติที่ซับซ้อนมากขึ้น คุณจะพบว่าฟีเจอร์นี้จำเป็นอย่างยิ่งสำหรับการสร้างสภาพแวดล้อมการพัฒนาที่คาดเดาได้ มีประสิทธิภาพ และเป็นส่วนตัวอย่างแท้จริงด้วย AI

💡
ต้องการเครื่องมือทดสอบ API ที่ยอดเยี่ยมที่สร้าง เอกสารประกอบ API ที่สวยงาม ใช่ไหม?

ลองใช้ Apidog MCP Server ที่ช่วยให้คุณสร้างโค้ดที่แม่นยำโดยการอ่านจากข้อกำหนด API ของคุณ!
ปุ่ม

ฝึกการออกแบบ API แบบ Design-first ใน Apidog

ค้นพบวิธีที่ง่ายขึ้นในการสร้างและใช้ API