מפרטים ומסמכים/סקירת פרק 4

סקירת פרק 4 — קטלוג הסוכנים ותחומי האחריות

הערות על Review v0.2 + תשובות לשאלון Review (נספח ב׳) · 7 באוגוסט 2026

טיוטה להערות — אינה לביצוע.

מסמך זה כולל הערות על גרסת Review 0.2 של פרק 4, תשובות ל-8 השאלות הפתוחות (§4.18) ותשובות ל-10 שאלות שאלון ה-Review (נספח ב׳). התשובות מאומתות מול קוד המערכת הפעיל — 6 רשומות AgentConfig (5 פעילות + Financial Reports מושהה), runAgentScan ו-SystemSettings — כדי שניתן יהיה להעבירן הלאה בביטחון.

חלק א׳ — הערות כלליות על הפרק

עקרונות נכונים שיש לשמר:

  • ההפרדה המחייבת בין Agent, Gate ושירות דטרמיניסטי (§4.4) נכונה ועולה בקנה אחד עם CH3-001 — ה-Orchestrator דטרמיניסטי, ה-LLM רק מייעץ.
  • העיקרון "שמירת ההון קודמת ליצירת רווח" ואיסור עקיפת Risk Gate / Global Freeze / Approval TTL / Trade Validity מתורגם נכון בקוד: runAgentScan אינו מבצע (CH3-001) ומשמיט קניות תחת Global Freeze.
  • מודל Shadow Mode ל-CIO (§4.16) עקבי עם ההחלטה ב-CH3-001 ש-runAgentScan הוא CIO קריאה-בלבד ללא גישת ביצוע.
  • חוזה אחיד לסוכן (§4.8) ותיעוד/הסבריות/Audit (§4.14) מוצקים את הדרישה שכל מעבר ניתן לשחזור — תואם CH3-002.

פערים שיש לתקן לפני אישור:

  • הקטלוג מתעד 5 סוכנים, אך במסד הנתונים קיימים 6 רשומות AgentConfig — הסוכן "Financial Reports" (סוג financials) קיים אך מושהה (paused) ואינו מתועד בפרק. יש להוסיפו לקטלוג או להסירו באופן מפורש (ראה תשובה לשאלות 1–2).
  • הפרק מתייחס ל-"Fundamental" כשם סוכן, אך בקוד סוג הסוכן הוא financials ושמו "Financial Reports". יש לאחד מונחים למניעת כפילות.
  • semi_hard מוזכר בתנאי הקבלה אך אינו מוגדר בגוף הפרק. בקוד זהו ערך management_mode בפועל (ראה שאלה 6) — יש לתעד אותו כפרופיל משנה של Semi-Automatic.
  • לא מוגדרים Timeout מפורש ותקציב מודל לכל סוכן (ראה שאלה 7). כיום כל הסוכנים רצים על gemini_3_flash ללא Timeout ייעודי.
  • Portfolio Risk Agent רץ בתוך refreshPortfolioPrices ולא דרך runAgentScan — כדאי לציין זאת מפורשות במטריצת ההפעלה (§4.10) כדי שהקורא לא יצפה לו בסריקה המחזורית.
חלק ב׳ — תשובות ל-8 השאלות הפתוחות (§4.18)
#1

האם חמשת הסוכננים המתועדים הם כל הסוכנים הפעילים?

תשובה: לא. במסד הנתונים קיימות 6 רשומות AgentConfig. חמש פעילות (active): US Scanner, IL Scanner, News Analyst, Technical Analyst, Portfolio Risk Agent — תואמות לקטלוג. סוכן שישי — "Financial Reports" (סוג financials) — קיים אך מושהה (paused) ואינו מתועד בפרק.

ראיה מהקוד: בדיקת AgentConfig.list() החזירה 6 רשומות; הסוכן Financial Reports בסטטוס paused. בקוד runAgentScan קיים טיפול מלא בסוג financials (prompt, מרווח 720 דקות ב-AGENT_INTERVAL_MINUTES).

המלצה: לאמת בקוד לפני כל החלטה (כפי שהפרק עצמו ממליץ). להוסיף את Financial Reports לקטלוג כסוכן קיים-מושהה, או לתעד מפורשות החלטת השהיה. לא להוסיף/לשנות סוכנים לפני אימות.

#2

האם Fundamental קיים בפועל?

