7 Integration · פרק 7 מתוך 8

להרכיב צי אמיתי: gru-ai, Orloj והחברים — Templates, Observability ו-Governance

שישה פרקים בנית את הצי על הנייר: org chart, SOPs, loop, autonomy, P&L. עכשיו מרכיבים אותו לצי חי — מתבנית קוד-פתוח מאומתת (gru-ai/Orloj) או מ-stack מינימלי (API + cron + git) — ועוטפים בשתי שכבות חיוניות: traces ב-Langfuse על כל קריאת מודל שמציגים tool-call failures ו-runaway loops בזמן אמת, ו-runtime governance ב-Orloj שחוסמת פעולה לפני שהיא יוצאת (allowed models, blocked tools, approval gate מעל סף ₪). זה הפרק שבו "החברה של אחד" עוברת מתיאוריה לצי production שמייצר תוצרים בש"ח.

בסוף הפרק תדע/י לעשות את זה

הפרק הזה הוא ההרכבה. עד עכשיו תכננת חלקים נפרדים; כאן הם הופכים למערכת אחת שרצה. בסוף תוכל/י:

מה צריך להביא לפרק הזה

זה פרק אינטגרציה — הוא מניח שכבר יש לך את החלקים. אם דילגת על אחד מהם, חזור/חזרי אליו לפני שתרכיב:

הבהרת גבולהפרק הזה הוא שכבת ה-עסק: איך מרכיבים ומפעילים צי. הוא לא מלמד איך בונים agent runtime מאפס — זה קורס agent-harness. כשנגיע לפרטי ה-plumbing נצביע על התבנית שמטפלת בהם, לא נבנה אותם בעצמנו.

שלושת התוצרים של הפרק

בסוף הפרק יהיו בידיך שלושה תוצרים מוחשיים, שכולם נכנסים ל-git ומשמשים בסיס ל-capstone של פרק 8:

  1. צי חי מורכב — מתבנית מאומתת (gru-ai / Orloj / Hermes) או stack מינימלי, עם ה-org chart, ה-SOPs וה-loop מהפרקים הקודמים מחוברים בפועל ורצים על תפקיד אחד לפחות מקצה לקצה.
  2. Observability dashboard על הצי (Langfuse או Braintrust): traces, פירוק tool-call, וזיהוי runaway loops — "מצלמת אבטחה" על החברה.
  3. מסמך build-vs-buy + portability plan: בחירת ה-stack מנומקת במספרים, חוקי governance שנאכפים ב-runtime, ונתיב export מפורש נגד lock-in.

חוט הפרויקט: איפה אנחנו ברצף

בפרק הקודם (6 — "ה-P&L של הסוכנים") הפכת את הצי ל-cost center עם מרווח: חישבת cost-per-role בש"ח, זיהית את מלכודת ה-loop הריבועי, ובנית model-routing policy. עכשיו יש לך מספרים — וזה בדיוק מה שצריך כדי לבחור stack.

בפרק הזה (7) אנחנו לוקחים את כל מה שתכננת על הנייר — org chart, SOPs, loop, autonomy, payroll — ומרכיבים אותו לצי שרץ באמת, מתבנית קוד אמיתית. מוסיפים observability שרואה אותו ו-governance שמרסנת אותו, ומבטחים מפני lock-in.

בפרק הבא (8 — ה-capstone) תפעיל/י את צי ארבעת התפקידים המלא כעסק ישראלי: agent payroll בש"ח, הצעת "תפקיד-כשירות" מול ~₪45,000 של סוכנות, ו-production checklist. הפרק הזה בונה את התשתית שעליה ה-capstone רץ.

שלוש הדרכים להרכיב צי — ואיזו מתאימה לך

בפרק 2 הכרת את ההבחנה ברמה התיאורטית: framework מול OS מול minimal stack. עכשיו צריך להחליט באמת, כי אתה עומד להרכיב. ההחלטה לא נקבעת לפי מה שמגניב — היא נקבעת לפי רמת הנוחות ההנדסית שלך ולפי כמה governance ה-use-case שלך באמת דורש. operator עסקי שמוכר ייעוץ לא צריך את אותה תשתית כמו מי שמריץ פעולות כסף אוטומטיות מול חשבונות לקוחות.

בוא נפרק את שלוש הדרכים. כל אחת מהן מאומתת בקורס — אלה לא רעיונות תיאורטיים אלא repos ופלטפורמות שקיימים היום (נכון ל-2026):

שכבהדוגמה מאומתתמתי לבחורהמחיר האמיתי
Framework (קוד)CrewAI (role-based) · LangGraph (graph + audit)נוח/ה לכתוב מעט קוד; רוצה שליטה מלאה על ה-flow; הצי קטן עד בינוניחינם (רישיון); משלם/ת טוקנים; אתה אחראי לתשתית
Template OSS (תבנית מוכנה)gru-ai (MIT) · Hermes Agentרוצה org chart מוכן + pipeline; נוח/ה עם Claude Code ו-Terminal; build/ship מהירחינם (רישיון); משלם/ת טוקנים; pre-1.0 — לקבע גרסה
Agent OS (תשתית-כקוד)Orloj (Apache-2.0) · Knowlee (מסחרי)צריך/ה governance production: approval gates, token budgets, audit trail מובנהOrloj חינם (OSS); Knowlee מסחרי = lock-in
Minimal (הרכבה ידנית)plain LLM API + cron + gitהצי קטן (1–3 תפקידים); רוצה שליטה מלאה ואפס תלות framework; חשוב לך/ך לדעת בדיוק מה רץחינם פרט לטוקנים; אתה בונה את ה-glue

שים/י לב לעמודה האחרונה. "חינם" כאן הוא חינם ברישיון בלבד — gru-ai, Orloj ו-Hermes כולם פתוחים וללא תשלום על הקוד, אבל מתחתם רץ מודל ששולח חשבון טוקנים. צי always-on יכול להשתוות בעלותו למשכורת (חזרה ל-P&L של פרק 6). אל תבלבל "free OSS" עם "free to run".

הנה דוגמה מספרית שממחישה את הפער: נניח שהצי שלך כולל 4 סוכנים שרצים כל אחד 20 פעמים ביום, צורך בממוצע 4,000 טוקנים לריצה (input+output), על מודל שעולה ₪0.06 לאלף טוקנים. חישוב מהיר: 4 × 20 × 4,000 × 0.06/1,000 = ₪19.2 ליום, כלומר ~₪576 לחודש — בלי קריאות eval, בלי retries, בלי טריוויה אנושית. זו עלות חודשית שצריך להפחית ב-routing policy של פרק 6 (לשלוח חלק מהקריאות למודל זול יותר), ולכן ההחלטה "איזה stack" מתחילה בשאלה "כמה governance ה-use-case דורש" — לא "כמה זמן ההרכבה לוקחת".

Framework: בחירת ה-stack לפי שלוש שאלות

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

הכלל מאחורי השלושה: אל תאמץ יותר תשתית ממה שה-use-case דורש. over-engineering של ה-plumbing הוא הטעות הקלאסית של מי שמבלבל את הקורס הזה (עיצוב ארגון) עם הנדסת runtime.

עשה/י עכשיו (3 דקות)

פתח/י את ה-org chart מפרק 2 ורשום/רשמי שלוש שורות:

  1. כמה תפקידים בצי שלך כרגע? (1–3 / 4–6 / יותר)
  2. האם אחד מהם נוגע בכסף או ברשומות שצריכות audit trail? (כן / לא)
  3. על סולם 1–5, כמה נוח/ה לך לקרוא ולערוך קובץ YAML?

שלוש התשובות האלה הן הקלט להחלטת ה-stack. אם ענית "1–3 תפקידים, לא נוגע בכסף, נוחות 2" — minimal. אם "כן נוגע בכסף, נוחות 4" — Orloj. שמור/שמרי את התשובות, נחזור אליהן בסעיף 7.

פלט צפוי מדויק: שלוש שורות בקובץ .context/stack-decision.md בפורמט:

תפקידים: 4
נוגע בכסף: כן (Finance renewal agent בלבד)
נוחות YAML: 3
החלטה: Orloj (governance production נדרש על חיובי לקוחות)

