המשך ל-#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>
8.6 KiB
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 custom → api.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 (טכני)
- gateway מתמשך במקום one-shot. היום
hermes chat -q … -Qיוצא אחרי תור אחד. צריך תהליך-Hermes חי (hermes gateway/דמון) או--resumeעקבי עם session מתמשך כך שה-memory-flush, ה-curator-הפנימי, ונדנוד-ה-skills יוכלו לרוץ. ⇒ שינוי ב-deepseek-paperclip-adapter(לא רק config). - session persistence. לוודא ש-
persistSession+sessionIdנשמרים בין יקיצות-ה-curator של אותו תיק/חברה (ה-adapter תומך —execute.js:251-252,376-378— אך תלוי שמירתsessionParamsב-Paperclip). - הדלקת הפיצ'רים ב-config.yaml: להחזיר
memory_enabled/user_profile_enabled/curator.enabled=true+ לכווןnudge_interval/flush_min_turns. (Honcho ל-dialectic-modeling דורש הגדרתhoncho:— כרגע ריק.)
4.2 שכבת-הממשל (חובה לפני — אחרת מפר את החוקה)
- INV-LRN1/G10 (אין auto-commit): memory/skills של Hermes שמשנים את עצמם אוטומטית אסורים כשער-ידע. כל פלט-למידה חייב להישאר הצעה לשער-יו"ר. ⇒ אם מדליקים, לגדר כך שה-memory/skills של Hermes לא יוזרקו לכתיבה בלי אישור.
- INV-LRN5 (טוהר-הקול): ה-3-layer memory + user-model שומרים תוכן-תיק ספציפי. אסור שמהות (הלכה/עובדה) תדלוף לשכבת-הקול. ⇒ צריך distillation שמפריד סגנון↔מהות לפני שנכנס לזיכרון-Hermes, או לבודד את זיכרון-Hermes מהקורפוס.
- 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