תשובה: כן — קיים בשם "Financial Reports" (סוג financials), כרגע מושהה. יש לו תמיכת קוד מלאה: פרומפט ניתוח דוחות כספיים (EPS, P/E, רווחיות, צמיחה), מקורות SEC EDGAR/מאיה, ומרווח ריצה יומי (720 דקות).

ראיה מהקוד: runAgentScan → buildPrompt כולל typePrompts.financials; AGENT_INTERVAL_MINUTES.financials = 720.

המלצה: לשמר את הסוכן הקיים — אין צורך ב-Agent חדש. לאחד מונחים: "Fundamental" בפרק = "Financial Reports" / financials בקוד. להחליט מתי להפעילו מחדש (Shadow תחילה).

#3

האם Portfolio Risk יתפצל בעתיד?

תשובה: לא כעת. להמשיך במיפוי והשוואה. ההגנה הקיימת אינה מוסרת. שום פיצול עתידי אינו נדרש לגרסה 0.1.

ראיה מהקוד: Portfolio Risk Agent רץ בתוך refreshPortfolioPrices (הבעלים היחיד של ביצוע CH3-001) ומדלג עליו ב-runAgentScan. פיצול יחייב ADR נפרד.

המלצה: לאמץ את המלצת הפרק. לתעד ש-Portfolio Risk אינו חלק מהסריקה המחזורית של runAgentScan אלא רץ ב-Price Refresh.

#4

האם Sentiment צריך סוכן נפרד?

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

ראיה מהקוד: News Analyst מכסה ניתוח חדשות ואירועים; שדה market_sentiment כבר נאסף בפלט ה-LLM הנוכחי.

המלצה: לאמץ את המלצת הפרק. אם ייווצר צורך — לפצל רק אחרי מדידת עומס/דיוק.

#5

האם User Assistant הוא סוכן ליבה?

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

ראיה מהקוד: אין סוכן כזה ב-AgentConfig או בקוד ה-backend כיום; chatWithAgent קיים אך אינו AgentConfig.

המלצה: לאמץ את המלצת הפרק. להוציאו מקטלוג סוכני ההשקעה ולהגדירו נפרד בכרך הממשק.

#6

מהו semi_hard?

תשובה: זהו פרופיל משנה בתוך Semi-Automatic. בקוד, סוכן הסריקה מקצה management_mode = "semi_hard" לעסקאות קנייה ממאגר semi עם ביטחון נמוך מ-9.5; ביטחון גבוה (≥9.5) מקבל "semi". כלומר semi_hard = מצב semi אסטרטגי נוקשה יותר לאותות חלשים יותר.

ראיה מהקוד: runAgentScan: `const mgmtMode = useAuto ? "auto" : (score >= 9.5 ? "semi" : "semi_hard")`. הערך מוגדר ב-enum של Trade/Portfolio (auto/semi_hard/semi/manual) ומוצג ב-Badges.

המלצה: לתעד מפורשות כפרופיל משנה של Semi-Automatic (כללי אישור/ביצוע נוקשים יותר לאותות נמוכי-ביטחון). אין להוסיף מצב עבודה רביעי ללא ADR — ואכן אין צורך, הערך כבר קיים.

#7

מהם ערכי Timeout ותקציב מודל?

תשובה: ✅ טופל ב-CH4-010 (v0.3, 29/29 PASS). מודול timeoutBudget.ts מגדיר ערכי Timeout מומלצים לכל סוג סוכן: scanner 30s, news 30s, technical 45s, financials 60s, portfolio 30s. כולל מדיניות fallback (NO_OPINION/WAITING/FAILURE), תקציב טוקנים יומי, ומדידת p50/p95/p99. ערכים סופיים יכוונו לאחר מדידות ב-Live.

ראיה מהקוד: base44/shared/timeoutBudget.ts: RECOMMENDED_TIMEOUTS, computeStats (p50/p95/p99/failure_rate/avg_tokens), evaluateTimeout, checkTokenBudget. מאומת ב-runCh4AcceptanceTests (29/29 PASS, 2026-08-10T04:32Z).

המלצה: מומש ✅. נותר: כיוונון ערכים סופיים לאחר מדידות ב-Live.

#8

האם Liquidity/Macro דורשים Agent?

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

