מדריך גרוק CLI בעברית

תיעוד 45

תמיכה במסוף ופתרון בעיות

Grok Build רץ כ-TUI במסך מלא. הוא מסתמך על תמיכת המסוף בצבע, לוח גזירים, קלט מקלדת, קלט עכבר ותצוגת מסך מלא. מסופים, מרבבים (multiplexers), קונטיינרים והפעלות SSH עשויים לטפל בתכונות אלו בצורה שונה.

#אבחון ותיקון בעיות במסוף

הרץ /doctor בתוך Grok כדי לבדוק את ההפעלה הנוכחית ולראות תיקונים זמינים. אם Grok אינו מצליח לפעול, הרץ grok doctor במעטפת שלך. השתמש ב-grok doctor --json לקבלת דוח קריא למכונה.

Doctor בודק את המסוף, המרבב, התמיכה בצבע, התנהגות המקלדת וירידת שורה, נתיבי לוח הגזירים וזמינות המיקרופון כאשר לכידת שמע נכללת. הפקודה בתוך היישום יכולה גם לבדוק פרטי הפעלה חיים כגון מעקב מיקוד התראות והתנגשויות בפרופיל ארגז החול (sandbox).

דוח יכול להכיל בעיות או המלצות ועדיין להסתיים בהצלחה. grok doctor --json מדווח על אותה יכולת צבע בעת העברה בצינור (pipe). בדיקות מיקרופון אינן מתחילות הקלטה, כך ש-Doctor אינו יכול לזהות כשלי הרשאות ב-macOS המופיעים רק כדממה במהלך הלכידה.

הפקודות /terminal-setup, /terminal-check ו-/terminal-info נשארות כינויים (aliases) עבור /doctor.

כאשר Doctor מוצא הגדרת tmux מפורשת שאינה תקינה, /doctor fix מציג את התיקונים האוטומטיים הזמינים. החל תיקון אחד לפי שם בכל פעם, לדוגמה /doctor fix tmux-clipboard או grok doctor fix dcs-passthrough --yes. Doctor יכול לשמור לצמיתות את ארבע אפשרויות ה-tmux הבאות:

  • terminal.tmux-clipboard: set -g set-clipboard on
  • terminal.dcs-passthrough: set -wg allow-passthrough on
  • terminal.tmux-extended-keys: set -g extended-keys on
  • terminal.tmux-truecolor: set -as terminal-features ",*:RGB"

תיקון tmux עורך רק את התצורה הקבועה במחשב המארח את שרת ה-tmux המושפע, כולל הפעלות מרוחקות. tmux רגיל משתמש ב-$HOME/.tmux.conf האמיתי; Byobu-tmux משתמש ב-BYOBU_CONFIG_DIR הפעיל שלו ומסרב לנחש אם ספרייה זו אינה זמינה או אינה בטוחה. Grok שומר על סיומות השורות וההרשאות של הקובץ, יוצר גיבוי בעת שינוי קובץ קיים, ומסרב להשמות ישירות מתנגשות או מעורפלות.

Grok במכוון אינו מריץ tmux source-file או משנה את שרת ה-tmux החי. טען מחדש בעזרת הפקודה המדויקת שמוצגת לאחר ההחלה, או התנתק והתחבר מחדש, ולאחר מכן הרץ שוב /doctor. עד לטעינה מחדש, הממצא החי צפוי להישאר. סריקת התצורה השמרנית בודקת השמות גלובליות ישירות בלבד; בדוק בעצמך קבצים שנטענו (sourced files), תנאים, תוספים והגדרות tmux שנוצרו.


#מסופים מזוהים

Grok מזהה את מדמי המסוף הבאים מתוך משתני סביבה:

  • Apple Terminal
  • Ghostty
  • iTerm2
  • Warp
  • WezTerm
  • Kitty
  • Alacritty
  • Rio
  • foot (מבוסס Wayland מקורי, Linux)
  • המסופים המשולבים של VS Code, Cursor, Windsurf ו-Zed
  • מסופי IDE של JetBrains
  • Grok Desktop
  • מסופים מבוססי VTE כגון GNOME Terminal, GNOME Console ו-Tilix
  • Windows Terminal

לזיהוי יש את המגבלות הבאות:

  • בתוך tmux, משתנים המזהים את המסוף החיצוני עשויים שלא להגיע אל Grok.
  • מעל SSH, משתני מסוף רבים אינם מועברים.
  • הסביבה הגלובלית של tmux משקפת את הלקוח הראשון שהתחבר לשרת, ולא בהכרח את המסוף הנוכחי.

