כש-Claude Code צריך שתבחרו בין אפשרויות, הוא קורא לכלי בשם AskUserQuestion ומחכה לבחירה שלכם. hook מסוג PreToolUse שמתאים ל-AskUserQuestion יכול לענות במקומכם, על ידי החזרת השאלה עם שדה answers מלא. כך עונים על שאלות של Claude Code מהטלפון: hook שולח את השאלה והאפשרויות לטלפון, מחכה לבחירה ומחזיר אותה. Claude Code Notifier עושה את זה ב-Mac, Windows ו-Linux בעזרת הכלי ccn ואפליקציית הטלפון.
01מה זה AskUserQuestion
לפעמים Claude מגיע לצומת שהוא לא אמור להחליט בה לבד. איזה framework? להשאיר את ה-API הישן או להסיר אותו? לתקן את הטסט או את הקוד? במקום לנחש, הוא שואל שאלה אמריקאית קצרה. ב-terminal רואים את השאלה וכמה אפשרויות עם תוויות ותיאורים, ובוחרים אחת עם המקלדת.
כמו כל קריאה לכלי, AskUserQuestion עוברת קודם דרך ה-hooks של Claude Code. זו הפתח שתשובה מרחוק צריכה.
שאלות שונות מבקשות הרשאה. בקשת הרשאה שואלת כן או לא לגבי פעולה אחת, וה-hook PermissionRequest עונה עליה (ראו אישור בקשות הרשאה של Claude Code מהטלפון). שאלה מבקשת לבחור, והתשובה היא תווית, לא "כן".
02איך hook מספק את התשובה
hook מסוג PreToolUse מקבל את הקלט של הכלי כ-JSON ב-standard input. עבור AskUserQuestion, הקלט מכיל מערך questions. לכל שאלה יש question (הטקסט), header (תווית קצרה), options (לכל אחת label ו-description) ו-multiSelect.
החזרה של "allow" לבד לא מספיקה לכלי הזה, כי התשובה צריכה להגיע ממקום כלשהו. לפי תיעוד ה-hooks של Anthropic, ה-hook צריך להחזיר את ה-questions ב-updatedInput ולהוסיף אובייקט answers שממפה את הטקסט של כל שאלה לתווית שנבחרה:
{
"hookSpecificOutput": {
"hookEventName": "PreToolUse",
"permissionDecision": "allow",
"updatedInput": {
"questions": [
{
"question": "Which framework?",
"header": "Framework",
"options": [
{ "label": "React", "description": "Component library" },
{ "label": "Vue", "description": "Progressive framework" }
],
"multiSelect": false
}
],
"answers": { "Which framework?": "React" }
}
}
}
בשאלה עם בחירה מרובה, מחברים את התוויות שנבחרו בפסיקים. אם ה-hook לא מדפיס כלום, השאלה מופיעה ב-terminal כרגיל.
רישום ה-hook
{
"hooks": {
"PreToolUse": [
{
"matcher": "AskUserQuestion",
"hooks": [
{ "type": "command", "command": "/path/to/your-answer-script" }
]
}
]
}
}
הכניסו את זה ל-~/.claude/settings.json כדי לכסות את כל הפרויקטים. לכל אירועי ה-hook ולמקום של כל אחד, ראו הסבר על hooks ב-Claude Code.
הערה על הרצות לא אינטראקטיביות
בהרצות claude -p, לפי התיעוד של Anthropic, AskUserQuestion זמין רק כשיש להרצה permission host שמקבל את ה-prompt, כמו callback מסוג canUseTool ב-Agent SDK. בהרצת סקריפט רגילה, ייתכן ש-Claude פשוט לא ישאל. המדריך הזה עוסק ב-sessions אינטראקטיביים.
03מה הופך תשובה מהטלפון לטובה
ה-JSON הוא החלק הקל. שאלות העיצוב זהות לאלה שעולות עם בקשות הרשאה:
- להציג את השאלה המלאה. הכותרת, השאלה והתיאור של כל אפשרות חשובים. תווית לבד ("Option B") לא עוזרת במסך הנעילה.
- לשמור על ה-terminal שמיש. אם אתם ליד המחשב, צריך להיות אפשר לענות שם, ולא לחכות ל-hook שמחכה לטלפון.
- לוותר בצורה נקייה. אם לא מגיעה תשובה, ה-hook צריך להחזיר כלום לפני ה-timeout כדי שה-prompt יופיע ב-terminal.
- להתאים את הטקסט בדיוק. המפתחות ב-
answersחייבים להיות טקסט השאלה כפי ש-Claude כתב אותו, והערכים חייבים להיות תוויות האפשרויות.
04שימוש ב-Claude Code Notifier
Claude Code Notifier הוא כלי עצמאי של TouchTap Ltd, ולא מוצר של Anthropic. כלי שורת הפקודה שלו, ccn, מתקין hook מסוג PreToolUse על AskUserQuestion לצד שאר ה-hooks שלו. כש-Claude שואל שאלה ואתם לא ליד המחשב, הטלפון מציג את השאלה והאפשרויות. מקישים על אחת, ה-hook מספק את התשובה ו-Claude ממשיך.
התקנה ב-Mac או ב-Linux:
curl -fsSL https://claudecodenotifier.com/install.sh | sh
או ב-Windows ב-PowerShell (בטא):
irm https://claudecodenotifier.com/install.ps1 | iex
אחר כך מצמידים את הטלפון בסריקת קוד ה-QR או בהקלדת הקוד בן 6 הספרות מהאפליקציה. המדריך חיבור הטלפון ל-Claude Code מסביר את התהליך בכל מערכת הפעלה.
הנוכחות קובעת איפה עונים
ccn משתמש באותו כלל נוכחות לשאלות כמו להרשאות. אם הקלדתם ב-30 השניות האחרונות, ה-terminal שואל כרגיל והטלפון מקבל לכל היותר התראה. אם אתם לא ליד המחשב, ה-terminal מחכה לטלפון עד לתקרה שתבחרו (hold_ceiling_seconds, בין 30 ל-3600, ברירת מחדל 600), ומפסיק לחכות ברגע שנוגעים במקלדת.
לבחור מה מגיע לטלפון
לשאלות יש הגדרה משלהן, notify_on_question, נפרדת מ-notify_on_permission ומ-notify_on_done, כך שאפשר להשאיר סוג אחד פעיל ולכבות אחר. ccn config show מציג את ההגדרות הפעילות, ואת רוב ההגדרות אפשר לשנות גם לכל מחשב בנפרד מאפליקציית הטלפון.
גם שעות שקטות חלות כאן, למשל ccn config set quiet_hours 22:00-08:00. ראו שעות שקטות ומצב נא לא להפריע.
גם בלי טלפון מצומד, ccn מציג התראת desktop חינמית במחשב כש-Claude שואל שאלה, כדי שתדעו לחזור. מענה מהטלפון דורש את האפליקציה, שההורדה שלה חינמית והשימוש בה דורש מנוי או רכישה לכל החיים. ראו מחירים.
05שאלות, הוראות המשך וסיום
שאלות הן אחד משלושה רגעים שבהם Claude מחכה לכם. השניים האחרים הם בקשות הרשאה וסוף תור. מיד אחרי ש-Claude מסיים, Claude Code Notifier מאפשר גם לשלוח את ההוראה הבאה מהטלפון, וה-hook Stop מחזיר אותה ל-Claude כהוראה הבאה שלו. יחד הם מכסים את רוב מה שגורם למשימה ארוכה להיתקע בהמתנה. המדריך להשאיר את Claude Code רץ וללכת מחבר את כולם לשגרה אחת.
06שאלות נפוצות
אפשר להקליד תשובה חופשית במקום לבחור אפשרות?
הדרך המתועדת דרך ה-hook עונה עם תוויות של אפשרויות דרך השדה answers. ב-Claude Code Notifier בוחרים מבין האפשרויות בטלפון. אם אף אחת לא מתאימה, השאירו את השאלה ל-terminal, או כוונו את Claude עם הוראת המשך כשהוא מסיים.
למה ה-"allow" של ה-hook PreToolUse שלי לא עונה על השאלה?
כי AskUserQuestion צריך תשובה, לא רק הרשאה. החזירו updatedInput עם ה-questions המקוריות ואובייקט answers, כמו בדוגמה למעלה.
מה אם Claude שואל כמה שאלות בבת אחת?
המערך questions יכול להכיל יותר משאלה אחת. האובייקט answers צריך רשומה לכל שאלה, כשהמפתח הוא הטקסט המדויק שלה.
זה עובד ב-VS Code, ב-Cursor או ב-JetBrains?
ה-hook שייך ל-Claude Code, לא ל-terminal, ולכן הוא מופעל גם ב-terminal המובנה של IDE. ראו התראות Claude Code ב-terminals של VS Code, Cursor ו-JetBrains.