טעות נפוצה: לבחור stack כבד כי הוא "מקצועי"

operator סולו שמתחיל לא צריך Agent OS עם runtime governance כדי לשלוח שלוש הודעות outreach ביום. בחירת Orloj כש-minimal הספיק מוסיפה שבועות של setup, עקומת למידה של YAML, ותלות ב-API pre-1.0 — בלי ערך מוסף ל-use-case הקטן. התחל/י קטן, שדרג/י כשכואב. השדרוג מ-minimal ל-OS קל; הירידה מ-over-engineered ל-פשוט יקרה.

מדד מעשי לבדיקה: אם אתה מסוגל/ת לתאר במשפט אחד את הפעולה ההפיכה הגרועה ביותר שהסוכן יכול לעשות (למשל "לשלוח outreach ללקוח שלא מתאים"), והפעולה הזו לא נוגעת בכסף או ברשומה — אתה כנראה ב-minimal. אם הפעולה ההפיכה היא "לחייב לקוח בסכום שגוי" — אתה ב-OS.

gru-ai מקרוב: צוות 11 סוכנים על Claude Code

gru-ai (הריפו andrew-yangy/gru-ai) הוא תבנית קוד-פתוח ברישיון MIT שמתארת את עצמה כ-"autonomous AI agent team for one-man companies" — צוות סוכנים אוטונומי לחברות של איש אחד. נכון לתאריך המחקר (יוני 2026) הוא ~142 כוכבים ב-GitHub, כתוב ב-TypeScript (~78%), ובפיתוח פעיל. הוא הופך את Claude Code ל"צוות" של 11 סוכנים.

הרעיון המרכזי שמתאים לקורס הזה: directive בודד זורם דרך pipeline בן 15 צעדים. אתה כותב הנחיה אחת (למשל "תוסיף dark mode"), והיא עוברת תחנות שמדמות חברה אמיתית:

שלב ב-pipelineמי עושהמה קורה
triage → audit → debateסוכני C-suiteהסוכנים מתווכחים על ההנחיה (כמו ישיבת הנהלה)
clarify → planCOO agentמפצל את ההנחיה לפרויקטים ומשימות
buildסוכני engineeringבונים על branches מבודדים (כל אחד בנפרד)
reviewסוכני fresh-contextבודקים בעיניים "טריות" שלא ראו את הבנייה
ship → approvalאוטומציה + אתהלכידת lessons אוטומטית, ואז האישור שלך

שתי תכונות הופכות את gru-ai לרלוונטי במיוחד לכל מה שבנינו עד כה:

דוגמה מעשית ל-directive שזורם ב-pipeline: נניח שאתה מנהל סטודיו קטן לעיצוב ואתה רוצה להוסיף דף תמחור חדש לאתר. אתה כותב directive אחד: "צור/י דף תמחור עם 3 חבילות, מחירים בש"ח, וקריאת CTA לוואטסאפ." ב-pipeline של gru-ai, סוכן triage בודק אם הבקשה ברורה; אם לא — סוכני C-suite (PM, Designer, Engineer) מתווכחים איזו חבילות הגיוניות. סוכן COO מפצל למשימות: copy לחבילות, עיצוב, הטמעה. סוכן engineering בונה branch; סוכן fresh-context עובר על ה-PR בעיניים נקיות; ship+lessons קולט את ההחלטות שקיבלת ("חבילה בסיסית ₪990, מקצועית ₪2,490, ארגונית ₪4,990") ושומר אותן ל-.context/lessons/ כדי שה-directive הבא לדף "שאלות נפוצות" יידע מה הקול המותגי שלך. בלי gru-ai, היית עושה את כל זה ידנית או עם פרומפטים בודדים; איתו — יש תהליך עקבי שחוזר על עצמו ומשתפר.

טעות נפוצה: לצפות מ-gru-ai לנהל את כל סוגי התפקידים

gru-ai מצוין ל-build/ship work — עבודת engineering שבה directive הופך לקוד שנשלח. הוא לא תבנית כללית למכירות, תמיכה או כספים. אם הצי שלך הוא בעיקר SDR שמסנן לידים וסוכן תמיכה שעונה ללקוחות, gru-ai הוא דוגמת org-chart מצוינת ללמוד ממנה את ה-.context/ pattern — אבל ה-pipeline בן 15 הצעדים שלו מותאם לבנייה, לא לתפעול לקוחות. אל תכופף use-case תפעולי לכלי שתוכנן ל-shipping.

עשה/י עכשיו (5 דקות) — לבחון את ה-pattern, לא להתקין

גם אם לא תבחר/י ב-gru-ai, ה-.context/ pattern שלו הוא הנכס. פתח/י את ה-repo של ה-"חברה" שלך מפרק 3 וודא/י שיש בו את שלוש התיקיות שמחקות את gru-ai:

אם תיקייה חסרה — צור/צרי אותה עכשיו. זה "מוח החברה" המינימלי, והוא נכון לכל stack שתבחר/י.

פלט צפוי מדויק: פלט ls .context/ בטרמינל שמחזיר בדיוק:

roles
sops
lessons
governance.md

אם חסרה תיקייה — צור/צרי אותה עם mkdir -p .context/<name> ואז git add .. אל תמשיך/י לסעיף הבא לפני שהפלט תואם.

Orloj מקרוב: agents כ-infrastructure-as-code

אם gru-ai הוא "צוות מוכן", Orloj (הריפו OrlojHQ/orloj) הוא הקצה השני: agent infrastructure-as-code — תשתית-סוכנים-כקוד. במקום לכתוב לוגיקה, אתה מצהיר על Agents, Tools ו-Policies כ-YAML, ו-Orloj מתזמן, מריץ, מנתב ומסדיר אותם ל-production. הוא ברישיון Apache-2.0, כתוב ב-Go (~80%), ~102 כוכבים נכון ליוני 2026, ובפיתוח פעיל (pre-1.0).

הרעיון שמבדל אותו: הוא מתייחס לסוכנים כתשתית. versioned manifests, runtime bounds, credentials, observability — הכל בערימת config אחת מוצהרת. ערימה אחת מכסה agents, tools, models, memory, schedules, webhooks, approvals, policies, workers, traces, metrics ו-deployment.

ה-resources שמגיעים מובנים ב-Orloj הם בדיוק המושגים שבנינו בפרקים 4–5 — אבל כאן הם native, לא משהו שאתה מרכיב ידנית:

Orloj resourceמה הוא עושהאיפה פגשנו אותו
AgentRole / AgentPolicyמגדיר תפקיד ומה מותר לוorg chart + scope (פרק 2)
ToolPermission / ToolApprovalאילו tools מותרים, ומה דורש אישורapproval gates (פרק 5)
TaskApprovalמשימה שלמה שדורשת חתימה אנושיתcalibrated autonomy (פרק 5)
EvalDataset / EvalRungolden data + הרצת ניקוד מולהeval gate (פרק 4)
cron / webhooks + worker leasesתזמון עם heartbeatsscheduling loop (פרק 4)

הנה דוגמה מצומצמת למניפסט Orloj (YAML) עבור סוכן finance-renewal אחד — זה ה-config שמחליף את ה-Skill + ה-approval gate הידני מפרק 5:

apiVersion: orloj/v1alpha1
kind: AgentPolicy
metadata:
  name: finance-renewal
spec:
  allowedModels: ["claude-haiku-4-5", "claude-sonnet-4-5"]
  blockedTools: ["send_email", "refund_customer", "delete_account"]
  tokenBudgetPerRun: 15000
  tokenBudgetPerDay: 200000
  childDepth: 0
  approvals:
    - kind: TaskApproval
      threshold: 100     # ש"ח
      approver: owner
    - kind: ToolApproval
      tool: charge_customer
      threshold: 100
      approver: owner

המניפסט הזה הופך את הכללים מפרק 5 לקוד שאכיף אותם: סוכן finance-renewal לא יכול לקרוא ל-Opus (לא ב-allowedModels), לא יכול למחוק חשבון (חסום), ולא יכול לחייב יותר מ-₪100 בלי אישור. אלה לא הנחיות למודל — זה ה-runtime שעוצר את הקריאה לפני שהיא יוצאת.

