การแจ้งเตือนของ Gemini CLI: รับเสียงหรือการแจ้งเตือนเมื่อทำเสร็จหรือต้องการคุณ

Gemini CLI นั่งรออยู่ที่ “Waiting for confirmation” ได้อย่างสบายใจขณะที่คุณอ่านอย่างอื่นอยู่ มันบอกคุณได้ เพียงแต่การตั้งค่าปิดอยู่โดยค่าเริ่มต้น และบน Windows มันทำงานต่างจากที่เอกสารบอก

โดย Aslan ทีม Pet Island · อัปเดต 26 ต.ค. 2026 · อ่าน 5 นาที

คำตอบสั้น ๆ

ตั้ง "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/settings.jsonคัดลอก
{
"general": {
"enableNotifications": true
}
}

เมื่อเปิดแล้ว 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 ส่ง
iTerm2OSC 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

settings.json ของ Windows Terminal (โปรไฟล์)คัดลอก
{
"bellStyle": "all"
}

หากคุณอยากลองการแจ้งเตือนบนเดสก์ท็อปจริง ๆ แทนเสียงกระดิ่ง ให้บังคับวิธีการ:

~/.gemini/settings.jsonคัดลอก
{
"general": {
"enableNotifications": true,
"notificationMethod": "osc9"
}
}

เทอร์มินัลแต่ละตัวจะแปลง 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:

~/.gemini/hooks/ding.ps1คัดลอก
# Two short beeps: frequency in Hz, duration in ms
[Console]::Beep(880, 150)
[Console]::Beep(1320, 150)
 
# Hooks must print one JSON object
"{}"

จากนั้นชี้ทั้งสอง event ไปที่สคริปต์นี้:

~/.gemini/settings.jsonคัดลอก
{
"general": { "enableNotifications": true },
"hooks": {
"Notification": [
{ "matcher": "*", "hooks": [ { "name": "ding-approval", "type": "command",
"command": "powershell -NoProfile -ExecutionPolicy Bypass -File $HOME\\.gemini\\hooks\\ding.ps1" } ] }
],
"AfterAgent": [
{ "matcher": "*", "hooks": [ { "name": "ding-done", "type": "command",
"command": "powershell -NoProfile -ExecutionPolicy Bypass -File $HOME\\.gemini\\hooks\\ding.ps1" } ] }
]
}
}

-ExecutionPolicy Bypass ช่วยเลี่ยงความล้มเหลวที่พบบ่อยที่สุด: PowerShell ไม่ยอมรันสคริปต์ เอกสารของ Gemini แนะนำ Set-ExecutionPolicy RemoteSigned -Scope CurrentUser เป็นวิธีแก้ถาวร

macOS และ Linux

บนระบบอื่น hook รันด้วย bash -c สคริปต์บรรทัดเดียวก็ทำงานได้:

~/.gemini/hooks/ding.shคัดลอก
#!/usr/bin/env bash
cat > /dev/null # drain the event JSON
afplay /System/Library/Sounds/Glass.aiff 2>/dev/null \
|| paplay /usr/share/sounds/freedesktop/stereo/complete.oga 2>/dev/null
echo '{}'

ทำให้ไฟล์รันได้ (chmod +x ~/.gemini/hooks/ding.sh) และใช้ "command": "$HOME/.gemini/hooks/ding.sh" ในสอง event เดียวกัน

อยากได้เสียงสองแบบ แบบหนึ่งสำหรับ “ต้องการการอนุมัติ” และอีกแบบสำหรับ “เสร็จแล้ว” ใช่ไหม? ให้สร้างสองสคริปต์ hook ยังอ่าน event จาก stdin ได้ด้วย: อินพุตของ Notification มี notification_type, message และ details คุณจึงแสดงคำขอจริงในป๊อปอัปได้

ทำไม hook ของคุณถึงไม่รัน

  1. ตรวจ /hooks panel มันแสดงรายการทุก hook ที่ Gemini CLI โหลด /hooks enable-all จะเปิดกลับมาหากถูกปิดไว้
  2. โฟลเดอร์ที่ไม่ได้เชื่อถือ ในโฟลเดอร์ที่ไม่ได้เชื่อถือ Gemini CLI จะละเว้น .gemini/settings.json ของโปรเจกต์ hook ระดับโปรเจกต์จึงไม่ถูกโหลด ให้ใส่ hook การแจ้งเตือนไว้ในการตั้งค่าผู้ใช้ (~/.gemini/settings.json) เพื่อให้ทำงานได้ทุกที่
  3. hook ที่เปลี่ยนไปนับเป็นของใหม่ Gemini CLI เก็บลายนิ้วมือของ hook ระดับโปรเจกต์ หากชื่อหรือคำสั่งของ hook เปลี่ยน มันจะถือว่าเป็น hook ใหม่ที่ยังไม่ได้เชื่อถือ
  4. มีอย่างอื่นบน stdout echo ที่หลงมาหรือคำเตือนของ PowerShell ที่อยู่หน้า JSON จะทำให้การแยกวิเคราะห์พัง ส่งล็อกไปที่ stderr
  5. 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 เอเจนต์เปลี่ยนแปลงเร็ว หากมีอะไรไม่ตรงกันแล้ว ให้ยึดหน้าทางการเป็นหลัก

อ่านต่อ

ตอบทุกเอเจนต์ได้จากด้านบนของหน้าจอ

Windows และ Mac · ทดลองใช้ฟรี 7 วัน จากนั้นจ่ายครั้งเดียว $8.99 · $1 จากทุกการขายนำไปซื้ออาหารให้สัตว์จรจัด

ลองใช้ Pet Island ฟรี