ตั้งการแจ้งเตือนเมื่อเอเจนต์เขียนโค้ดทำงานเสร็จหรือรอการอนุมัติ
รับการแจ้งเตือนเมื่อเอเจนต์เขียนโค้ดทำงานเสร็จ ล้มเหลว หรือรอให้คุณอนุมัติ บนคอมพิวเตอร์หรือโทรศัพท์ แล้วทดสอบให้เรียบร้อยก่อนลุกจากโต๊ะ
หากต้องการให้มีการแจ้งเตือนเมื่อเอเจนต์เขียนโค้ดทำงานเสร็จหรือรอการอนุมัติ ให้เปิดการแจ้งเตือนที่มีมาในตัวของเอเจนต์ หรือเพิ่ม hook ที่ทำงานเมื่อเกิดเหตุการณ์เหล่านั้น ถ้าคุณจะไม่อยู่หน้าคอมพิวเตอร์ ให้ส่งการแจ้งเตือนไปที่โทรศัพท์ และทดสอบให้เรียบร้อยก่อนออกไป เพราะเอเจนต์ที่รอการอนุมัติจะไม่ทำอะไรต่อจนกว่าคุณจะตอบ
คู่มือนี้ใช้ Claude Code เป็นตัวอย่าง ส่วนวิธีทำให้คอมพิวเตอร์ไม่เข้าโหมดพักเครื่องมีคู่มือแยกต่างหาก Mono by Reunified ส่งการแจ้งเตือนเหล่านี้สำหรับเอเจนต์ที่คุณรันผ่าน Mono แต่วิธีนี้ใช้ได้ไม่ว่าคุณจะตั้งค่าแบบไหน
1. เลือกเหตุการณ์ของเอเจนต์ที่ต้องมีการแจ้งเตือน
เหตุการณ์ที่สำคัญมีสามอย่าง:
| เหตุการณ์ | สิ่งที่คุณทำต่อ |
|---|---|
| รอการอนุญาต | อ่านคำขอ แล้วอนุญาตหรือปฏิเสธ |
| ทำงานเสร็จ | ตรวจผลลัพธ์และรีวิวการเปลี่ยนแปลง |
| หยุดเพราะเกิดข้อผิดพลาด | อ่านข้อผิดพลาดแล้วตัดสินใจว่าจะลองใหม่หรือไม่ |
ถ้าจะตั้งการแจ้งเตือนเพียงอย่างเดียว ให้เลือกการแจ้งเตือนเมื่อเอเจนต์ขออนุญาต
2. เปิดการแจ้งเตือนใน Claude Code
Claude Code ส่งการแจ้งเตือนเมื่อทำงานเสร็จหรือหยุดรอการอนุญาตในตอนที่ดูเหมือนคุณไม่อยู่ โดยค่าเริ่มต้นจะแสดงการแจ้งเตือนบนเดสก์ท็อปเฉพาะใน Ghostty, Kitty และ iTerm2 (การตั้งค่าเทอร์มินัล) ในเทอร์มินัลอื่น ให้ตั้ง preferredNotifChannel เป็น "terminal_bell" ใน ~/.claude/settings.json เพื่อให้เทอร์มินัลส่งเสียงกริ่ง ถ้าใช้ tmux ให้เพิ่ม set -g allow-passthrough on ลงใน ~/.tmux.conf แล้วโหลดไฟล์ใหม่
หากต้องการเสียงหรือคำสั่งของคุณเอง ให้เพิ่ม hook ในไฟล์เดียวกัน เหตุการณ์ Notification รับ matcher เช่น permission_prompt (คำขออนุมัติรอมาแล้วประมาณหกวินาที) และ idle_prompt (Claude ทำงานเสร็จมาประมาณหนึ่งนาทีและคุณยังไม่ได้พิมพ์อะไร) บน Mac ตัวอย่างนี้เล่นเสียงต่างกันสำหรับแต่ละกรณี:
{
"hooks": {
"Notification": [
{
"matcher": "permission_prompt",
"hooks": [{ "type": "command", "command": "afplay /System/Library/Sounds/Glass.aiff" }]
},
{
"matcher": "idle_prompt",
"hooks": [{ "type": "command", "command": "afplay /System/Library/Sounds/Hero.aiff" }]
}
]
}
}คู่มือ hook ยังมีคำสั่งแสดงการแจ้งเตือนบนเดสก์ท็อปสำหรับ macOS, Linux และ Windows ด้วย เอเจนต์อื่นทำงานต่างออกไป จึงควรตรวจเอกสารของเอเจนต์นั้น
3. ส่งการแจ้งเตือนไปที่โทรศัพท์
การแจ้งเตือนไปถึงโทรศัพท์ได้สามทาง:
- แอปของเอเจนต์เอง เมื่อเปิด Remote Control ของ Claude Code อยู่ ให้รัน
/configแล้วเปิดตัวเลือกพุชเมื่อ Claude ตัดสินใจ (“Push when Claude decides”) พุชเมื่อต้องดำเนินการ (“Push when actions required”) หรือทั้งสองอย่าง ต้องใช้แพ็กเกจที่รองรับ และต้องลงชื่อเข้าใช้แอป Claude ด้วยบัญชีเดียวกันพร้อมอนุญาตการแจ้งเตือนไว้ - hook ที่ส่งข้อความพุช เช่น ใช้
curlส่งไปยังบริการพุชที่ติดตั้งแอปไว้บนโทรศัพท์ของคุณ - แอปเสริม ที่ส่งต่อเหตุการณ์ของเซสชันจากคอมพิวเตอร์
ทุกทางต้องให้คอมพิวเตอร์เปิดอยู่ ไม่พักเครื่อง และออนไลน์ โดยที่เอเจนต์ยังทำงานอยู่ เก็บ token ของ hook ไว้ใน ~/.claude/settings.json ไม่ใช่ใน .claude/settings.json ของโปรเจกต์ เพราะไฟล์นั้นอาจถูก commit เข้ารีโพซิทอรี
4. ไม่ให้ข้อความแจ้งเตือนเผยข้อมูลบนหน้าจอล็อก
ใครก็ตามที่อยู่ใกล้โทรศัพท์ที่ล็อกอยู่อ่านตัวอย่างการแจ้งเตือนได้ อย่าใส่ข้อมูลลับ เนื้อหาไฟล์ หรือบรรทัดจาก log ในข้อความของ hook ส่งแค่ชื่อเหตุการณ์และชื่อโปรเจกต์ สำหรับโปรเจกต์สมมติชื่อ “invoice-export” ข้อความ “invoice-export: รอการอนุมัติ” ก็เพียงพอ บน iPhone ให้เปิด “การตั้งค่า > การแจ้งเตือน” แล้วตั้ง “แสดงตัวอย่าง” เป็น “เมื่อไม่ได้ล็อค” Android ก็ซ่อนเนื้อหาที่ละเอียดอ่อนบนหน้าจอล็อกได้เช่นกัน แต่ชื่อตัวเลือกต่างกันไปตามรุ่นโทรศัพท์
ใน Mono การแจ้งเตือนเมื่อทำงานเสร็จจะแสดงข้อความล่าสุดของเอเจนต์ และย่อให้สั้นลงถ้าข้อความยาว ส่วนการแจ้งเตือนขออนุญาตจะแสดงคำขอตามที่เอเจนต์อธิบาย ซึ่งมักเป็นคำสั่งที่จะรัน
5. ทดสอบด้วยงานที่ไม่มีผลเสียก่อนออกไป
บนคอมพิวเตอร์ที่บ้าน ให้เริ่มเซสชันชื่อ “invoice-export check” แล้วขอให้เอเจนต์รันการทดสอบและรายงานข้อที่ไม่ผ่านโดยไม่แก้ไขไฟล์ เอเจนต์ถามก่อนรันคำสั่ง จึงขออนุญาตรัน npm test ที่คอมพิวเตอร์ ให้เปิดหน้าจอหรือแอปอื่นไว้ จากนั้นล็อกโทรศัพท์แล้วไปอยู่อีกห้อง
ใน Mono สิ่งที่ควรเห็นคือ:
- การแจ้งเตือน “คำขออนุญาตจากเอเจนต์” ที่ระบุคำสั่งทดสอบ
- เมื่อกดการแจ้งเตือน เซสชันนั้นจะเปิดขึ้น แล้วคุณเลือก “อนุญาต” คำขอครั้งต่อไปจะมีการแจ้งเตือนแยกของตัวเอง
- “เอเจนต์ทำงานเสร็จใน “invoice-export check”” พร้อมข้อความล่าสุดของเอเจนต์ เช่น “การทดสอบหนึ่งรายการใน dates.test.ts ไม่ผ่านเพราะเรื่องเขตเวลา ไม่ได้แก้ไขไฟล์ใด ๆ”
จากนั้นรันงานที่สองโดยเปิดเซสชันไว้บนโทรศัพท์ ระหว่างที่คุณดูอยู่จะไม่มีการแจ้งเตือนเข้ามา ก่อนออกจากบ้าน ตรวจให้แน่ใจว่าไม่มีอุปกรณ์ใดเปิดเซสชันค้างไว้บนหน้าจอ
6. แก้ปัญหาเมื่อการแจ้งเตือนไม่มา
| อาการ | สิ่งที่ต้องตรวจ |
|---|---|
| ไม่มีอะไรมาเลย | สิทธิ์การแจ้งเตือนของระบบ โฟกัสหรือห้ามรบกวน และสวิตช์ในตัวแอปเอง |
| มาเฉพาะบนคอมพิวเตอร์ | เปิดการส่งไปยังอุปกรณ์อื่นไว้หรือไม่ โทรศัพท์ลงชื่อเข้าใช้อยู่และอนุญาตการแจ้งเตือนหรือไม่ |
| มาช้าหรือมาพร้อมกันเป็นชุด | สรุปการแจ้งเตือนบน iPhone การเพิ่มประสิทธิภาพแบตเตอรี่บน Android หรือคอมพิวเตอร์ที่พักเครื่องอยู่ |
| ไม่มาขณะที่คุณดูอยู่ | เป็นเรื่องปกติ: การแจ้งเตือนจะข้ามเซสชันหรือเทอร์มินัลที่คุณกำลังดูอยู่ |
| ไม่มีการแจ้งเตือนขออนุญาต และเอเจนต์ทำงานต่อไปเลย | โหมดยอมรับอัตโนมัติ เช่น โหมด YOLO ของ Mono |
ใน Mono ให้เปิด “การตั้งค่า > การแจ้งเตือน” แล้วตรวจ “การแจ้งเตือนทั้งหมด” “Code” (เซสชันที่ทำงานเสร็จและที่หยุดไป) “คำขอสิทธิ์” และ “ส่งไปยังอุปกรณ์อื่น” ทุกตัวเลือกเปิดอยู่โดยค่าเริ่มต้น การแจ้งเตือนส่งมาจากคอมพิวเตอร์ที่รันเอเจนต์ จึงต้องเปิด Mono ไว้บนเครื่องนั้น
ก่อนอนุมัติจากโทรศัพท์ ให้อ่านสิ่งที่ต้องตรวจในคำขออนุญาต ส่วนคู่มือเอเจนต์เขียนโค้ดจากโทรศัพท์อธิบายการตั้งค่าส่วนที่เหลือ Mono ยังไม่เปิดให้ใช้ แต่คุณเข้าร่วมรายชื่อรอได้