הדבר החזק ביותר ב-Orloj הוא ש-ה-governance מוערכת ב-runtime, ונכשלת-סגור (fail-closed). נחזור לזה בסעיף ה-governance — אבל בקצרה: אם הסוכן מנסה לקרוא למודל שלא ברשימת ה-allowed, להשתמש בכלי חסום, או לחרוג מ-token budget, Orloj עוצר אותו, לא מתעלם. זה ההבדל בין "כתבתי בהנחיה שאסור" (המודל אולי יציית) לבין אכיפה אמיתית בתשתית.

טעות נפוצה: לקבע על Orloj בלי pin לגרסה

Orloj מצהיר במפורש שהוא pre-1.0 ושה-APIs עשויים להשתנות. אם תבנה דמו או צי production מולו בלי לקבע (pin) גרסה ספציפית, עדכון אחד יכול לשבור את כל ה-manifests שלך — והצי "ירקב". תמיד pin את הגרסה ב-config ובתיעוד, ובדוק/בדקי changelog לפני שאתה משדרג. זה נכון לכל תלות pre-1.0, לא רק Orloj. דוגמה מעשית: הוסף/י ל-requirements של הפרויקט שלך שורה כמו orloj==0.7.2 ולא orloj>=0.7 — הראשון מקובע, השני מאפשר שבירה שקטה בעדכון הבא.

Framework: gru-ai מול Orloj — מי לאיזה operator

שתי התבניות הן דוגמאות מאומתות, לא המלצות קנייה. בחר/י לפי ה-use-case שלך, לא לפי הכוכבים ב-GitHub.

לחבר את החלקים: מ-org chart ל-SOPs ל-loop חי

בחרת stack. עכשיו מחברים את כל מה שבנית בפרקים 2–6 לתוכו. זה הרגע שבו תיאוריה הופכת לצי שרץ. הסדר חשוב — חבר/י שכבה אחר שכבה, ואל תנסה/י להפעיל הכל בבת אחת:

1

טען/י את ה-org chart (פרק 2)

כל תפקיד מה-org chart הופך ל-agent definition ב-stack שבחרת: ב-minimal זה קובץ role Markdown + פונקציה; ב-gru-ai זה entry ב-.context/roles/; ב-Orloj זה AgentRole YAML עם scope ו-policy. כאן ה-scope of authority מפרק 2 הופך לאכיף.

2

חבר/י את ה-SOPs כ-Skills (פרק 3)

כל SOP אגנטי (Markdown + RFC 2119) נטען לסוכן. ב-Claude Code זה Skill שהסוכן טוען אוטומטית בעת הצורך — "כתבת פעם, נטען לבד". ב-minimal זה קובץ שאתה מזריק ל-context בתחילת ריצה. ה-MUST/SHOULD/MAY שכתבת הופכים לנהלי הריצה בפועל.

3

הרכב/י את ה-loop (פרק 4)

חבר/י cron/heartbeat (Hermes self-host או Claude Code Routines managed) → eval gate מול ה-golden dataset → reflexion שכותב ל-.context/lessons/. ודא/י idempotency: marker של "כבר טופל" כך שריצה חוזרת לא תעבד שוב את אותם לידים ולא תשלח כפול ללקוח (האזהרה מפרק 4). דוגמה מעשית ל-idempotency: לפני שליחת outreach, הסוכן בודק ב-Supabase/Sheets אם lead_id + template_id כבר קיים; אם כן — דילוג. עלות הבדיקה: ~0.001 ₪. עלות משלוח כפול ללקוח: פגיעה במוניטין.

4

הדבק/י את ה-autonomy (פרק 5)

approval gates על פעולות כסף/רשומות, עם סף ₪ + named approver. ב-Orloj זה ToolApproval/TaskApproval native; ב-minimal זה תור אנושי פשוט (queue) שהסוכן כותב אליו ועוצר עד אישור. כל תפקיד מתחיל ב-human-in-the-loop.

5

הצמד/י observability ו-payroll (פרקים 6–7)

עטוף/עטפי כל קריאת מודל ב-tracing (סעיף הבא), ונתב/י את ה-traces ל-dashboard. במקביל, ה-token counts מ-traces מזינים את ה-agent payroll dashboard מפרק 6 — עכשיו העלות נמדדת אוטומטית, לא משוערכת.

שים/י לב מה קרה כאן: פתרת את בעיית נקודת-האינטגרציה מפרק 1. במקום כלים מפוזרים שאתה ה-glue היחיד ביניהם, יש לך שכבה אחת — ה-stack — שבה כל סוכן יודע מי בעליו, מה ה-scope שלו, ומה ה-loop שלו. הצי פועל כמערכת אחת.

עוד דוגמה לעומק: נניח שבחרת minimal stack, והתפקיד הראשון הוא "support-triage". תיקיית .context/roles/support-triage.md מכילה role+goal+scope; קובץ .context/sops/support-triage.md מכיל את ה-SOP עם RFC 2119 ("MUST לסווג לאחת מארבע קטגוריות", "SHOULD להציע מאמר מה-base אם confidence > 0.7", "MUST להעביר לאנוש אם category = billing"). סקריפט support-triage.py בתיקיית bin/ טוען את שני הקבצים, קורא ל-API, מחזיר JSON עם category+confidence+reply. cron מפעיל אותו כל 5 דקות על תור נכנס. ה-tracing עוטף את קריאת ה-API. כל אלה קבצים ב-git. כל שינוי — diff. כל רגרסיה — revert.

עשה/י עכשיו (10 דקות) — ריצת smoke test

אל תחבר/י את כל ארבעת התפקידים בבת אחת. קח/י תפקיד אחד (מומלץ ה-morning brief מפרק 4, הכי לא-מסוכן) והרץ/י אותו דרך כל חמשת השלבים על ה-stack שבחרת. בדוק/בדקי שלושה דברים:

  1. הסוכן טען את ה-SOP הנכון? (חפש/י בלוג שהוא קרא את הקובץ)
  2. ה-trace הופיע ב-dashboard? (אם לא — ה-observability לא מחובר, תקן/י לפני שתמשיך/י)
  3. ה-idempotency marker נכתב? (הרץ/י שוב — לא אמור לעבד שוב את אותם נתונים)

אם שלושת אלה ירוקים — יש לך צי חי על תפקיד אחד. עכשיו תוכל/י להוסיף תפקידים אחד-אחד.

פלט צפוי מדויק של ה-smoke test:

[09:00:01] cron tick: support-triage started
[09:00:01] loaded SOP .context/sops/support-triage.md (v1.2)
[09:00:02] loaded role .context/roles/support-triage.md
[09:00:03] found 7 tickets in queue
[09:00:04] idempotency: 2 already processed, 5 new
[09:00:08] processed 5 tickets → 4 self-served, 1 escalated to human (billing)
[09:00:08] trace: langfuse span id=abc123 tokens=2,340 cost=₪0.14
[09:00:08] done

טעות נפוצה: לחבר את כל הצי בבת אחת

הפיתוי הוא להעלות את ארבעת התפקידים ביחד ולראות "צי מלא". הבעיה: כשמשהו נשבר — וזה ישבר — אין לך מושג איזה תפקיד, איזו שכבה, או איזה SOP אשם. חבר/י תפקיד אחד, ירק/ירקי אותו end-to-end, ורק אז הוסף/הוסיפי את הבא. debugging של מערכת אחת קל; debugging של ארבע שמתחברות בו-זמנית הוא סיוט.

ובנימה אישית: גם אם התפקיד הראשון משעמם (morning brief הוא לא "core product"), דווקא הוא המקום ללמוד את התקלות: קריאות API שנופלות, tokens שמנופחים, idempotency שלא עובד. כשתגלה את הקריסה הראשונה על תפקיצ'ר מסוכן (חיוב, משלוח), תודה לעצמך שלימדת את זה על ה-morning brief.

Observability: מצלמת האבטחה על הצי

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

למה זה קריטי דווקא לסוכנים? כי רוב התקלות בסוכנים אינן שגיאות מודל — הן שלוש בעיות אחרות שכלי ניטור רגיל (APM — application performance monitoring, ניטור ביצועי אפליקציה) פשוט לא רואה:

