Files
legal-ai/docs/research/hermes-runtime-and-self-learning-state.md
Chaim e6778d26e5
All checks were successful
G12 Leak-Guard / leak-guard (pull_request) Successful in 5s
docs(#126): תיעוד Hermes כ-runtime + self-learning אינרטי; ניקוי persona→אוצֵר
המשך ל-#123. ממצא: אנחנו מריצים את ה-Hermes CLI של Nous כ-runtime ל-deepseek_local
(harness בלבד), וה-self-learning דלוק-אך-אינרטי (state.db = תמלילים בלבד, ללא
memories/user_profile/skills; רדום מאז 5-6.2026).

- doc חדש: docs/research/hermes-runtime-and-self-learning-state.md
  (חקירה פורנזית + playbook להפעלת Hermes המלא בעתיד + שערי-ממשל INV-LRN1/LRN5/G12)
- cross-link מ-#123 feasibility
- ניקוי persona "Hermes" ב-hermes-curator.md (Hermes=runtime CLI, זהות=אוצֵר-ידע)

שינויי-host (לא בריפו, מתועדים): כיבוי self-learning ב-curator-{cmp,cmpa}/config.yaml
+ persona ב-SOUL.md → אוצֵר-ידע (גיבוי .bak). HERMES_HOME/HERMES_CLI נשמרו (runtime).

Invariants: INV-LRN1/LRN5 (יישור — self-learning לא-מגודר כובה), G12 (Hermes=runtime
מאחורי Port, לא פלטפורמה מקבילה), G2. מסמך+config, אין שינוי-קוד.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 17:54:16 +00:00

8.6 KiB
Raw Blame History

Hermes כ-runtime אצלנו, וה-self-learning האינרטי — חקירה + playbook להפעלה מלאה

TaskMaster #126 (המשך ל-#123) · תאריך: 2026-06-11 למה המסמך קיים: כדי שאם אי-פעם נרצה להפעיל את סוכן ה-Hermes המלא (עם לולאת ה-self-learning), לא נצטרך לחזור על החקירה הזו. מתעד מה אנחנו מריצים בפועל היום, מה דלוק-אך-אינרטי, ומה צריך כדי להדליק אותו נכון.


1. מה אנחנו מריצים בפועל היום

הסוכן "הרמס" אצלנו = ה-adapter deepseek_local שמריץ את ה-CLI האמיתי של Nous Hermes כ-runtime, מכוון ל-DeepSeek:

hermes chat -q "<prompt>" -Q -m deepseek-v4-pro --provider custom -t <toolsets> --source tool --yolo
רכיב ערך מקור
בינארי hermes (HERMES_CLI) adapters/deepseek-paperclip-adapter/dist/shared/constants.js:9
תווית-adapter "DeepSeek (via Hermes)" (deepseek_local) constants.js:5-6
מודל deepseek-v4-pro (provider customapi.deepseek.com/v1) config.yaml של הפרופיל
HERMES_HOME ~/.hermes/profiles/curator-cmp (CMP) · curator-cmpa (CMPA) adapterConfig.env (per-company)
invocation חד-פעמי -q ... -Q (quiet, non-interactive), ללא gateway חי dist/server/execute.js:240-249
חיבור MCP mcp_servers.legal-ai בקונפיג → ה-CLI יכול לקרוא לכלי-MCP שלנו config.yaml

מסקנה חשובה: Hermes כאן הוא ה-runtime/harness (terminal + לולאת-כלים + provider→DeepSeek + MCP), לא "המוח הלומד". ההצהרה ב-#123 "grep=0, קוד Nous לא שולב" נכונה לגבי לולאת ה-self-learning — לא לגבי ה-CLI כ-runtime, שכן משמש.

זהות הסוכן ב-Paperclip

  • שם-הסוכן ב-Paperclip כבר "מנהל ידע" (role qa) — לא "Hermes".
  • ה-wakeup הוא לפי UUID (CURATOR_AGENTS[company_id] ב-web/paperclip_client.py:50-53: CMP=60dce831…, CMPA=d6f7c55d…) — לא לפי שם. ⇒ שינוי-שם-תצוגה אינו שובר את ה-wakeup.
  • ה-persona "Hermes" יושב רק ב: שדה ה-description ("Knowledge Curator (Hermes…)"), טקסט ה-system-prompt ב-hermes-curator.md, שם-הקובץ, ופרוזה בתיעוד.

2. ה-self-learning דלוק ב-config — אבל אינרטי

ב-~/.hermes/profiles/curator-cmp/config.yaml ו-curator-cmpa/config.yaml (שורות ~296-328) הפיצ'רים דלוקים כברירת-מחדל:

memory:
  memory_enabled: true        # זיכרון 3-שכבתי
  user_profile_enabled: true  # מידול-משתמש (dialectic / Honcho)
  nudge_interval: 10
skills:
  creation_nudge_interval: 15 # נדנוד ליצירת-skills
curator:
  enabled: true               # ה-curator הפנימי של Hermes (אוצר זיכרון, כל 168 שעות)

אבל הם לא רצים בפועל, כי:

  • ה-adapter מפעיל את ה-CLI חד-פעמית (-q … -Q) בכל יקיצה ואז יוצא — אין gateway/דמון חי.
  • ה-curator-הפנימי (interval 168h), flush-הזיכרון (flush_min_turns), ונדנוד-ה-skills תלויים בתהליך מתמשך/רב-תור — שלא קיים.

עדות פורנזית (state.db של ה-curator-ים)

~/.hermes/profiles/curator-cmp/state.db (15M) · curator-cmpa/state.db (4.6M). טבלאות:

יש אין
messages (555 / 159) — תמלילי-ריצה memories (זיכרון מזוקק)
sessions (60 / 5) — מטא + billing user_profile (מודל-דפנה)
messages_fts* — אינדקס FTS5 skills שנוצרו אוטומטית
  • התוכן היחיד = תמלילי-הריצות של ה-curator (קרא טיוטה↔סופי, רשם ממצאים, הציג interaction) — בדיוק הפלט שכן צרכנו (comments + decision_lesson).
  • סשנים ללא כותרות, $0.00 עלות מתועדת, חלקם 0-2 הודעות (יקיצות-סרק).
  • טווח-פעילות: 2026-05-05 → 2026-05-26 (CMP), עד 8.6 (CMPA). רדום מאז.

שורה תחתונה: משלושת הדיפרנציאטורים של Hermes (memory / user-model / skill-acquisition) נוצרו אפס שורות. מה ש"לא צרכנו" = לוגים תמימים, לא ידע מזוקק. ⇒ מ-self-learning מקבלים אפס ערך; מנצלים את ה-harness בלבד.


3. ההחלטה (מיושמת ב-#126)

פעולה נימוק
כיבוי self-learning בשני config.yaml (memory_enabled/user_profile_enabled/curator.enabled=false, skill-nudge off) מסיר config-מת, הופך את "אנחנו לא מריצים self-learning" לאמיתי, מיישר ל-INV-LRN1/LRN5. הפיך (גיבוי שמור).
ניקוי persona Hermes→Curator בטקסט-הפרומפט + description + תיעוד השם נעשה כן: סוכן Curator/אוצֵר-ידע שרץ על runtime DeepSeek-via-Hermes.
שמירת HERMES_HOME/HERMES_CLI/"via Hermes" זה ה-runtime ונכון — סריקה עיוורת של "hermes" הייתה שוברת את ה-adapter.

ה-learning האמיתי שלנו נשאר הצינור הדטרמיניסטי המגודר (final_learning_pipeline + פאנלים + שער-יו"ר), לא ה-self-learning של Hermes.


4. Playbook: איך להפעיל את סוכן ה-Hermes המלא (אם נרצה בעתיד)

זה מה שיידרש כדי להפוך את ה-curator מ"runtime דק" ל-"סוכן Hermes לומד" — ולמה לא עשינו זאת:

4.1 שכבת-ה-runtime (טכני)

  1. gateway מתמשך במקום one-shot. היום hermes chat -q … -Q יוצא אחרי תור אחד. צריך תהליך-Hermes חי (hermes gateway/דמון) או --resume עקבי עם session מתמשך כך שה-memory-flush, ה-curator-הפנימי, ונדנוד-ה-skills יוכלו לרוץ. ⇒ שינוי ב-deepseek-paperclip-adapter (לא רק config).
  2. session persistence. לוודא ש-persistSession + sessionId נשמרים בין יקיצות-ה-curator של אותו תיק/חברה (ה-adapter תומך — execute.js:251-252,376-378 — אך תלוי שמירת sessionParams ב-Paperclip).
  3. הדלקת הפיצ'רים ב-config.yaml: להחזיר memory_enabled/user_profile_enabled/curator.enabled=true + לכוון nudge_interval/flush_min_turns. (Honcho ל-dialectic-modeling דורש הגדרת honcho: — כרגע ריק.)

4.2 שכבת-הממשל (חובה לפני — אחרת מפר את החוקה)

  1. INV-LRN1/G10 (אין auto-commit): memory/skills של Hermes שמשנים את עצמם אוטומטית אסורים כשער-ידע. כל פלט-למידה חייב להישאר הצעה לשער-יו"ר. ⇒ אם מדליקים, לגדר כך שה-memory/skills של Hermes לא יוזרקו לכתיבה בלי אישור.
  2. INV-LRN5 (טוהר-הקול): ה-3-layer memory + user-model שומרים תוכן-תיק ספציפי. אסור שמהות (הלכה/עובדה) תדלוף לשכבת-הקול. ⇒ צריך distillation שמפריד סגנון↔מהות לפני שנכנס לזיכרון-Hermes, או לבודד את זיכרון-Hermes מהקורפוס.
  3. G12 (שער-הפלטפורמה): Hermes כ-runtime מותר (מאחורי ה-adapter/Port). אבל אם מפעילים את ה-orchestration/scheduler/ערוצים שלו — זו פלטפורמת-סוכנים מקבילה ל-Paperclip ⇒ אסור (ראה #123 §ב).

4.3 ההכרעה הנוכחית

לא להפעיל. הסיבה (מ-#123 + החקירה כאן): ה-self-learning של Hermes מתנגש בממשל שלנו (4-6), והערך שלו מושג כבר ע"י הצינור המגודר שלנו + רעיון-GEPA (#123). ה-runtime נשאר; ה-"מוח" כבוי.


5. מקורות-קוד / הפניות

  • runtime: adapters/deepseek-paperclip-adapter/dist/{shared/constants.js,server/execute.js} · ~/.hermes/profiles/curator-{cmp,cmpa}/config.yaml
  • זהות+wakeup: web/paperclip_client.py:50-53 (CURATOR_AGENTS), :1188-1245 (wake_curator_for_final)
  • persona/prompt: .claude/agents/hermes-curator.md
  • ספ: 07-learning.md (INV-LRN1/4/5) · X15 (G12) · #123 feasibility
  • זיכרון: reference_hermes_home_gotcha