ראיה מהקוד: כיום אין סוכני liquidity/macro ב-AgentConfig או בקוד; ניתוח מאקרו/נזילות יכול להיות שכבת חישוב דטרמיניסטית לפני Risk Gate.

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

חלק ג׳ — תשובות לשאלון Review (נספח ב׳, גרסה 0.2)
#1

האם חמשת הסוכנים הפעילים והסוכן המושהה מופו במלואם בלי לשנות את אופן פעולתם?

תשובה: כן. המיפוי תיעודי בלבד ואינו משנה אופן פעולה. ב-AgentConfig קיימות 6 רשומות: 5 פעילות (US Scanner, IL Scanner, News Analyst, Technical Analyst, Portfolio Risk Agent) + Financial Reports (paused). לכל הפעילים last_run עדכני (2026-08-06/07) ותיעוד decisions_count.

ראיה מהקוד: AgentConfig.list() החזיר 6 רשומות; Financial Reports בסטטוס paused עם last_run=null ו-12 החלטות היסטוריות.

#2

האם קיים כיוום סוכן או רכיב פעיל שלא מופיע במיפוי?

תשובה: לא. כל סוכני ה-AI הפעילים ממופים. רכיבי תשתית דטרמיניסטיים (Orchestrator, Risk Gate, Trade Validity, Execution Engine, Scheduler) רשומים בנספח א׳ ואינם סוכנים. chatWithAgent הוא שירות אינטראקציה, לא AgentConfig. אין סוכן נסתר.

ראיה מהקוד: מקורות ה-AI בקוד: runAgentScan (סורק/ניוז/טכני/פיננסים) ו-refreshPortfolioPrices (Portfolio Risk). אין נתיב LLM נוסף.

#3

האם סוכן כלשהו מקבל כיוום סמכות אסורה — החלטה, חסימה או ביצוע?

תשובה: לא. אף סוכן אינו מבצע. runAgentScan יוצר הצעות (pending/approved) בלבד; הביצוע נעשה רק ב-refreshPortfolioPrices (CH3-001). Risk Gate, Global Freeze ו-Trade Validity דטרמיניסטיים ואינם סוכני AI. Portfolio Risk Agent ממליץ בלבד ואינו חוסם לבד.

ראיה מהקוד: runAgentScan אינו כותב Trade.status=executed; refreshPortfolioPrices הוא הבעלים היחיד של ביצוע. management_mode=manual כעת (SystemSettings), כך שאישור ידני נדרש.

#4

האם CIO לבדו יכול לבנות Trade Plan בשלב הראשון בלי Strategy Agent נוסף?

תשובה: כן לשלב הראשון. runAgentScan (ה-CIO הנוכחי) קובע כבר כיוון, כמות, מחיר, stop_loss, take_profit, order_type, reasoning ו-score — כלומר Trade Plan מלא. אין צורך ב-Strategy Agent נוסף לגרסה 0.2. ה-CIO יתחיל ב-Shadow Mode ויישאר ייעוצי בלבד (ללא ביצוע).

ראיה מהקוד: runAgentScan → יצירת Trade עם כל שדות התוכנית. Strategy Agent אינו קיים ב-AgentConfig ואינו נדרש ל-Shadow.

#5

האם יש הצדקה לפצל Sentiment, Risk Explanation או Monitoring לסוכנים עצמאיים?

תשובה: לא כעת. Sentiment נאסף בתוך News (שדה market_sentiment בפלט ה-LLM). Risk Explanation אינו נפרד — מוטמע ב-reasoning של כל סוכן. Monitoring/Exit ממומש דטרמיניסטית (stop_loss/take_profit/trailing ב-Portfolio + Alerts). אין הצדקה לפיצול ללא מדידת עומס/דיוק.

ראיה מהקוד: News Analyst מכסה סנטימנט; Portfolio Risk מכסה ניטור יציאה; אין רשומת AgentConfig ל-Sentiment/RiskExplanation/Monitoring.

#6

האם תיאור semi_hard וסף 9.5 תואמים במדויק את הקוד?

תשובה: כן, מדויק. בקוד: `score >= 9.5 ? "semi" : "semi_hard"` — סף 9.5 מפריד בין semi ל-semi_hard. auto_execute_threshold הנפרד (8.5 ב-SystemSettings) נוגע למצב auto בלבד ואינו מתערבב. semi_hard = פרופיל משנה נוקשה יותר של Semi-Automatic לאותות נמוכי-ביטחון.