#בעיות נפוצות ותיקונים

#צבעים נראים שגויים או חסרי truecolor

הרץ /doctor. סביבה עם תמיכה מלאה מציגה color truecolor ו-themes all. אם לא, Doctor מציג את המגבלה שזוהתה ואת התיקון הרלוונטי.

בתוך tmux יש שתי שאלות נפרדות: איזה צבע Grok פולט, ואיזה צבע שורד את המרבב. השורה color עונה על השאלה הראשונה. לגבי השאלה השנייה, כאשר הלקוח המחובר אינו מסומן ב-RGB, ‏tmux משכתב כל צבע של 24 סיביות לצבע הקרוב ביותר שה-terminfo של המסוף החיצוני מפרסם, שעשוי להיות שמונה בלבד. ערכות נושא נראות אז דהויות למרות ש-color מציג truecolor. ‏Doctor מדווח על כך בתור terminal.tmux-truecolor. טען מחדש את תצורת ה-tmux שלך ולאחר מכן התנתק והתחבר מחדש: השרת קורא את האפשרות החדשה רק בטעינה מחדש, ולקוח מתקן את עומק הצבע שלו רק בעת חיבור, ולכן אף אחד מהשלבים לבדו אינו משנה דבר.

#בעיות בלוח הגזירים

Grok כותב דרך עד שלושה נתיבים, המוצגים ב-/doctor תחת Clipboard:

  • native: לוח הגזירים של מערכת ההפעלה המקומית.
  • tmux: חוצץ ההדבקה של tmux כאשר Grok רץ בתוך tmux.
  • OSC 52: רצף בריחה שיכול לחצות tmux, קונטיינרים או SSH.

#Wayland

מנהלי תצוגה (compositors) מודרניים של Wayland יכולים לעדכן את לוח הגזירים מבלי להשאיר את המסוף במיקוד. מנהלי תצוגה ישנים יותר עשויים לדרוש ש-Grok יישאר במיקוד עד שתופיע הודעת ההעתקה. Grok מציג אזהרת הפעלה כאשר הדבר מתקיים; הרץ /doctor עבור הסטטוס והשלבים שזוהו.

GROK_CLIPBOARD_NO_DATA_CONTROL=1 הוא גיבוי מתקדם שמשבית את נתיב ה-data-control. העתקות ישתמשו לאחר מכן בכלי לוח גזירים של שורת הפקודה.

#מתג השבתה עבור OSC 52

Grok פולט OSC 52 ב-Linux ועל פני tmux, SSH או קונטיינרים ללא תצוגה כאשר נתיב זה מופעל. מסוף שאינו מממש את OSC 52 עלול להציג את המטען המקודד כטקסט. הגדר GROK_CLIPBOARD_NO_OSC52=1 לפני הפעלת Grok כדי להשבית נתיב זה. לאחר מכן /doctor מציג osc 52 off; נתיבי ה-native וה-tmux נשארים ללא שינוי.

#בחירות X11 ב-Linux

ב-X11, הבחירות PRIMARY ו-CLIPBOARD הן נפרדות:

  • לחיצה אמצעית ללא מקשי שינוי קוראת את PRIMARY רק כאשר DISPLAY מוגדר. תחת XWayland, ‏xclip או xsel חייבים להימצא ב-PATH.
  • Ctrl+V קורא את CLIPBOARD ולעולם אינו נסוג אל PRIMARY.
  • Shift+Insert נשאר פעולת הדבקת הטקסט הנבחר של המסוף.

#SSH וטקסט נבחר

תהליך Grok מרוחק אינו יכול בדרך כלל לקרוא את הבחירה של המסוף המקומי. השתמש ב-Shift+Insert המקורי של המסוף, או החזק את Shift בעת לחיצה אמצעית כאשר המסוף משתמש במחווה זו כדי לעקוף דיווח עכבר.

כאשר Grok אינו יכול לזהות את המסוף החיצוני מעל SSH, הוא חוזה ש-OSC 52 יישלח אך מסמן את הנתיב כלא מאומת. הודעת ההעתקה הקופצת (toast) מציינת אז את קובץ הגיבוי כדי שתוכל לאחזר את הטקסט. הרץ /doctor לאפשרויות העתקה נוספות.

#Apple Terminal מעל SSH

Apple Terminal אינו תומך ב-OSC 52, לכן העתקה מרוחקת אינה יכולה להגיע ללוח הגזירים המקומי. כל העתקה עדיין נשמרת בקובץ גיבוי (~/.grok/last-copy.txt כברירת מחדל; ניתן לעקוף באמצעות GROK_COPY_FILE); ההודעה הקופצת מציינת נתיב זה כאשר המסירה אינה מאומתת או כאשר לוח הגזירים אינו נגיש. ניתן גם להשתמש ב-/copy <file> או ב-/minimal.

