การแจ้งเตือนของ Gemini CLI: รับเสียงหรือการแจ้งเตือนเมื่อทำเสร็จหรือต้องการคุณ
Gemini CLI นั่งรออยู่ที่ “Waiting for confirmation” ได้อย่างสบายใจขณะที่คุณอ่านอย่างอื่นอยู่ มันบอกคุณได้ เพียงแต่การตั้งค่าปิดอยู่โดยค่าเริ่มต้น และบน Windows มันทำงานต่างจากที่เอกสารบอก
คำตอบสั้น ๆ
ตั้ง "general": { "enableNotifications": true } ใน ~/.gemini/settings.json (หรือ /settings → General → Enable Notifications) จากนั้น Gemini CLI จะแจ้งเตือนคุณเมื่อต้องการการอนุมัติและเมื่อเซสชันเสร็จสิ้น บน Windows Terminal และเทอร์มินัลของ VS Code โหมดอัตโนมัติจะแค่ส่งเสียงกระดิ่งเทอร์มินัล ดังนั้นหากต้องการการแจ้งเตือนบนเดสก์ท็อปจริง ๆ ให้ลอง notificationMethod: "osc9" สำหรับเสียงของคุณเอง ให้เพิ่ม hook Notification (ทำงานเมื่อมีพรอมต์ขอสิทธิ์ใช้เครื่องมือ) และ hook AfterAgent (ทำงานเมื่อจบเทิร์น)
ก่อนเริ่ม: คุณใช้ Gemini CLI แบบไหน
แบนเนอร์บนเอกสารของ Gemini CLI ระบุว่า สำหรับผู้ใช้ระดับฟรีและผู้ใช้ Google One นั้น Gemini CLI ถูกแทนที่ด้วย Antigravity CLI ตั้งแต่วันที่ 18 มิถุนายน 2026 ทุกอย่างด้านล่างนี้เกี่ยวกับตัว Gemini CLI เอง (คำสั่ง gemini และ ~/.gemini/settings.json) หากคุณย้ายไปใช้ Antigravity แล้ว การตั้งค่าของมันอยู่ที่อื่น
ผู้คนต้องการฟีเจอร์นี้มานานแล้ว คำขอฟีเจอร์การแจ้งเตือนด้วยเสียงในรีโพสิทอรี Gemini CLI (#4310) มีคนกดยกนิ้วให้ 74 ครั้ง และผู้ดูแลได้เพิ่มลำดับความสำคัญ “to reflect how many people care” (เพื่อสะท้อนว่ามีคนสนใจมากแค่ไหน) การสนทนาในภายหลัง (#13313) พูดไว้ง่าย ๆ ว่า “I can never tell when it is done.” (ฉันไม่เคยรู้เลยว่ามันทำเสร็จเมื่อไร)
เปิดการแจ้งเตือนในตัว
Gemini CLI มีฟีเจอร์การแจ้งเตือนแบบทดลอง ซึ่งปิดอยู่โดยค่าเริ่มต้น เปิดได้ใน CLI ด้วย /settings → General → Enable Notifications หรือในไฟล์การตั้งค่าของคุณ:
เมื่อเปิดแล้ว Gemini CLI จะแจ้งเตือนคุณสำหรับสอง event:
- ต้องดำเนินการ: โมเดลกำลังรออินพุตหรือการอนุมัติเครื่องมือจากคุณ
- เซสชันเสร็จสิ้น: เซสชันจบลงอย่างสำเร็จ
หัวข้อการแจ้งเตือนคือ “Gemini CLI needs your attention” และ “Gemini CLI session complete” Gemini CLI ไม่ได้เล่นเสียงเอง: มันส่ง escape sequence ไปที่เทอร์มินัลของคุณ และเทอร์มินัลเป็นผู้ตัดสินว่าจะเกิดอะไรขึ้น
การแจ้งเตือนไปถึงคุณอย่างไร (และทำไม Windows ถึงต่างออกไป)
การตั้งค่าตัวที่สอง general.notificationMethod เลือกวิธีส่งการแจ้งเตือน ค่าที่ใช้ได้คือ auto (ค่าเริ่มต้น), osc9, osc777 และ bell
หน้าการแจ้งเตือนบอกว่า CLI ใช้ escape sequence OSC 9 และถอยกลับไปใช้กระดิ่งเทอร์มินัล ซอร์สโค้ดเจาะจงกว่านั้น ในโหมด auto (packages/cli/src/utils/terminalNotifications.ts):
| เทอร์มินัล | สิ่งที่ auto ส่ง |
|---|---|
| iTerm2 | OSC 9 (การแจ้งเตือนบนเดสก์ท็อป) |
| Windows Terminal, เทอร์มินัลของ VS Code, Alacritty, Apple Terminal | เฉพาะกระดิ่ง (BEL) |
| เทอร์มินัลอื่นทั้งหมด | OSC 777 |
ดังนั้นบน Windows Terminal คุณจะได้เสียงกระดิ่ง ไม่ใช่ toast กระดิ่งจะทำอะไรขึ้นอยู่กับการตั้งค่าของ Windows Terminal: bellStyle รับค่า all, audible, window, taskbar และ none โดยค่าเริ่มต้นคือ audible เมื่อตั้งเป็น all Windows Terminal จะเล่นเสียงและทำให้ไอคอนบนแถบงานกะพริบ และคุณเลือกเสียงได้ด้วย bellSound
หากคุณอยากลองการแจ้งเตือนบนเดสก์ท็อปจริง ๆ แทนเสียงกระดิ่ง ให้บังคับวิธีการ:
เทอร์มินัลแต่ละตัวจะแปลง OSC 9 เป็นการแจ้งเตือนของ Windows หรือไม่ ขึ้นอยู่กับเวอร์ชันของเทอร์มินัล หากไม่มีอะไรปรากฏ ให้กลับไปใช้ auto หรือ bell และใช้ bellStyle: "all" กระดิ่งคือเส้นทางที่โค้ดของ Gemini CLI เองเลือกไว้สำหรับ Windows Terminal
ภายใน tmux หรือ screen Gemini CLI จะห่อ sequence ไว้ใน passthrough escape เพื่อให้ยังไปถึงเทอร์มินัลชั้นนอก
เสียงของคุณเองด้วย hook
หากคุณต้องการเสียงเฉพาะ ป๊อปอัป หรือข้อความไปที่โทรศัพท์ ให้ใช้ hook Gemini CLI รันคำสั่งของ hook ที่จุดตายตัวและรอให้มันจบ มีสอง event ที่สำคัญในที่นี้:
Notificationทำงานเมื่อ CLI ส่งการแจ้งเตือนของระบบ ปัจจุบันมีประเภทเดียวคือToolPermission(มีเครื่องมือรอการอนุมัติจากคุณ) hook นี้ ไม่สามารถ อนุมัติหรือบล็อกอะไรได้ มันเป็นแค่การแจ้งให้ทราบAfterAgentทำงานหนึ่งครั้งต่อเทิร์น หลังคำตอบสุดท้ายของโมเดล หน้าแนวทางปฏิบัติที่ดีของ Gemini เองแนะนำให้ใช้เมื่อ “you only need to check the final completion” (คุณแค่ต้องการตรวจการเสร็จสิ้นขั้นสุดท้าย)
hook เปิดอยู่โดยค่าเริ่มต้น (hooksConfig.enabled) hook จะพิมพ์ออบเจ็กต์ JSON หนึ่งตัวพอดีไปที่ stdout และไม่มีอะไรอื่น ({} ก็ได้เมื่อไม่มีอะไรจะบอก) รหัสออก 0 หมายถึงสำเร็จ 2 คือบล็อก (และมีผลเฉพาะกับ event ที่บล็อกได้) ค่าอื่นเป็นคำเตือนและ CLI จะทำงานต่อ timeout เริ่มต้นคือ 60 วินาที (timeout มีหน่วยเป็นมิลลิวินาที)
Windows (PowerShell)
บน Windows Gemini CLI รันคำสั่งของ hook ด้วย pwsh -NoProfile -Command หรือ powershell.exe หากไม่ได้ติดตั้ง PowerShell 7 บันทึกสคริปต์นี้เป็น %USERPROFILE%\.gemini\hooks\ding.ps1:
จากนั้นชี้ทั้งสอง event ไปที่สคริปต์นี้:
-ExecutionPolicy Bypass ช่วยเลี่ยงความล้มเหลวที่พบบ่อยที่สุด: PowerShell ไม่ยอมรันสคริปต์ เอกสารของ Gemini แนะนำ Set-ExecutionPolicy RemoteSigned -Scope CurrentUser เป็นวิธีแก้ถาวร
macOS และ Linux
บนระบบอื่น hook รันด้วย bash -c สคริปต์บรรทัดเดียวก็ทำงานได้:
ทำให้ไฟล์รันได้ (chmod +x ~/.gemini/hooks/ding.sh) และใช้ "command": "$HOME/.gemini/hooks/ding.sh" ในสอง event เดียวกัน
อยากได้เสียงสองแบบ แบบหนึ่งสำหรับ “ต้องการการอนุมัติ” และอีกแบบสำหรับ “เสร็จแล้ว” ใช่ไหม? ให้สร้างสองสคริปต์ hook ยังอ่าน event จาก stdin ได้ด้วย: อินพุตของ Notification มี notification_type, message และ details คุณจึงแสดงคำขอจริงในป๊อปอัปได้
ทำไม hook ของคุณถึงไม่รัน
- ตรวจ
/hooks panelมันแสดงรายการทุก hook ที่ Gemini CLI โหลด/hooks enable-allจะเปิดกลับมาหากถูกปิดไว้ - โฟลเดอร์ที่ไม่ได้เชื่อถือ ในโฟลเดอร์ที่ไม่ได้เชื่อถือ Gemini CLI จะละเว้น
.gemini/settings.jsonของโปรเจกต์ hook ระดับโปรเจกต์จึงไม่ถูกโหลด ให้ใส่ hook การแจ้งเตือนไว้ในการตั้งค่าผู้ใช้ (~/.gemini/settings.json) เพื่อให้ทำงานได้ทุกที่ - hook ที่เปลี่ยนไปนับเป็นของใหม่ Gemini CLI เก็บลายนิ้วมือของ hook ระดับโปรเจกต์ หากชื่อหรือคำสั่งของ hook เปลี่ยน มันจะถือว่าเป็น hook ใหม่ที่ยังไม่ได้เชื่อถือ
- มีอย่างอื่นบน stdout
echoที่หลงมาหรือคำเตือนของ PowerShell ที่อยู่หน้า JSON จะทำให้การแยกวิเคราะห์พัง ส่งล็อกไปที่ stderr - Matcher สำหรับ
NotificationและAfterAgentให้ใช้"*"(หรือสตริงว่าง) เพื่อให้ตรงกับทุกอย่าง event วงจรชีวิตใช้ matcher แบบสตริงตรงตัว ส่วน event ของเครื่องมือใช้ regular expression
หรือลดจำนวนครั้งที่ถูกถาม
การแจ้งเตือนช่วยให้คุณตอบได้เร็วขึ้น และคุณยังลดความถี่ที่ Gemini CLI ต้องการคุณได้ general.defaultApprovalMode เป็นได้ทั้ง default (ถาม), auto_edit (อนุมัติการแก้ไข ส่วนอย่างอื่นถาม) หรือ plan (อ่านอย่างเดียว) Shift+Tab วนสลับระหว่างโหมดเหล่านี้ tools.allowed ระบุเครื่องมือที่ข้ามกล่องยืนยันได้ (เช่น run_shell_command(git)) และ tools.confirmationRequired ระบุเครื่องมือที่ต้องถามเสมอ
โหมด YOLO (--yolo หรือ Ctrl+Y) อนุมัติทุกอย่างและเปิดแซนด์บ็อกซ์โดยค่าเริ่มต้น เปิดได้จากบรรทัดคำสั่งเท่านั้น และ security.disableYoloMode จะปิดมันถาวรหากคุณใช้เครื่องร่วมกับผู้อื่น
Pet Island ช่วยตรงไหน
เสียงบี๊บบอกคุณว่ามีบางอย่างเกิดขึ้น แต่ไม่ได้บอกว่าเทอร์มินัลไหน หรือ Gemini ต้องการรันอะไร Pet Island นำ Gemini CLI มาไว้บนเกาะเล็ก ๆ ที่ด้านบนของหน้าจอข้างเอเจนต์อื่น ๆ ของคุณ: คุณเห็นได้ว่าเมื่อไรมันกำลังทำงาน เมื่อไรรอการยืนยันจากคุณ และเมื่อไรเสร็จแล้ว พร้อมคลิกเดียวเพื่อกระโดดไปยังเทอร์มินัลที่ถูกต้อง
สำหรับ Gemini CLI การยืนยันยังคงเกิดขึ้นใน Gemini Pet Island แสดงคำขอและพาคุณไปที่นั่น แต่ไม่ได้อนุมัติเครื่องมือของ Gemini แทนคุณ (ในทางกลับกัน คำขอของ Claude Code และ Codex ตอบได้ตรงบนเกาะเลย)
คำถามที่พบบ่อย
Gemini CLI มีการแจ้งเตือนไหม?
มี เป็นฟีเจอร์ทดลองที่ปิดอยู่โดยค่าเริ่มต้น ตั้ง general.enableNotifications เป็น true ใน ~/.gemini/settings.json หรือใช้ /settings → General → Enable Notifications
ทำไม Gemini CLI ถึงแค่ส่งเสียงบี๊บบน Windows?
ในโหมด auto โค้ดของ Gemini CLI ส่งแค่กระดิ่งเทอร์มินัลไปที่ Windows Terminal และเทอร์มินัลของ VS Code การตั้งค่า bellStyle ของ Windows Terminal ควบคุมว่ากระดิ่งนั้นจะเล่นเสียง ทำให้แถบงานกะพริบ หรือทั้งสองอย่าง
hook ของ Gemini CLI อนุมัติเครื่องมือให้อัตโนมัติได้ไหม?
hook Notification ทำไม่ได้ เอกสารระบุว่ามันบล็อกการแจ้งเตือนหรือให้สิทธิ์ไม่ได้ ให้ใช้ tools.allowed หรือ policy engine เพื่ออนุมัติเครื่องมือล่วงหน้าแทน
hook ไหนทำงานเมื่อ Gemini CLI ทำเสร็จ?
AfterAgent ทำงานหนึ่งครั้งต่อเทิร์น หลังคำตอบสุดท้ายของโมเดล
ควรใส่ hook ไว้ที่ไหนเพื่อให้ทำงานในทุกโปรเจกต์?
ในการตั้งค่าผู้ใช้ ~/.gemini/settings.json การตั้งค่าโปรเจกต์จะถูกละเว้นในโฟลเดอร์ที่ไม่ได้เชื่อถือ
แหล่งข้อมูล
การตั้งค่าและพฤติกรรมทุกอย่างในหน้านี้ได้รับการตรวจสอบกับหน้าเหล่านี้เมื่อวันที่ 26 ตุลาคม 2026 เอเจนต์เปลี่ยนแปลงเร็ว หากมีอะไรไม่ตรงกันแล้ว ให้ยึดหน้าทางการเป็นหลัก
- เอกสาร Gemini CLI: Notifications (ทดลอง)
- เอกสาร Gemini CLI: Hooks
- เอกสาร Gemini CLI: Hooks reference
- เอกสาร Gemini CLI: Writing hooks (ตัวอย่าง PowerShell)
- เอกสาร Gemini CLI: Configuration reference
- เอกสาร Gemini CLI: Trusted folders
- ซอร์สโค้ด Gemini CLI: terminalNotifications.ts
- Gemini CLI issue #4310: Audio notifications
- Gemini CLI discussion #13313: Enable sound when Gemini is done
- Microsoft Learn: การตั้งค่าโปรไฟล์ Windows Terminal (bellStyle, bellSound)
- Microsoft Learn: Console.Beep