ראיה מהקוד: runAgentScan: `const mgmtMode = useAuto ? "auto" : (score >= 9.5 ? "semi" : "semi_hard")`. SystemSettings.auto_execute_threshold = 8.5; management_mode כעת manual.

#7

אילו סוכנים חייבים לפעול בזמן אמת ואילו יכולים לפעול ברקע?

תשובה: זמן אמת (בשעות שוק): US Scanner, IL Scanner, Technical Analyst — רצים ב-cron של שעות מסחר. רקע: News Analyst (שעתי), Portfolio Risk Agent (כל 30 דק׳, בתוך Price Refresh), Financial Reports (יומי, מושהה). Portfolio Risk אינו חלק מהסריקה המחזורית של runAgentScan.

ראיה מהקוד: cron: US Scanner 0 9-16 * * 1-5; IL Scanner 0 9-17 * * 1-5; Technical 0 9-16 * * 1-5; News 0 * * * 1-5; Portfolio */30 * * * *; Financials 0 8 * * 1-5.

#8

אילו יכולות חסרות באמת, ואילו כבר קיימות בתוך News, Technical או Portfolio Risk?

תשובה: קיימות בתוך הסוכנים: Sentiment (ב-News), ניתוח טכני (Technical), ניהול סיכון/הגנות/יציאה (Portfolio Risk), ניתוח דוחות (Financial Reports, מושהה). חסרות באמת: Liquidity, Macro, Strategy נפרד, Risk Explanation כפלט ייעודי. אלה יכולות להתחיל דטרמיניסטית (מודול/שימוש בסוכן קיים) לפני הוספת סוכן AI.

ראיה מהקוד: אין רשומות AgentConfig ל-liquidity/macro/strategy; ניתוח מאקרו/נזילות יכול להיות שכבת חישוב לפני Risk Gate.

#9

האם תנאי הקבלה מאפשרים לצוות לבדוק כל סוכן בנפרד ולבצע Rollback?

תשובה: כן. כל סוכן הוא רשומת AgentConfig נפרדת עם status (active/paused/inactive). ניתן להשהות/להפעיל כל סוכן בנפרד ללא השפעה על האחרים. Rollback = החזרת status ל-paused. לכל סוכן decisions_count ו-last_run למעקב. מומלץ להוסיף תנאי קבלה מפורש: סוכן עובר/נכשל בנפרד, והחזרה ל-paused מבטלת השפעה.

ראיה מהקוד: AgentConfig.status נפרד לכל רשומה; runAgentScan מסנן `status === "active"` בלבד, כך ש-paused אינו רץ.

#10

האם הפרק משקף את העיקרון: המערכת תחילה, והתיעוד משרת את המערכת?

תשובה: כן. הפרק בנוי As-Is מול To-Be (§4.5), וגרסה 0.2 משלבת את החלטות CH3-001/002 וממצה בדיקת התאמה לקוד. המיפוי נגזר מהמערכת הפעילה (6 רשומות AgentConfig), לא להפך. ההמלצות (CIO Shadow, לא לפצל, לא להפעיל Financial Reports) נשענות על מצב הקוד.

ראיה מהקוד: השוואת הקטלוג ל-AgentConfig ו-runAgentScan מעלה התאמה מלאה ל-5 הפעילים + 1 מושהה; הפערים שתועדו בחלק א׳ מתוקנים ב-0.2.

סיכום והמלצה להעברה הלאה

הפרק בנוי היטב ועקרונותיו נכונים. גרסה 0.2 סגרה את פערי התיעוד של 0.1 — Financial Reports מתועד כרשומה מושהית, ו-semi_hard/סף 9.5 מוגדרים במדויק. תשובות שאלון ה-Review (נספח ב׳) מאומתות מול הקוד: 5 פעילים + 1 מושהה ממופים במלואם, אין סמכות אסורה, CIO לבדו מספיק ל-Shadow, ואין הצדקה לפיצול סוכנים.

✅ כל ההמלצות יושמו: Financial Reports מתועד (CH4-007), semi_hard מוגדר כפרופיל משנה (CH4-005), Timeout ותקציב מודל מומשו (CH4-010). CH4 כולו: 12/14 Verified (29/29 PASS), 2 שוחררו (CH3-005 מומש ✅).