إشعارات 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". ولصوتك الخاص، أضف خطاف Notification (يُطلَق عند طلبات إذن الأدوات) وخطاف 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 عند حدثين:
- إجراء مطلوب: النموذج ينتظر إدخالك أو موافقتك على أداة.
- اكتمال الجلسة: انتهت جلسة بنجاح.
عناوين الإشعارات هي «Gemini CLI needs your attention» و«Gemini CLI session complete». لا يشغّل Gemini CLI صوتًا خاصًا به: بل يرسل إلى طرفيتك تسلسل هروب، والطرفية تقرر ما يحدث.
كيف يصلك الإشعار (ولماذا يختلف Windows)
إعداد ثانٍ، general.notificationMethod، يحدد طريقة إرسال التنبيه. القيم هي auto (الافتراضية) وosc9 وosc777 وbell.
تقول صفحة الإشعارات إن CLI يستخدم تسلسل الهروب 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 تحصل على الجرس، وليس على إشعار منبثق. وما يفعله الجرس إعداد في 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 التسلسل في تسلسل هروب للتمرير (passthrough) حتى يصل مع ذلك إلى الطرفية الخارجية.
صوتك الخاص باستخدام الخطافات
إذا أردت صوتًا محددًا، أو نافذة منبثقة، أو رسالة إلى هاتفك، فاستخدم الخطافات (hooks). يشغّل Gemini CLI أوامر الخطافات عند نقاط محددة وينتظر انتهاءها. حدثان مهمان هنا:
Notificationيُطلَق عندما يُصدر CLI تنبيه نظام. النوع الوحيد حاليًا هوToolPermission(أداة تنتظر موافقتك). الخطاف لا يستطيع الموافقة على أي شيء أو حظره؛ فهو استشاري فقط.AfterAgentيُطلَق مرة واحدة في كل دور، بعد الرد النهائي للنموذج. وتوصي صفحة أفضل الممارسات لدى Gemini به عندما «you only need to check the final completion» (تحتاج فقط إلى التحقق من الاكتمال النهائي).
الخطافات مفعّلة افتراضيًا (hooksConfig.enabled). يطبع الخطاف كائن JSON واحدًا بالضبط على stdout ولا شيء غيره ({} مقبول عندما لا يكون لديك ما تقوله). رمز الخروج 0 يعني النجاح؛ و2 يحظر (ولا يهم إلا في الأحداث الحاظرة)؛ وأي رمز آخر يُعدّ تحذيرًا ويواصل CLI عمله. المهلة الافتراضية 60 ثانية (timeout بالمللي ثانية).
Windows (PowerShell)
على Windows يشغّل Gemini CLI أوامر الخطافات باستخدام pwsh -NoProfile -Command، أو powershell.exe إذا لم يكن PowerShell 7 مثبتًا. احفظ هذا السكربت باسم %USERPROFILE%\.gemini\hooks\ding.ps1:
ثم اربط الحدثين به:
يتجنب -ExecutionPolicy Bypass أكثر أسباب الفشل شيوعًا: رفض PowerShell تشغيل السكربتات. وتقترح وثائق Gemini الأمر Set-ExecutionPolicy RemoteSigned -Scope CurrentUser كحل دائم.
macOS وLinux
على الأنظمة الأخرى تعمل الخطافات باستخدام bash -c. يكفي سكربت من سطر واحد:
اجعله قابلًا للتنفيذ (chmod +x ~/.gemini/hooks/ding.sh) واستخدم "command": "$HOME/.gemini/hooks/ding.sh" في الحدثين نفسيهما.
تريد صوتين مختلفين، واحدًا لـ«يحتاج موافقة» وآخر لـ«انتهى»؟ أنشئ سكربتين. يمكن للخطاف أيضًا قراءة الحدث من stdin: يحمل إدخال Notification الحقول notification_type وmessage وdetails، لذا يمكنك عرض الطلب الفعلي في النافذة المنبثقة.
لماذا لا يعمل خطافك
- تحقق من
/hooks panel. يعرض كل خطاف حمّله Gemini CLI. ويعيد/hooks enable-allتفعيلها إذا كانت معطّلة. - مجلد غير موثوق. في المجلد غير الموثوق يتجاهل Gemini CLI ملف
.gemini/settings.jsonالخاص بالمشروع، فلا تُحمَّل خطافات المشروع. ضع خطافات الإشعارات في إعدادات المستخدم (~/.gemini/settings.json) حتى تعمل في كل مكان. - الخطافات المعدّلة تُعدّ جديدة. يأخذ Gemini CLI بصمة لخطافات المشروع؛ فإذا تغيّر اسم خطاف أو أمره، يُعامَل كخطاف جديد غير موثوق.
- شيء آخر على stdout.
echoشارد أو تحذير من PowerShell قبل JSON يُفسد التحليل. أرسل السجلات إلى stderr. - المطابِقات. في
NotificationوAfterAgentاستخدم"*"(أو سلسلة فارغة) لمطابقة كل شيء. أحداث دورة الحياة تستخدم مطابِقات نصية حرفية، وأحداث الأدوات تستخدم تعبيرات نمطية.
أو قلّل عدد مرات سؤالك
تساعدك الإشعارات على الرد بسرعة أكبر؛ ويمكنك أيضًا تقليل عدد المرات التي يحتاجك فيها Gemini CLI. يمكن أن تكون قيمة general.defaultApprovalMode هي default (يسأل)، أو auto_edit (يوافق على التعديلات ويسأل عن كل شيء آخر)، أو plan (للقراءة فقط). يتنقل Shift+Tab بينها. يضم tools.allowed الأدوات التي تتخطى مربع حوار التأكيد (مثل run_shell_command(git))، ويضم tools.confirmationRequired الأدوات التي يجب أن تسأل دائمًا.
وضع YOLO (--yolo أو Ctrl+Y) يوافق على كل شيء ويفعّل بيئة الحماية (sandbox) افتراضيًا. لا يمكن تفعيله إلا من سطر الأوامر، ويوقفه 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 في ما إذا كان هذا الجرس يشغّل صوتًا، أو يجعل شريط المهام يومض، أو الاثنين معًا.
هل يمكن لخطاف في Gemini CLI الموافقة على أداة تلقائيًا؟
ليس خطاف Notification. تقول الوثائق إنه لا يستطيع حظر التنبيهات أو منح الأذونات. استخدم tools.allowed أو محرك السياسات للموافقة المسبقة على الأدوات بدلًا من ذلك.
أي خطاف يُطلَق عندما ينتهي Gemini CLI؟
AfterAgent. يُطلَق مرة واحدة في كل دور، بعد الرد النهائي للنموذج.
أين أضع الخطافات حتى تعمل في كل مشروع؟
في إعدادات المستخدم، ~/.gemini/settings.json. تُتجاهَل إعدادات المشروع في المجلدات غير الموثوقة.
المصادر
راجعنا كل إعداد وسلوك في هذه الصفحة مقابل هذه الصفحات بتاريخ 26 أكتوبر 2026. الوكلاء يتغيرون بسرعة؛ فإذا لم يعد شيء مطابقًا، فالمرجع هو الصفحة الرسمية.
- وثائق Gemini CLI: الإشعارات (تجريبية)
- وثائق Gemini CLI: الخطافات (Hooks)
- وثائق Gemini CLI: مرجع الخطافات (Hooks reference)
- وثائق Gemini CLI: كتابة الخطافات (مثال PowerShell)
- وثائق Gemini CLI: مرجع التهيئة
- وثائق Gemini CLI: المجلدات الموثوقة
- الشيفرة المصدرية لـ Gemini CLI: terminalNotifications.ts
- المشكلة #4310 في Gemini CLI: الإشعارات الصوتية
- النقاش #13313 في Gemini CLI: تفعيل الصوت عندما ينتهي Gemini
- Microsoft Learn: إعدادات ملف التعريف في Windows Terminal (bellStyle وbellSound)
- Microsoft Learn: Console.Beep