0 XP
0
G

พร้อมฝึกจริงแล้วหรือยัง?

เนื้อหาฉบับเต็มของบทเรียนนี้อยู่ด้านล่าง อ่านได้ฟรีทุกคน ให้คิดว่ามันคือแผนที่ บัญชีฟรีจะเพิ่มเส้นทางแบบมีคำแนะนำ: แบบฝึกหัดลงมือทำ ความคืบหน้าที่บันทึกไว้ และทุกบทเรียนต่อจากบทก่อนหน้า ไม่ต้องใช้บัตรเครดิต

บทเรียนถัดไป: ฮุกและระบบอัตโนมัติ

สมัครสมาชิกด้วยอีเมล

มีบัญชีอยู่แล้ว? ลงชื่อเข้าใช้

ฮุกและระบบอัตโนมัติ

เชื่อมโยงฮุก SessionStart เพื่อโหลดบริบทโดยอัตโนมัติ ใช้ PreToolUse เพื่อบล็อกคำสั่งอันตราย รัน Claude บน cron พร้อมเกตการอนุมัติ

ฮุก (Hooks) คือคำสั่งที่ Claude Code รันในเหตุการณ์วงจรชีวิตที่เฉพาะเจาะจง กำหนดค่าเพียงครั้งเดียวใน ~/.claude/settings.json; มันจะทำงานโดยอัตโนมัติ ฮุกบังคับใช้วินัยที่คุณอาจลืมไป: การโหลด STATE.md ทุกเซสชัน, การตรวจสอบไฟล์ .env ที่ถูกจัดเตรียมไว้ก่อนที่จะคอมมิต ค่าใช้จ่ายในการตั้งค่าคือ 10 นาที ผลตอบแทนคือถาวร

SessionStart ทำงานทันทีที่เซสชันเปิดขึ้น; สิ่งใดก็ตามที่มันพิมพ์จะกลายเป็นบริบทก่อนข้อความแรกของคุณ:

{

"hooks": {

"SessionStart": [

{

"command": "cat ~/notes/STATE.md ~/notes/MEMORY.md 2>/dev/null || true"

}

]

}

}|| true มีความสำคัญ: อย่าทำให้การเริ่มต้นเซสชันล้มเหลวหากไฟล์หายไป รักษาฮุกให้ทำงานภายใน 50 มิลลิวินาทีและอย่าทำการเรียกเครือข่ายเมื่อเปิดเซสชัน ต้องการข้อมูล API ใหม่? รัน cron ที่เขียนไฟล์ในเครื่อง; โหลดไฟล์ในฮุก

อีกสี่เหตุการณ์ฮุก:

Stop: ทำงานเมื่อเซสชันสิ้นสุด ใช้สำหรับการเตือนความจำ: "ก่อนที่คุณจะปิด: อัปเดต STATE.md"

PreToolUse: ทำงานก่อนที่ Claude จะเรียกใช้เครื่องมือ เลเยอร์การบังคับใช้ความปลอดภัยของคุณ: บล็อกคำสั่งอันตราย, บันทึกการเรียกสำหรับการตรวจสอบ ออก 0 อนุญาตการเรียก; ออก 2 บล็อกการเรียก

PostToolUse: ทำงานหลังจากเครื่องมือส่งคืนค่า รัน linter หลังจากเขียนไฟล์, ตรวจสอบนโยบาย RLS หลังจากย้ายข้อมูล SQL

UserPromptSubmit: ทำงานเมื่อคุณกด Enter แทรกบริบทหรือใช้การป้องกันการแทรกพรอมต์สำหรับเนื้อหาภายนอก

ฮุก PreToolUse ที่บล็อกการเรียก Bash ใดๆ ที่มี rm -rf:

{

"hooks": {

"PreToolUse": [

{

"matcher": "Bash",

"command": "if echo \"$CLAUDE_TOOL_INPUT\" | grep -q 'rm -rf'; then echo 'BLOCKED: rm -rf not allowed' >&2; exit 2; fi"

}

]

}

}ฟิลด์ matcher กำหนดเป้าหมายเครื่องมือเฉพาะ หากไม่มี ฮุกจะทำงานกับการเรียกเครื่องมือทุกครั้ง ใช้ matchers เพื่อให้ฮุกทำงานเร็วและตรงเป้าหมาย

เมื่อฮุกไม่ทำงาน ให้ตรวจสอบตามลำดับ:

ไวยากรณ์: เป็น JSON ที่ถูกต้องหรือไม่? รัน cat ~/.claude/settings.json | python3 -m json.tool

พาธไฟล์: ทดสอบคำสั่งฮุกด้วยตนเองในเทอร์มินัลของคุณ

รหัสออก: ขาด || true หรือไม่?