להעברה ישירה של לוח הגזירים, הרץ את פקודת ה-SSH מהמחשב המקומי דרך grok wrap, לדוגמה grok wrap ssh user@host. אותה פקודה יכולה לעטוף מעטפות של קונטיינרים ושל פודים (pods). היא גם משחזרת את מצבי המסוף לאחר ניתוק חיבור.

כאשר הפעלת SSH אינה משתמשת ב-grok wrap, ‏Grok מציג את הטיפ החד-פעמי "Run /doctor for details and fixes." הטיפ מפסיק להופיע לאחר שההפעלה מופעלת דרך wrap. כבה אותו באמצעות /settings -> Show contextual hints -> SSH wrap, או הגדר ssh_wrap = false תחת [ui.contextual_hints] ב-$GROK_HOME/config.toml. הגדרה זו אינה מסתירה את המלצת Doctor.

לשימוש חוזר ב-SSH, ‏Doctor מציע את grok doctor fix ssh-wrap. הוא מציג גם את הפקודה החד-פעמית, את הקובץ שישתנה ואת המקרים שבהם יש לעקוף את הכינוי. המזהה terminal.ssh-wrap נשאר מקובל ומופיע ב-JSON.

אזהרה: grok wrap הוא ניסיוני ועלול שלא לפעול בכל סביבה.

#iTerm2

iTerm2 עשוי לדרוש הרשאה לגישה ללוח הגזירים באמצעות OSC 52. הרץ /doctor; ההמלצה terminal.iterm2-clipboard-permission מציגה את ההגדרה שיש לבדוק.

#מסך מלא או מסך חלופי אינו מופעל

Zellij ומצב שליטה של tmux (control mode) יכולים להגביל את המסך החלופי. Grok משתמש בדרך כלל במצב שורה (inline mode) בסביבות אלו. הרץ /doctor כדי לראות את המצב שזוהה. ניתן להגדיר [terminal] alt_screen ב-~/.grok/pager.toml, או להריץ grok --no-alt-screen כדי לוודא שמצב שורה פועל.

#קיצורי מקשים של Zellij מתנגשים עם Grok

Zellij יכול ליירט מקשי Ctrl/Alt לפני שהם מגיעים אל Grok. ב-Zellij בגרסה 0.41 ומעלה, השתמש בהגדרה המוכנה מראש Unlock-First (non-colliding):

  1. לחץ על Ctrl+o, ולאחר מכן על c.
  2. פתח את Change Mode Behavior.
  3. בחר ב-Unlock-First (non-colliding).
  4. לחץ על Enter כדי להחיל זאת.

לחץ על Ctrl+g כאשר אתה זקוק לפקדי החלונית או ההפעלה של Zellij עצמו. במצב מינימלי, אם Ctrl+G עדיין אינו מגיע אל Grok, פתח את לוח הפקודות ובחר ב-Edit Prompt in External Editor. פעולה זו שומרת על הטיוטה הנוכחית; הקלדת /edit-prompt מתחילה טיוטת עורך ריקה מכיוון שהפקודה עצמה תופסת את אזור הכתיבה (composer).

#Ctrl+Enter אינו קוטע ב-WezTerm

WezTerm מגיע כאשר פרוטוקול המקלדת של Kitty מושבת. הרץ /doctor בתוך Grok. הממצא terminal.wezterm-kitty מציג את ההגדרה ואת שלב ההפעלה מחדש. מעל SSH, ‏Doctor מציג רק את הפתרון העוקף שיכול לפעול בהפעלה הנוכחית. Apple Terminal משתמש ב-Ctrl+O עבור קטיעה מכיוון שאינו יכול להבדיל בצירוף המקשים של Enter עם מקש שינוי.

#Shift+Enter אינו מכניס שורה חדשה ב-VS Code

המסופים של VS Code, Cursor, Windsurf ו-Zed משתמשים ב-xterm.js, אשר מממש באופן חלקי בלבד את פרוטוקול המקלדת של Kitty ומקודד בצורה שגויה מקשים ניתנים להדפסה עם מקש Shift. לכן Grok אינו מנהל משא ומתן על הפרוטוקול שם, ו-Shift+Enter עלול להגיע כ-CR זהה ל-Enter. הדבר משפיע גם על VS Code בחיבור מעל SSH כאשר TERM_PROGRAM אינו מועבר. השתמש ב-Alt+Enter כדי להכניס שורה חדשה; /doctor מדווח על terminal.newline-fallback עם ההסבר והפתרון העוקף שזוהו.

