לקריאה מהירה: איך הפסקתי לחכות לקלוד קוד והתפניתי לדברים אחרים
תוכן הפוסט
היי חברים,
אתמול שלחתי את קלוד למשימה ועברתי לחלון אחר. חזרתי לבדוק אחרי עשרים דקות, והתברר שהוא סיים כבר אחרי דקה. תשע־עשרה דקות ישבתי וחיכיתי למשהו שכבר קרה. ובפעמים הגרועות יותר הוא בכלל עצר באמצע וחיכה לאישור שלי, וכל הזמן הזה המשימה תקועה ואני לא מתקדם.
הפתרון קיים בתוך Claude Code ולא מצריך שום כלי חיצוני: HOOK.
ל-Claude Code יש נקודות בזמן שבהן הוא מודיע לעצמו שקרה משהו. Stop רץ כשהוא מסיים לענות, Notification רץ כשהוא עוצר ומחכה לכם. הוק זו פשוט פקודה שאתם מבקשים שתרוץ באחת הנקודות האלה, והפקודה שנחבר תנגן קובץ צליל שאתם בוחרים.
וחוץ מזה שזה פותר בעיה אמיתית, זה גם עושה את העבודה יותר כיפית. במקום צפצוף מערכת שמישהו אחר בחר בשבילכם, אתם שומעים משהו שאתם בחרתם. זה נשמע כמו פרט קטן עד שזה קורה בפעם הראשונה.
ההגדרה כולה יושבת בקובץ אחד, ~/.claude/settings.json, וזה הקובץ שברמת המשתמש ולא של פרויקט מסוים. ולכן זה עובד באפליקציה, בטרמינל וגם בתוך VS Code, בלי להגדיר שוב בכל מקום.
קודם כל, מאיפה לוקחים צלילים
myinstants.com לכל דבר שיעלה לכם לראש, ו-openpeon.com לחבילות צלילי אירועים שכבר מכוונות לעבודה מול מחשב (Age of Empires, Red Alert, TF2).
וקחו כמה, לא אחד. צליל אחד נמאס ביום השלישי, ותיקייה שלמה בהגרלה מפתיעה אתכם בכל פעם. אצלי יושבים שם יותר מ-40 קליפים: יש צופר שאין שום סיכוי לפספס, יש משרת בריטי מנומס מדי, ויש את ה-Woo Hoo! של הומר סימפסון שגורם לי לחייך בכל פעם מחדש.
את ההורדה ואת ההמרה אתם לא עושים בעצמכם. מספיק להעביר לקלוד את הכתובות והוא יביא וימיר לבד, וזה בדיוק מה שהפרומפט הבא מתחיל בו.
הפרומפט, ולמה לא לערוך את הקובץ ביד
קובץ ההגדרות שולט בכל התנהגות של קלוד אצלכם, ופסיק אחד במקום הלא נכון משתיק בשקט את כל מה שיושב בו. עדיף לתת לו לערוך את עצמו ולבקש ממנו להוכיח שכלום לא נשבר.
הפרומפט הזה עושה את הכל ברצף אחד: מוריד, ממיר, מגדיר את ההוק עם ההגרלה, ובודק את עצמו. החלק היחיד שאתם משנים בו מסומן בסוגריים:
תגדיר לי צליל שיתנגן בכל פעם שאתה מסיים משימה.
--- כאן מדביקים את הלינקים שלכם ---
הצלילים שאני רוצה:
https://www.myinstants.com/en/instant/example-a
https://www.myinstants.com/en/instant/example-b
https://www.myinstants.com/en/instant/example-c
--- סוף החלק שלכם ---
תוריד אותם, תמיר ל-WAV מסוג PCM, ותשמור בתיקייה הזאת:
~/.claude/sounds
וזה קובץ ההגדרות שצריך לערוך, זה שבתיקיית הבית ולא של פרויקט:
~/.claude/settings.json
לפני שאתה נוגע בהגדרות: תגבה את הקובץ ותגיד לי מה יש בו עכשיו.
תוסיף רק הוק Stop, שמגריל בכל הפעלה קובץ אחר מתוך התיקייה.
אל תשנה ואל תמחק שום דבר אחר שכבר קיים שם.
אחרי שסיימת, תוודא שלושה דברים ותגיד לי את התוצאה:
שה-JSON תקין, שכל מה שהיה בקובץ לפני עדיין נמצא בו,
ושהפקודה מתאימה למערכת ההפעלה שלי.
ואז תריץ את ההוק כמה פעמים ותדפיס לי בכל הרצה איזה קובץ נבחר,
עד שיצאו שני קבצים שונים.
אם אחד מהם לא מסתדר, תחזיר מהגיבוי ותעצור.
מכאן זה בתוספת קבצים בלבד: כל wav חדש שתזרקו לתיקייה מצטרף לרוטציה בלי לגעת בהגדרות שוב.
ושתי השורות שעושות את ההבדל הן האחרונות. הגיבוי הוא מה שמאפשר לחזור אחורה אם משהו נשבר, ובקשת ההרצות היא הבדיקה האמיתית: הגרלה תקועה שמחזירה תמיד את אותו קובץ נראית בדיוק כמו הגרלה שעובדת.
שתי מלכודות שצריך לשים אליהן לב
הפורמט, ובגללו שורת ההמרה בפרומפט. הפקודה שההוק מריץ מנגנת דרך נגן המערכת, וזה מנגן WAV מסוג PCM בלבד. קובץ mp3 ששינו לו את הסיומת ל-wav ייראה תקין לגמרי ופשוט לא יישמע.
ואל תסיקו מהיעדר שגיאה שזה עבד. הוק שנכשל מחזיר בדיוק את אותו קוד יציאה כמו הוק שהצליח, אז מסך נקי הוא לא הוכחה שההוק רץ. האוזן היא הבדיקה היחידה שאי אפשר לרמות כאן.
ותקשיבו בשיחה חדשה: ההגדרות נטענות בתחילת שיחה, אז שיחה שהייתה פתוחה בזמן ההגדרה לא מכירה את ההוק, וזו הסיבה הכי נפוצה ל"עשיתי הכל ולא קורה כלום".
אני יודע שיש מי שיקרא לזה גימיק. גם אני חשבתי ככה, עד שהפסקתי לשבת מול המסך ולבדוק אם הוא סיים. זה משפר את היום ולא רק את הזרימה, והסיבה שזה מעלה חיוך על השפתיים כל סיום משימה היא הסיבה העיקרית שאני ממליץ על זה פה לחברים.
אשמח לשמוע מה שמתם, ובאיזה צליל בחרתם.
---
אסי אייס, מייסד הדלוריאן
נכתב על ידי Asi Ace