ความเร็ว: เกิน 3 วินาทีหรือไม่? ย้ายส่วนที่ช้าไปยัง cron

สองข้อผิดพลาดในการผลิต ตั้งค่าฟิลด์ timeout ที่ชัดเจนในทุกฮุกเพื่อให้พฤติกรรมยังคงคาดเดาได้ และฮุกทำงานในสภาพแวดล้อมที่ถูกตัดทอน ไม่ใช่เชลล์เต็มรูปแบบของคุณ: หากฮุกต้องการตัวแปรสภาพแวดล้อม (เช่น โทเค็น Slack) ให้ระบุ .env ของคุณอย่างชัดเจนในคำสั่งฮุก นี่คือสาเหตุที่พบบ่อยที่สุดของฮุกที่ทำงานในเทอร์มินัลของคุณแต่ล้มเหลวโดยไม่รู้ตัวใน Claude Code

Claude Code ที่ขับเคลื่อนด้วย Cron เอเจนต์เดียวกันสามารถทำงานตามกำหนดเวลาผ่าน claude --headless: สรุปตอนเช้าเวลา 7 โมงเช้าโพสต์ไปยัง Slack, การตรวจสอบโซเชียลมีเดียทุก 4 ชั่วโมง, การตรวจสอบสถานะการปรับใช้ทุก 30 นาที

รูปแบบที่สำคัญ: เกตการอนุมัติ Cron ร่าง คุณตรวจสอบ ระบบส่ง เอเจนต์อิสระที่ส่งข้อความขาออกโดยไม่มีการตรวจสอบจะส่งข้อความผิดพลาดในที่สุด: เทมเพลตผิด, ผู้รับผิด, เวลาผิด สถาปัตยกรรม: เอเจนต์ค้นพบและร่าง, มนุษย์ตรวจสอบและเผยแพร่ การนำไปใช้: เอเจนต์เขียนร่างไปยังช่อง Slack; ไม่มีอะไรออกไปจนกว่ามนุษย์จะอนุมัติ สิ่งนี้สามารถปรับขนาดได้กับเอเจนต์หลายสิบตัวโดยไม่มีใครหลุดโลก

สร้างระบบฮุกเป็นระยะ:

ระยะที่ 1 (สัปดาห์ที่ 1-2), โหลดฮุก: SessionStart โหลด STATE.md และ MEMORY.md; Stop เตือนให้คุณอัปเดต

ระยะที่ 2 (สัปดาห์ที่ 3-4), ฮุกป้องกัน: PreToolUse บล็อกคำสั่งที่ไม่สามารถย้อนกลับได้ (force-push to main, DROP TABLE, rm -rf)

ระยะที่ 3 (เดือนที่ 2+), ฮุกตรวจสอบ: PostToolUse ตรวจสอบสิ่งที่เขียนจริง: การย้ายข้อมูล SQL ที่ขาดนโยบาย RLS, เส้นทาง API ใหม่ที่ขาดการจำกัดอัตรา, ความลับในไฟล์ที่เขียนใดๆ

PostToolUse แข็งแกร่งกว่า PreToolUse สำหรับการตรวจสอบเพราะมันอ่านเนื้อหาไฟล์ที่เขียน ซึ่งเป็นความจริง ไม่ใช่แค่สิ่งที่ Claude ตั้งใจ สร้างฮุกรอบๆ โหมดความล้มเหลวที่แท้จริงของคุณ: ฮุกสองตัวที่แก้ปัญหาจริงดีกว่าสิบตัวที่เป็นทฤษฎี

SessionStart โหลดบริบท, Stop เตือน, PreToolUse บล็อกคำสั่งอันตราย (exit 2), PostToolUse ตรวจสอบสิ่งที่เขียน, และ cron บวกเกตการอนุมัติเปลี่ยน Claude ให้เป็นระบบตามกำหนดเวลาโดยมีมนุษย์เป็นผู้กดปุ่มส่ง เริ่มต้นด้วยฮุกเดียว: cat ~/notes/STATE.md 2>/dev/null || true ใน SessionStart เพิ่มระยะถัดไปทุกเดือน

Nightschool AI เป็นแพลตฟอร์มการเรียนรู้อิสระ ไม่มีส่วนเกี่ยวข้อง ได้รับการรับรอง หรือได้รับการสนับสนุนจาก Anthropic แต่อย่างใด Claude เป็นเครื่องหมายการค้าของ Anthropic, PBC กำลังมองหา Claude Academy อย่างเป็นทางการของ Anthropic อยู่ใช่ไหม ไปที่ academy.claude.com

ฮุกและระบบอัตโนมัติ: การตั้งค่าสำหรับผู้ปฏิบัติงาน | Nightschool AI