#גלילת עכבר מפסיקה לפעול

אם Grok מפסיק לקבל קלט עכבר, הפעל מחדש את דיווח העכבר במסוף:

  • Apple Terminal: ‏View -> Allow Mouse Reporting (Cmd+R).
  • iTerm2: ‏Settings -> Profiles -> Terminal -> Enable mouse reporting.

#הכתבה קולית אינה מקליטה דבר

לאחר כ-10 שניות ללא תמלול, Grok עוצר את הלכידה ומציג "No speech was detected. Voice stopped." יחד עם שלבים לתיקון המיקרופון. ב-macOS, הרשאת מיקרופון שנדחתה יכולה להיראות בדיוק כמו דממה מכיוון שההרשאה שייכת למסוף המארח את Grok. פתח את System Settings -> Privacy & Security -> Microphone, הפעל את המסוף והפעל אותו מחדש. אם הגישה כבר מופעלת, בדוק את התקן הקלט ועוצמת השמע תחת System Settings -> Sound -> Input ונסה שוב.

הרץ grok doctor, או הרץ /doctor כאשר מצב קולי פועל. החלק Voice מציג את המיקרופון שבו Grok ישתמש. אם אין התקן קלט זמין, Doctor מציג voice.no-input-device ואת השלבים הבאים. Doctor אינו יכול לזהות באופן פסיבי גישה שנדחתה למיקרופון ב-macOS כאשר macOS מספקת דממה.

ב-macOS, כל הכתבה משתמשת בתהליך עזר קצר מועד ללכידה, כך שזיכרון מחסנית השמע משתחרר כאשר הלכידה מסתיימת. אם תהליך העזר עצמו עשוי להיות הבעיה, הגדר GROK_VOICE_CAPTURE=inprocess כדי להשתמש בגיבוי הפועל בתוך התהליך לשם השוואה.

#Byobu עם GNU screen

ל-Byobu מעל GNU screen יש תמיכה מוגבלת. /doctor מדווח על terminal.byobu-screen ומסביר כיצד לעבור לממשק ה-backend של tmux ב-Byobu.

#טקסט בערבית ובפרסית (RTL)

מסופים רבים כבר מסדרים מחדש טקסט מימין לשמאל בעצמם (מסופים מבוססי VTE, ‏Terminal.app, ‏Konsole, ‏mlterm ואחרים). לכן Grok Build אינו מסדר מחדש RTL כברירת מחדל.

אם ערבית או פרסית בהיסטוריית הגלילה לאחור (scrollback) (או בתוכן רשימות) נקראות הפוך, הפעל סידור מחדש בצד היישום ב-~/.grok/pager.toml (או בתצורת הפרויקט):

[scrollback.display]
rtl_bidi = true

ההגדרה נטענת מחדש עם תצורת המראה (אין צורך בהפעלה מחדש מלאה). אם הטקסט נראה תקין עם ברירת המחדל והופך לשגוי לאחר הפעלת הגדרה זו, כבה אותה בחזרה, המסוף שלך כבר מטפל ב-bidi בעצמו.

כאשר היא מופעלת:

  • מסדרת מחדש שורות תוכן מלאות ב-scrollback, בתוכן רשימות ובמציג הבלוקים במסך מלא (בתוספת התצוגה המקדימה בלוח הבקרה והחלון הקופץ של hook, המשקפים את ה-scrollback). רכיבי מסגרת (chrome), תפריטים נפתחים ומודאלים נשארים לוגיים כך שבדיקת הלחיצות (hit-testing) שלהם נשארת עקבית.
  • משאירה עמודות טבלת markdown ללא שינוי.
  • הדגשות חיפוש, בחירה או העתקה בגרירה, בחירת מילה או כתובת URL בלחיצה כפולה, ומטרות לחיצה של קישורים ממופים כולם בין התאים המצוירים (החזותיים) לבין הטקסט הלוגי של אותה שורה, כך שהדגשות על המסך נוחתות על הגליפים הנכונים בעוד שהדבקה מלוח הגזירים נשארת בסדר לוגי.
  • כיוון הבסיס נקבע לכל שורה מצוירת בנפרד. שורת המשך בגלישה רכה שמתחילה באנגלית יכולה לקבל כיוון בסיס שונה מהשורה הראשונה של הפסקה.

זה אינו ממשק משתמש RTL במראה מלא.


#עדיין תקוע?

הרץ /feedback כדי לדווח על כך.