התקלהמה קורהלמה APM רגיל לא רואה
tool-call failureהסוכן קרא לכלי (API, חיפוש, DB) והוא נכשל — והסוכן המשיך כאילו כלוםהקריאה "הצליחה" טכנית; השגיאה היא בלוגיקת הסוכן, לא ב-HTTP
context truncationההיסטוריה גדלה מעבר ל-context window; חלקים נחתכים בשקט והסוכן "שוכח"אין שגיאה — רק תשובה גרועה יותר; נראה תקין מבחוץ
runaway loopהסוכן נתקע בלולאה, חוזר על אותו צעד, ושורף טוקנים בלי להתקדםכל קריאה בודדת תקינה; הבעיה היא בדפוס, שרק trace מלא חושף

מה ש-trace טוב מראה לך: node-by-node state (מצב בכל צעד), פירוק model + tool-call (לאיזה מודל פנה, איזה כלי קרא), retries (כמה פעמים ניסה), ו-loops (אם נתקע). זו ממש מצלמת אבטחה על כל החברה — אתה רואה כל סוכן בכל רגע.

דוגמה מספרית למה זה חיוני: נניח שהרצת סוכן support-triage בלילה. סוכן support נתקל בלקוח שמתלונן על "חיוב כפול", מחפש ב-DB, לא מוצא, מנסה שוב, מחפש ב-API, לא מוצא, מנסה שוב, ובמשך 47 דקות שורף 1.2M טוקנים (~$72) בלי להגיע לפתרון — ואז קורס ב-OOM. בלי trace, אתה רואה רק "ההרצה נכשלה, ₪72 נשרפו". עם trace, אתה רואה: 14 ניסיונות חיפוש חוזרים, אותו prompt, אותה תשובה "no results", לולאה ברורה. התיקון: להוסיף max-retries=3 לסוכן הזה, או להעבירו לאנוש אחרי 3 ניסיונות כושלים. בלי trace — אתה לא יודע מה ה-pattern, ולכן לא יודע איך לתקן.

שלושת הכלים המאומתים — ומתי כל אחד

נכון ל-2026, אלה שלושת השחקנים. כולם תומכים ב-tracing של סוכנים; ההבדל הוא ברישוי, ב-eval, ובאקוסיסטם:

כליהחוזקרישוי / free tierמתי לבחור
Langfusebest OSS / self-host; אתה הבעלים של הנתוניםOSS (MIT), חינם ל-self-host (נרכש ע"י ClickHouse ינואר 2026, נשאר חינמי)רוצה $0 infra, portability מלאה, שליטה על הנתונים
Braintrusteval-first; ה-CI/CD eval gates הכי חזקיםfree tier הנדיב ביותר: 1M spans/חודש, 10K eval runsה-eval gate (פרק 4) הוא הלב; רוצה tracing + eval במקום אחד
LangSmithtracing הכי עמוק ל-LangChain/LangGraph (node-level state diffs, replay מול מודלים חדשים)free tier קיים; per-seat מעליובנית על LangGraph (framework מפרק 2) ורוצה אינטגרציה native

ל-operator עסקי ישראלי שמתחיל, Langfuse OSS הוא לרוב הבחירה הנכונה: $0 infra, אתה מחזיק את הנתונים בעצמך (חשוב ל-portability — נגיע לזה), ואין lock-in. אם ה-eval gate הוא מרכז הכובד שלך — Braintrust. אם בנית על LangGraph — LangSmith.

טעות נפוצה: לדלג על observability "עד שיהיה זמן"

זו הטעות שמתגלה רק כשלקוח מתלונן. בלי tracing, runaway loop ששורף ₪400 בטוקנים בלילה אחד, או tool-call failure ששלח ללקוח תשובה ריקה, בלתי-נראים עד שמישהו צועק. אתה מגלה את התקלה מהלקוח, לא מה-dashboard — וזו בדיוק ה-2am escalation שדיברנו עליה בפרק 1. observability היא לא "nice to have"; היא התנאי לכך שתוכל/י לישון.

והנה החישוב שמוכיח את זה: שעת שינה שלך שווה לפחות ₪200 (אם לא יותר) — ולו cost-of-living. תקלה אחת שמתגלה מוקדם ב-trace במקום מאוחר בלקוח חוסכת לך שעת שינה אחת. עלות הקמת Langfuse: שעת עבודה. תוך שבוע אחד זה משתלם.

עשה/י עכשיו (8 דקות) — חבר/י trace אחד

בחר/י Langfuse (OSS, חינם) ועטוף/עטפי קריאת מודל אחת מה-morning brief שלך ב-tracing. אל תנסה/י לעטוף הכל — קריאה אחת. ואז:

  1. הרץ/י את הסוכן פעם אחת.
  2. פתח/י את ה-dashboard וודא/י שאתה רואה: כמה טוקנים, לאיזה מודל, כמה זמן.
  3. כעת זרוק/זרקי כשל מכוון (נתק/י את ה-API key של כלי אחד) והרץ/י שוב — ראה/י איך ה-tool-call failure מופיע ב-trace.

אם ראית את הכשל ב-dashboard — יש לך מצלמת אבטחה עובדת. זה התוצר #2 של הפרק.

פלט צפוי מדויק: ב-Langfuse UI, trace בודד שמכיל:

אם הכשל לא מופיע ב-trace כ-span אדום — חזור/י ובדוק/בדקי את ה-wrapper של ה-tracing, כי הוא לא עוטף את ה-exception.

Governance שנאכפת ב-runtime: שוטר התנועה של הצי

observability מראה לך מה קרה. governance קובעת מה מותר לקרות — ואוכפת את זה. ההבדל הקריטי: governance אמיתית נאכפת ב-runtime, לא בהנחיה. אם כתבת בהנחיה "אסור לך להוציא יותר מ-₪100", המודל אולי יציית — ואולי יחליט שזה case מיוחד. governance ב-runtime עוצרת אותו פיזית.

המודל שמובנה ב-Orloj הוא הדוגמה הנקייה ל-fail-closed: ברירת המחדל היא "אסור", והפעולה מתבצעת רק אם היא עברה את הבדיקה. אם הבדיקה נכשלת או לא ברורה — הפעולה נחסמת, לא עוברת. ארבעת הסוגים שכדאי לאכוף:

חוק governanceמה הוא אוכףלמה זה חשוב ל-operator סולו
allowed modelsרשימת המודלים שמותר לסוכן לקרוא אליהםמונע מסוכן לקפוץ למודל יקר (Opus) למשימה זולה — שומר על ה-P&L
blocked toolsכלים שאסור לסוכן לגעת בהםסוכן תוכן לא צריך גישה ל-API התשלומים; חסימה = הקטנת blast radius
token budgetתקרת טוקנים פר-ריצה / פר-יוםעוצר runaway loop לפני שהוא שורף ₪ — הגנה ישירה מ-$4,200-בסוף-שבוע
child depth / approval gatesכמה sub-tasks מותר ליצור; מה דורש חתימה אנושיתמונע התפוצצות של סוכנים שיוצרים סוכנים; אוכף את calibrated autonomy מפרק 5

ויש בונוס קריטי: audit trail כברירת מחדל. כשה-governance רצה ב-runtime, כל פעולה — מה הסוכן ניסה, מה אושר, מה נחסם — נרשמת אוטומטית. זה compliance מובנה. ל-operator ישראלי שמטפל ברשומות לקוח או בחיובים, audit trail אינו מותרות — הוא מה שמאפשר לך לענות על "מי אישר את זה ומתי" בלי לשחזר מהזיכרון.

הנה תרחיש מעשי: סוכן finance-renewal מזהה לקוח שחיוב החידוש שלו עומד על ₪180, אבל הוא "זוכר" (מ-context) שבעבר ניתנה לו הנחה של 30% בגלל תקלה. הסוכן מציע לחייב רק ₪126. ה-token budget שלו: 15,000 לריצה. ה-allowed models שלו: רק haiku (מה-routing policy). ה-blocked tools שלו: refund_customer, delete_account, send_email. ה-approval gate שלו: כל חיוב מעל ₪100 דורש אישור בעלים. ברגע שהסוכן מנסה לבצע את החיוב — ה-runtime חוסם אותו (מעל הסף), רושם audit: charge 126 blocked, requires approval, ושולח הודעה לבעלים. אחרי אישור (או דחייה) — החיוב מתבצע או מתבטל, וה-audit נשמר. בלי governance — הסוכן היה חיוב באופן עצמאי, וההנחה הייתה רק "מה שהוא זוכר" (כלומר מה שהמודל המציא).

Framework: כמה governance ה-use-case שלך באמת צריך

אל תאכוף את כל ארבעת החוקים על כל סוכן עיוורות. כייל/י לפי הסיכון:

זה אותו עיקרון של calibrated autonomy מפרק 5, עכשיו אכוף בתשתית: חומרת ה-gate עולה עם reversibility ו-stakes.

טעות נפוצה: לסמוך על "כתבתי בהנחיה" כ-governance

הנחיה היא בקשה, לא חוק. מודל יכול לפרש "אל תוציא יותר מ-₪100" כ"חוץ מהמקרה הדחוף הזה". governance אמיתית היא קוד שעוצר את הפעולה לפני שהיא קורית — token budget שנאכף, approval queue שחוסם, tool שלא קיים בהרשאות. אם הביטחון שלך נשען על שהמודל "יבין" — אין לך governance, יש לך תקווה.

מבחן פשוט: ענה/עני בכנות — אם הייתי מבקש/ת ממך "תוכיח/הוכיחי שהסוכן לא יחייב לקוח יותר מ-₪100 בלי אישור", מה היית מראה לי? אם התשובה היא "הוא יודע שזה הכלל" — אין לך governance. אם התשובה היא "הקוד של ה-approval gate בודק את הסכום לפני קריאה ל-API התשלומים וחוסם אם מעל הסף" — יש לך.

עשה/י עכשיו (6 דקות) — כתוב/כתבי את כללי ה-governance

פתח/י קובץ .context/governance.md (או YAML אם בחרת Orloj) ורשום/רשמי לכל תפקיד בצי שורה אחת:

זה ה-governance plan שלך. ב-Orloj הוא הופך ל-policy אכיף; ב-minimal הוא רשימת ה-checks שאתה מקודד ידנית סביב כל קריאה.

פלט צפוי מדויק — דוגמה לקובץ governance.md שלם:

## SDR (lead-screener)
- allowed_models: claude-haiku-4-5
- blocked_tools: send_email_paid, charge_customer
- token_budget_per_day: 80,000
- approval: outbound to VIP tag → owner review

## Support Triage
- allowed_models: claude-haiku-4-5, claude-sonnet-4-5
- blocked_tools: refund_customer, delete_account
- token_budget_per_day: 150,000
- approval: category=billing → human queue

## Finance Renewal
- allowed_models: claude-haiku-4-5
- blocked_tools: refund_customer, delete_account, change_permissions
- token_budget_per_run: 15,000
- token_budget_per_day: 200,000
- approval: any charge >₪100 → owner (named: yair@studio.co.il)

build-vs-buy ו-portability plan: לא להיתקע עם ספק

הגענו להחלטה העסקית הסופית של הפרק. build-vs-buy: לבנות (template OSS שאתה הבעלים שלו, משלם רק טוקנים) או לקנות (commercial OS כמו Knowlee — מהיר יותר, אבל lock-in). אין תשובה אחת נכונה — יש תשובה נכונה לך, ויש דרך לקבל אותה במספרים ולא בתחושה.

שיקולBuild (OSS: gru-ai/Orloj/minimal)Buy (commercial OS: Knowlee-class)
בעלותאתה הבעלים של הקוד וה-configה-OS, ה-"Brain" וה-audit trail חיים אצל הספק
מהירות setupאיטית יותר — אתה מרכיבמהירה — מוכן מהקופסה
עלותטוקנים + הזמן שלךמנוי (לרוב contact-sales) + טוקנים
lock-inנמוך — הכל ב-git שלךגבוה — הנתונים ב-OS שלהם
portabilityגבוהה — fork, diff, revertתלוי בנתיב export שלהם (אם קיים)

הנה המספר שמכריע: קח/י את ה-agent payroll dashboard מפרק 6. אם עלות הטוקנים החודשית של הצי + הערך של הזמן שלך להרכבה נמוכים ממנוי ה-OS המסחרי — build. אם ה-OS חוסך לך כל-כך הרבה זמן שהוא משתלם למרות ה-lock-in, ויש לו נתיב export — buy יכול להיות נכון. זו החלטת P&L, לא החלטת "מה מגניב".

חישוב מעשי לדוגמה: נניח שהצי שלך עולה ₪2,400/חודש בטוקנים (מתוך ה-payroll dashboard). אתה מעריך שהרכבה על gru-ai/Orloj תיקח לך 30 שעות עבודה. שווי השעה שלך כ-operator: ₪300. עלות ההרכבה: 30 × 300 = ₪9,000 (חד-פעמי). מנוי commercial OS דומה: ₪1,500/חודש. הנקודה שבה build משתלם: 9,000 / 1,500 = 6 חודשים. אם אתה מתכנן להפעיל את הצי לפחות חצי שנה — build משתלם. אם זה ניסוי לחודש-חודשיים — עדיף לשלם על commercial ולא להשקיע. אבל אל תשכח את ה-lock-in: גם אם ה-OS זול יותר, אם אין לו נתיב export — אתה קונה את עצמך לכלא.

ה-portability plan: הביטוח נגד lock-in

לא משנה מה תבחר/י, כתוב/כתבי portability plan לפני שאתה תלוי. הסכנה: ה-"Brain" / knowledge-graph וה-audit trail של פלטפורמת "AI workforce" (Knowlee-class) חיים ב-OS שלהם. ביום שתרצה לעבור — או שהמחיר יקפוץ, או שהספק ייסגר — הנתונים נעולים. portability plan הוא ארבעה סעיפים:

טעות נפוצה: להישען על "Brain" של ספק בלי portability plan

פלטפורמות "AI workforce" מוכרות בדיוק את היתרון שהופך לכלא: knowledge-graph שמצטבר אצלן, audit trail שחי ב-OS שלהן. ככל שהצי שלך לומד יותר, כך אתה נעול יותר — כי כל הידע המוסדי שם. תכנן/י את נתיב היציאה ביום הראשון, גם אם אתה לא מתכוון לעזוב. החברה שלך צריכה להיות שלך, לא של הספק.

סיפור אזהרה אמיתי: חברה ישראלית קטנה שאימצה פלטפורמת AI workforce ב-2024, בנתה עליה את כל ה-flow של שירות לקוחות, וב-2025 הספק הכפיל את המחיר פי 3. העברה לספק אחר? בלתי-אפשרית — הכל היה ב-"Brain" שלהם. הם שילמו. אל תהיה הם.

עשה/י עכשיו (7 דקות) — החלטת build-vs-buy במספרים

פתח/י את ה-agent payroll מפרק 6 ומלא/י את שלוש השורות:

  1. עלות טוקנים חודשית של הצי (₪): ______
  2. שעות הרכבה צפויות × ערך השעה שלך (₪): ______
  3. מנוי OS מסחרי חודשי, אם שקלת (₪): ______

אם (1) זול משמעותית מ-(3), ו-(2) נסבל — build. רשום/רשמי את ההחלטה + נימוק במשפט אחד ב-.context/build-vs-buy.md. זה התוצר #3 של הפרק.

פלט צפוי מדויק — דוגמה לקובץ build-vs-buy.md שלם:

# Build vs Buy — Fleet Decision
**תאריך:** 2026-06-05
**תוקף עד:** 2026-09-05 (לבדיקה מחדש אחרי רבעון)

## מספרים
- (1) עלות טוקנים חודשית: ₪2,400
- (2) עלות הרכבה: 30 שעות × ₪300 = ₪9,000 (חד-פעמי)
- (3) מנוי commercial OS (Knowlee-class): ₪1,500/חודש

## נקודת איזון
- payback period: 9,000 / 1,500 = 6 חודשים
- תוכנית הפעלה: 12+ חודשים → build משתלם

## החלטה
**BUILD** (gru-ai + Langfuse + minimal stack לתפקידי תפעול).
נימוק: payback תוך 6 חודשים, אין lock-in, הקוד שלנו.

## Portability plan
1. **config ב-git:** `.context/` (roles, sops, lessons, governance) — כבר commit-ed.
2. **memory ב-git:** `lessons/` מתעדכן בכל ריצה; nightly snapshot.
3. **נתיב export:** N/A (אנחנו לא ב-OS מסחרי; אם נחליט לעבור — export = git clone).
4. **snapshot/restore:** `git tag fleet-v0`, `fleet-v1`, וכו'; revert במקרה של רגרסיה.

## תנאי סקירה מחדש
אם עלות הטוקנים תעבור ₪5,000/חודש — לבחון buy מחדש.

עשה/י עכשיו (5 דקות) — צור/צרי snapshot ראשון

הרץ/י git add . && git commit -m "fleet v0: org chart + SOPs + loop + governance" בריפו של החברה. זה ה-snapshot הראשון של הצי החי. מעכשיו, כל שינוי מסוכן ב-SOP — אתה במרחק git revert אחד מהשחזור. בדוק/בדקי שה-commit עבר עם git log --oneline -1.

פלט צפוי מדויק של git log --oneline -1:

a3f9b21 (HEAD -> main) fleet v0: org chart + SOPs + loop + governance

אם קיבלת hash של commit — הצי שלך version-controlled. אם לא — תקן/י את ה-remote וה-commit לפני שאתה ממשיך.

שגרת ההרכבה והתחזוקה של הצי

הרכבת צי היא לא אירוע חד-פעמי — היא שגרה שחוזרת בכל פעם שאתה מוסיף תפקיד או משדרג stack. הנה השגרה ששומרת על הצי בריא לאורך זמן:

שגרת ההרכבה (פר-תפקיד חדש) + תחזוקה שבועית

בכל פעם שאתה מרכיב תפקיד חדש לתוך הצי:

  1. טען role + SOP מה-.context/ לתוך ה-stack (org chart → agent definition; SOP → Skill).
  2. חבר loop — cron + eval gate + reflexion, עם idempotency marker.
  3. הצמד governance — allowed models, blocked tools, token budget, approval gate לפי הסיכון.
  4. עטוף ב-trace — ודא/י שה-trace מופיע ב-dashboard לפני שאתה ממשיך.
  5. smoke test end-to-end — ריצה אחת מלאה, בדיקת שלושת הירוקים (SOP נטען / trace הופיע / idempotency עבד).
  6. commit snapshotgit commit עם תיאור התפקיד שנוסף.

תחזוקה שבועית (15 דקות, יום ראשון):

Just One Thing

אם תיקח/י דבר אחד מהפרק הזה, שיהיה זה: הרכב/י תפקיד אחד מקצה לקצה לפני שתיגע/י בשני.

הפיתוי הוא להעלות צי מלא ולהרגיש "חברה אמיתית". המציאות: צי שמחובר חלקית, בלי observability ובלי governance, הוא לא חברה — הוא חבית אבק שריפה שמחכה ל-2am escalation. תפקיד אחד שרץ נקי, נצפה, ומגודר — שווה יותר מארבעה שמתחברים בכאוס.

שלושת התרגילים — כל אחד מפיק תוצר נראה

תרגיל 1: הרכב/י תפקיד אחד חי על ה-stack שבחרת

מטרה: צי חי על תפקיד אחד, מקצה לקצה.

צעדים:

  1. בחר/י stack לפי ה-Framework בסעיף 1 (minimal / gru-ai / Orloj).
  2. קח/י את ה-morning brief מפרק 4 והרכב/י דרך חמשת שלבי החיבור (org chart → SOP → loop → autonomy → trace).
  3. הרץ/י ריצה אחת מלאה.

Setup לפני התרגיל (10 דקות) — בלי זה הסוכן לא ירוץ

הצעדים למעלה מניחים שה-stack, ה-Langfuse וה-Telegram כבר מוכנים. אם משהו חסר — הריצה תיכשל בלי לומר למה. סמן/י את שלושת הבלוקים:

(1) Stack — gru-ai או Orloj (או minimal). עותק מקומי של התבנית + קובץ סביבה:

# gru-ai (clone + env)
git clone https://github.com/andrew-yangy/gru-ai.git ~/fleet/gru-ai
cd ~/fleet/gru-ai
echo 'ANTHROPIC_API_KEY=sk-ant-...' > .env
# Orloj (binary + manifest dir)
git clone https://github.com/OrlojHQ/orloj.git ~/fleet/orloj
cd ~/fleet/orloj
git checkout v0.7.2   # pin גרסה (pre-1.0)
echo 'ORLOJ_CONFIG=~/fleet/orloj/manifests' >> ~/.bashrc

(2) Langfuse (self-host OSS ב-Docker — ~3 דקות):

# langfuse/docker-compose.yml — מובא כמו ב-docs הרשמיים
git clone https://github.com/langfuse/langfuse.git
cd langfuse
cp .env.example .env   # ערוך NEXTAUTH_SECRET + DATABASE_URL
docker compose up -d   # UI על http://localhost:3000
# צור API key: Settings → Projects → New Key → שמור את
#   LANGFUSE_PUBLIC_KEY / LANGFUSE_SECRET_KEY ל-.env של הסוכן

(3) Telegram bot (4 שורות ב-BotFather + env):

  1. פתח/י @BotFather בטלגרם, שלח/י /newbot, קבל/י TELEGRAM_BOT_TOKEN.
  2. שלח/י הודעה כלשהי לבוט החדש, ואז קרא/י https://api.telegram.org/bot<TOKEN>/getUpdates כדי לחלץ את chat_id שלך.
  3. הוסף/י ל-.env של הסוכן: TELEGRAM_BOT_TOKEN ו-TELEGRAM_CHAT_ID.
  4. בדיקה מהירה: curl -s "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage?chat_id=$TELEGRAM_CHAT_ID&text=test" — צריך להגיע "test" לטלגרם.

רק אחרי שכל אחד מהשלושה ירוק — עבור/י ל"צעדים" למעלה.

פלט צפוי מדויק: ב-Telegram/email שלך צריך להגיע הודעה בעברית בפורמט הבא (דוגמה למי שיש לו עסק של סטודיו עיצוב):

☀️ בוקר טוב, 5 ביוני 2026

📊 אתמול בעסק:
• הכנסות: ₪3,420 (2 חיובי חידוש + 1 חדש)
• לידים חדשים: 8 (3 חמים, 5 קרים)
• תור תמיכה: 4 פתוחים (1 דחוף — billing)

🎯 היום:
• 3 לידים חמים למעקב אישי
• מאמר חדש לפרסום ב-09:30

📰 מתחרים:
• Studio-X השיקו חבילה חדשה ב-₪1,990
• Studio-Y פרסמו קייס סטאדי חדש

ובמקביל, ב-Langfuse trace בודד צריך להופיע:

צילום מסך של שני החלונות זה לצד זה (Telegram + Langfuse) הוא ההוכחה.

תרגיל 2: לכוד/לכדי תקלה אמיתית עם observability

מטרה: להוכיח שמצלמת האבטחה עובדת — שאתה רואה תקלה שבלי trace היית מפספס/ת.

צעדים:

  1. עטוף/עטפי את הסוכן מתרגיל 1 ב-Langfuse tracing.
  2. זרוק/זרקי כשל מכוון: נתק/י API key של כלי אחד, או הזרק/י קלט שגורם ללולאה קצרה.
  3. הרץ/י, ואז פתח/י את ה-trace וזהה/זהי בדיוק איפה התקלה (tool-call failure / loop).

פלט צפוי מדויק: trace ב-Langfuse שמראה את הרצף הבא:

09:15:01  load_sop           0.02s    1,200 tokens    OK
09:15:02  load_role          0.01s    600 tokens      OK
09:15:03  llm_call_1         1.8s     2,400 tokens    OK
09:15:05  tool: fetch_orders  0.4s     -              ERROR (401 unauthorized)
09:15:05  llm_call_2_retry   1.5s     1,800 tokens    OK (סוכן מנסה שוב)
09:15:07  tool: fetch_orders  0.3s     -              ERROR (401)
09:15:07  llm_call_3_retry   1.6s     1,800 tokens    OK
09:15:09  tool: fetch_orders  0.3s     -              ERROR (401)
09:15:09  fallback_to_human  0.1s     200 tokens      OK
[summary] total_tokens: 8,000 | cost: ₪0.48 | status: escalated_to_human

בנוסף, משפט אחד שמתאר מה ראית ואיך היית מפספס/ת את זה בלי tracing (למשל: "בלי trace הייתי רואה רק שהסוכן הסתיים עם status=escalated, בלי להבין שהוא ניסה 3 פעמים את אותו fetch_orders ונכשל — ולכן לא הייתי יודע לתקן את ה-API key").

תרגיל 3: כתוב/כתבי מסמך build-vs-buy + portability plan

מטרה: החלטה עסקית מנומקת במספרים, לא בתחושה.

צעדים:

  1. מלא/י את שלוש השורות מה-do-now של build-vs-buy (טוקנים / זמן הרכבה / מנוי OS).
  2. כתוב/כתבי החלטה (build או buy) + נימוק במשפט אחד מבוסס על המספרים.
  3. הוסף/הוסיפי portability plan בן ארבעת הסעיפים (config ב-git, memory ב-git, נתיב export, snapshot/restore).

פלט צפוי מדויק: קובץ .context/build-vs-buy.md commit-ed ל-git (עם git log --oneline -1 שמאשר commit חדש), המכיל בדיוק את הסעיפים הבאים:

  1. כותרת עם תאריך ותוקף לבדיקה מחדש.
  2. טבלה/רשימה של 3 מספרים בש"ח (טוקנים, הרכבה, מנוי OS).
  3. נקודת איזון (payback period בחודשים).
  4. החלטה ב-build/buy + נימוק במשפט אחד.
  5. portability plan עם 4 סעיפים (config/memory ב-git, נתיב export, snapshot/restore).
  6. תנאי סקירה מחדש (מתי לבחון מחדש).

הוכחת-commit: git log --oneline -1 מחזיר hash חדש עם הודעה ברורה (למשל build-vs-buy decision + portability plan).

תבנית מוכנה ל-Excel / Google Sheets (אופציונלי, בנוסף לקובץ ה-Markdown)

אם אתה רגיל/ה לחשב בגיליון — העתק/י את 4 העמודות הבאות ל-Google Sheets (A1:D1 כותרות, A2:D2 המספרים שלך):

     A                    | B (₪/חודש) | C (₪ חד-פעמי) | D (הערות)
1    עלות טוקנים צי       | 2,400       | -              | מתוך agent payroll פרק 6
2    הרכבה (שעות × שווי)  | -           | 9,000          | 30 שעות × ₪300
3    מנוי commercial OS   | 1,500       | -              | Knowlee-class (אם שקלת)
4    payback (חודשים)     | =C2/B3      | -              | נקודת איזון: 6.0

הפונקציה בעמודה D4: =ROUND(C2/B3,1) — payback בחודשים. אם התוצאה קטנה מתוכנית ההפעלה שלך (בדרך כלל 6–12 חודשים) — build. אם buy — רשום בעמודה D את התנאי לסקירה מחדש (למשל: "אם עלות טוקנים > ₪5,000/חודש → build"). שמור/שמרי את הגיליון ב-git לצד build-vs-buy.md כ-build-vs-buy.xlsx או קישור Google Sheets ב-comment של ה-commit.

מילון מונחים

Template OSS (תבנית קוד-פתוח)
צי מוכן-להרכבה ברישיון פתוח — org chart, pipeline ו-memory מובנים. דוגמאות מאומתות: gru-ai (MIT), Hermes. חינם ברישיון; משלם/ת טוקנים.
gru-ai
תבנית MIT (andrew-yangy/gru-ai) שהופכת את Claude Code לצוות 11 סוכנים עם pipeline בן 15 צעדים וזיכרון .context/ version-controlled. הכי טוב ל-build/ship.
Orloj
תשתית-סוכנים-כקוד ברישיון Apache-2.0 (OrlojHQ/orloj): מצהירים agents/tools/policies כ-YAML, וה-runtime מתזמן, אוכף governance fail-closed, ומריץ. pre-1.0 — לקבע גרסה.
Hermes Agent
תבנית OSS של Nous Research שמתפרסמת כדאון (daemon) always-on שרץ scheduled cron tasks ושומר cross-session memory. מתאים למי שרוצה סוכן שלא נכבה אף פעם וזוכר בין סשנים.
Knowlee OS
פלטפורמה מסחרית שמציגה את ה-narrative של "AI workforce" — orchestration backbone אחד שמפעיל 5 verticals של החברה (מכירות, כשרונות, שיווק, תפעול, כספים). שימושי כ-reference ארכיטקטוני, לא כהמלצת קנייה בשל lock-in.
CrewAI
framework OSS שמבוסס על role+goal+backstory; ה-easiest learning curve מבין ה-frameworks הגדולים (~20 שורות להתחלה). הכי מתאים למודל ה-org chart ל-operator עסקי.
LangGraph
framework של LangChain שמאפשר directed graph עם conditional edges, audit trails, ו-rollback points. הכי מתאים ל-compliance ולשליטה מלאה. עקף את CrewAI בכוכבי GitHub בתחילת 2026.
infrastructure-as-code (תשתית כקוד)
גישה שבה מצהירים על המערכת (כאן: סוכנים, כלים, מדיניות, תזמונים, אישורים) כ-config מוצהר וגרסאי, כך שהיא reproducible וניתנת ל-version control.
Observability (תצפית)
היכולת לראות מה הצי עושה ברגע אמת ובדיעבד — traces של כל צעד, פירוק model/tool-call, retries, loops. "מצלמת האבטחה" על החברה.
APM (Application Performance Monitoring)
ניטור ביצועי אפליקציה מסורתי — רואה שגיאות HTTP, latency, throughput. לא רואה את שלוש התקלות הסוכניות (tool-call failure, context truncation, runaway loop) כי הן "תקינות טכנית" אך שגויות מהותית.
Trace (מסלול ריצה)
תיעוד node-by-node של ריצת סוכן: לאיזה מודל פנה, איזה כלי קרא, כמה ניסיונות, וכמה טוקנים. מה ש-Langfuse/Braintrust/LangSmith מציגים.
Span
צומת בודד בתוך trace — יחידת עבודה אחת (למשל llm_call, tool: fetch_orders, load_sop). לכל span יש duration, tokens, ו-status.
tool-call failure
כלי שהסוכן קרא לו נכשל, אך הסוכן המשיך כאילו כלום. בלתי-נראה ל-APM רגיל; אחת משלוש התקלות הנפוצות בסוכנים.
context truncation
ההיסטוריה גדלה מעבר ל-context window, חלקים נחתכים בשקט, והסוכן "שוכח". אין שגיאה — רק איכות יורדת.
runaway loop
הסוכן נתקע בלולאה וחוזר על צעד בלי להתקדם, ושורף טוקנים. מתגלה רק ב-trace מלא — וזו סיבה מרכזית ל-token budget.
Governance (ממשל)
חוקים שנאכפים על הסוכן בזמן ריצה: allowed models, blocked tools, token budget, approval gates. כשהיא fail-closed, ברירת המחדל היא "חסום".
fail-closed (כושל-סגור)
עיקרון אבטחה: אם בדיקה נכשלת או לא ברורה, הפעולה נחסמת ולא עוברת. ההפך מ-fail-open (שמתיר בספק).
fail-open (כושל-פתוח)
ההפך מ-fail-closed: אם בדיקה נכשלת, הפעולה מותרת כברירת מחדל. מסוכן ל-governance; לפעמים מוצדק לפעולות קריאה read-only שכשל בהן רק מאט.
audit trail (יומן ביקורת)
רישום אוטומטי של כל פעולה — מה נוסה, מה אושר, מה נחסם. ב-runtime governance הוא ברירת מחדל; compliance מובנה.
allowed models
רשימה לבנה של מודלים שהסוכן רשאי לקרוא אליהם. מנהל P&L (אוסר על קפיצה למודל יקר למשימה זולה) ומצמצם סיכון אבטחה.
blocked tools
רשימה שחורה של כלים שהסוכן לא רשאי לקרוא אליהם. צמצום blast-radius: סוכן תוכן לא צריך גישה ל-API תשלומים.
token budget
תקרת טוקנים פר-ריצה או פר-יום לסוכן. עוצרת runaway loop לפני שהוא שורף תקציב; מיושמת ב-Orloj כ-tokenBudgetPerRun ו-tokenBudgetPerDay.
child depth
עומק מקסימלי של תת-משימות שסוכן יכול ליצור. מונע "התפוצצות" שבה סוכן יוצר סוכנים שיוצרים סוכנים עד שכל ה-budget נגמר.
approval gate
נקודת בדיקה אנושית לפני ביצוע פעולה רגישה (כסף, רשומות, הרשאות). ב-Orloj: ToolApproval או TaskApproval. ב-minimal: תור אנושי.
build-vs-buy
ההחלטה בין הרכבת צי מ-OSS שאתה הבעלים שלו (build) לבין רכישת OS מסחרי מוכן (buy, עם lock-in). מוכרעת ב-P&L, לא בתחושה.
payback period (נקודת איזון)
מספר החודשים שבהם העלות החד-פעמית של build (שעות עבודה × ערך שעה) מתאזנת מול החיסכון החודשי של build על buy. קצר יותר = build משתלם יותר.
portability plan (תוכנית ניוד)
ארבעה סעיפים שמבטחים נגד lock-in: config ב-git, memory ב-git, נתיב export מוודא מראש, ו-snapshot/restore. החברה שלך נשארת שלך.
vendor lock-in (נעילת ספק)
מצב שבו החלפת ספק טכנולוגי כל-כך יקרה או בלתי-אפשרית, שאתה למעשה "כלוא" אצלו. נגד זה נכתב ה-portability plan.
Langfuse
כלי observability OSS ברישיון MIT. חינם ל-self-host; נרכש על-ידי ClickHouse בינואר 2026 אך נשאר OSS. ברירת המחדל ל-operator עסקי שרוצה $0 infra ו-portability מלאה.
Braintrust
כלי observability + eval-first עם ה-CI/CD eval gates החזקים ביותר. Free tier הנדיב ביותר בקטגוריה: 1M spans/חודש, 10K eval runs.
LangSmith
כלי observability native ל-LangChain/LangGraph. node-level state diffs, replay מול מודלים חדשים. Free tier קיים, per-seat מעליו.
smoke test (בדיקת עשן)
ריצה מינימלית מקצה לקצה שמוודאת שהמערכת עובדת — בלי לבדוק כל פינה. "האם הסוכן רץ? האם ה-trace מופיע?" — שלוש בדיקות, לא שלושים.
pin version (קיבוע גרסה)
ציון גרסה מדויקת של תלות (למשל orloj==0.7.2 במקום orloj>=0.7) כדי למנוע שבירה שקטה כשיוצא עדכון. חובה לתלות pre-1.0.
dead-agent alerting
התראה כשסוכן cron לא רץ במועד המצופה (heartbeat שלא הגיע). מונע "מוות שקט" של סוכן שאף אחד לא שם לב אליו.
RFC 2119
תקן אינטרנט שמגדיר מילות מפתח MUST / SHOULD / MAY / SHOULD NOT / MUST NOT. משמש בפרק 3 לכתיבת SOPs אגנטיים מדויקים.
Skills (Claude Code)
קבצי הנחיה ש-Claude Code טוען אוטומטית בעת הצורך. "כותבים פעם אחת, נטען לבד" — מקבילה ל-SOPs של סוכן ב-stack ה-minimal.

בדוק/בדקי את עצמך

  1. מתי תבחר/י Orloj על פני minimal stack? נמק/י לפי שתי תכונות של ה-use-case שלך (רמז: סיכון הפעולות + נוחות YAML).
  2. מה ההבדל בין governance שנאכפת ב-runtime לבין "כתבתי בהנחיה שאסור"? תן/י דוגמה לפעולה שהשנייה לא תעצור והראשונה כן.
  3. שלוש התקלות שרק observability חושפת — מה הן, ולמה APM רגיל מפספס כל אחת?
  4. למה "free OSS" עדיין יש לו חשבון? מה משלמים גם כש-gru-ai/Orloj חינמיים ברישיון?
  5. מהם ארבעת סעיפי ה-portability plan, ולמה צריך לכתוב אותו לפני שתלויים בספק?

תשובות קצרות לבדיקה עצמית (לא להציץ לפני שענית):

  1. Orloj כשהסוכן נוגע בכסף/רשומות/הרשאות (audit trail חובה) וגם אתה נוח עם YAML. אחרת — minimal.
  2. הנחיה היא בקשה (המודל "אולי" יציית); runtime הוא קוד שחוסם. לדוגמה: הנחיה "אל תחייב יותר מ-₪100" — המודל עלול לחיוב 120 בגלל "case מיוחד"; runtime של Orloj עם approval gate: ₪100 פשוט חוסם את הקריאה.
  3. tool-call failure (HTTP הצליח, הסוכן המשיך על תוצאה ריקה); context truncation (אין שגיאה, ההיסטוריה נחתכה); runaway loop (כל קריאה תקינה, הדפוס הוא התקלה). APM רגיל רואה רק "הבקשה הצליחה" — לא את ההיגיון של הסוכן.
  4. הרישיון חינם — הטוקנים שמתחת לא. כל קריאת מודל עולה כסף; צי always-on עלול לעלות כמו משכורת.
  5. config ב-git, memory ב-git, נתיב export, snapshot/restore. לפני — כי ברגע שה-data נכנס ל-OS של ספק, הוא נהפך לקשה לחילוץ; תכנון מראש הוא ההבדל בין "אני עובר ספק" לבין "אני תלוי בספק".

סיכום הפרק וגשר ל-capstone

  1. שלוש דרכים להרכיב, אחת נכונה לך. framework (CrewAI/LangGraph), template OSS (gru-ai/Hermes), agent OS (Orloj/Knowlee), או minimal (API+cron+git). ההחלטה לפי רמת נוחות הנדסית + כמה governance ה-use-case דורש — לא לפי מה שמגניב.
  2. gru-ai = צוות מוכן ל-build/ship (11 סוכנים, pipeline 15 צעדים, .context/ memory). Orloj = governance production (agents-as-YAML, fail-closed, approval native). שתיהן דוגמאות מאומתות, לא המלצות קנייה.
  3. החיבור פותר את בעיית נקודת-האינטגרציה. org chart → SOPs כ-Skills → loop → autonomy → trace, שכבה אחר שכבה, תפקיד אחד מקצה לקצה לפני הבא.
  4. observability היא דרישת-הקדם השקטה. רוב התקלות הן tool-call failures, context truncation ו-runaway loops — בלתי-נראות ל-APM רגיל. Langfuse (OSS) הוא ברירת המחדל ל-operator שמתחיל.
  5. governance נאכפת ב-runtime, fail-closed. allowed models, blocked tools, token budget, approval gates — עם audit trail כברירת מחדל. הנחיה היא תקווה; governance ב-runtime היא חוק.
  6. build-vs-buy מוכרע ב-P&L, ו-portability plan נכתב לפני התלות: config+memory ב-git, נתיב export מוודא, snapshot/restore. החברה שלך נשארת שלך.

הגשר לפרק 8 (ה-capstone): עכשיו יש לך תשתית — stack נבחר, צי חי על תפקיד אחד, observability עובדת, governance מוגדרת, ו-portability plan כתוב. בפרק הבא נרחיב את התפקיד האחד לצי ארבעה תפקידים מלא: SDR שמסנן לידים, writer+editor עם eval-gate, support triage עם reflexion, ו-finance renewal עם approval gate. נחבר agent payroll בש"ח, נתמחר הצעת "תפקיד-כשירות" מול ~₪45,000 של סוכנות 5 אנשים, ונסגור עם production checklist ו-final risk audit. כל מה שבנית בשבעת הפרקים נפגש שם — וה"חברה של אחד" שלך רצה כעסק.

צ'קליסט הפרק — סמן/י לפני המעבר ל-capstone

שלוש הטעויות שעולות הכי יקר