המדריך המלא ל-Claude
→ חזרה לנושא
פרק 28 · CLI

Headless: הרצה לא-אינטראקטיבית, pipes ו-JSON

מצב headless מריץ את Claude Code בלי ממשק אינטראקטיבי: פרומפט נכנס, תוצאה יוצאת. עם pipes, פלט JSON ו-streaming הוא הופך לרכיב בסקריפטים ובצנרת אוטומציה.

אומת מול המקור בתאריך 2026-09-30

סרטון פתיחה

כותבים Script רק אחרי שזה עובד

תכתבו קריאה לא-אינטראקטיבית מוגבלת, תבחרו פורמט פלט ותשאירו CI בלי בקשות אישור. הפלטים להמחשה.

מקורות headless ו-Agent SDK נבדקו ב-30 בספטמבר 2026: claude -p ל-scripts ו-CI, --bare לריצות ניתנות לשחזור ופורמטי JSON למכונות. בקריאת script אין מי שיענה, אז תכנון הרשאות הוא העיצוב.

קודם אינטראקטיבי

פרומפט שעובד פעם בסשן יכול לכשול בשקט ב-CI: תיקייה אחרת, הקשר חסר, אין מי שיענה. הריצו אינטראקטיבית במאגר התרגול, אז המירו עם דגלים מפורשים.

עצב בדיקת כתיב לא-אינטראקטיבית לקבצי תוכן הקורס.
קלט: ה-diff או רשימת קבצים שהמפעיל מספק, לא גישה רחבה למאגר.
פלט: ממצאי filename:line בלבד; פלט ריק פירושו נקי.
בלי עריכות, רשת, hooks או MCP בריצה.
Bare mode לשחזור

--bare מדלג על גילוי אוטומטי של hooks, skills, plugins, MCP, זיכרון ו-CLAUDE.md, כך שהריצה לא קולטת מה שעמית הגדיר. אימות מגיע אז מ-ANTHROPIC_API_KEY או apiKeyHelper בהגדרות מפורשות, לא OAuth.

git diff main | claude --bare -p "you are a typo linter. for each typo in this diff, report filename:line on one line and the issue on the next. return nothing else." --allowedTools "Read"

Piping של ה-diff אומר ש-Claude לא צריך גישת shell לנתונים. stdin ב-pipe מוגבל ל-10MB; קלט גדול שייך לקובץ שמאוזכר בנתיב.

פורמטים לאנשים ומכונות

--output-format json מחזיר metadata כולל total_cost_usd, כך שקריאות script עוקבות אחר הוצאה לכל ריצה. stream-json פולט אירועים בשורות. --json-schema כשקוד downstream מצפה לצורה; format הוא הערה, לא אכיפה.

claude --bare -p "List the chapter titles changed in this diff" --output-format json | jq -r '.result'

תמיד פרסרו: script שעושה grep לפרוזה נשבר כשהניסוח משתנה.

בלי שואל אין בקשות

בריצות -p אין מי שיאשר כלים: הם פועלים לפי כללים מוגדרים, וצורך לא מאושר נכשל או ממתין בלי אדם. --allowedTools מאשר מראש קבוצה צרה; שמרו מינימלית. CI שצריך Write למשימת lint הוא ריח עיצובי.

משימות Bash רקע שהתחילו בריצת -p מסתיימות זמן קצר אחרי התוצאה; subagents ו-workflows מחכים, עם גבול ברירת מחדל. סוכן תקוע לא יחזיק את ה-CI לנצח, אבל יכול לבזבז דקות, אז הגבילו את המשימה.

תרגול מדורג

קל: המרה

פרומפט אינטראקטיבי לקריאת -p. הצלחה: אותו פלט, דגלים מפורשים.

בינוני: פורמט

text, json או stream-json לשלושה צרכנים. הצלחה: מכונות מקבלות פלט מובנה.

מאתגר: כשל

הפרומפט צריך כלי לא מאושר. הצלחה: כשל ברור, לא תשובה שגויה שקטה.

תקלות

עובד מקומית, נכשל ב-CI: bare mode, אימות ותיקיית עבודה.

פלט ריק כהצלחה: הבחינו נקי מול קריסה דרך exit code.

מעל 10MB stdin: הפניה לנתיב קובץ.

תקיעה על משימת רקע: גבול ההמתנה ונחוצות המשימה.

הפתעת עלות: קראו total_cost_usd בפלט JSON לכל ריצה.

המחשת מנגנון (אנימציה)

דמו מצולם · הסרטון יתווסף בשלב המדיה

סיכום

בדיקת הבנה

למה מגבילים הרשאות בהרצת headless?

סיכום

מקורות וקריאה נוספת

→ הקודם חזרה לנושא הבא ←