feat(ops): מעבר-אדפטר בטוח לכל סוכן ← כל אדפטר (any→any) — סוגר FU-8a #247
Reference in New Issue
Block a user
Delete Branch "worktree-adapter-migrate"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
הקשר
נגמרו טוקני-Claude ונעשה ניסיון להעביר את ה-CEO מ-
claude_localל-gemini_localדרךה-dropdown הגולמי — הסוכן קרס מיד. שורש-הכשל אומת על-פני שלושה צירים:
gemini_local/deepseek_localמדביקים את תוכן קובץ-ההוראות כ-arg(
gemini --prompt,hermes chat -q); ערך שמתחיל ב----(כל קבצי-claude שלנו) נקרא כדגל →Not enough arguments following: prompt→ קריסה תוך ~2ש'.claude_localמעביר נתיב-קובץ ולכן חסין.adapter_config.modelחייב להתאים למשפחת-האדפטר (claude-/gemini-/deepseek-).~/.gemini/settings.jsonexcludeToolsהוא גלובלי לכל סוכני-gemini ומסיר כלי-כתיבה (case_update...).בנוסף, שינוי חברה-אחת מפר INV-MC1 (הסנכרון מדלג על adapter mismatch → drift שקט).
מה ה-PR עושה
מנגנון data-driven אחד שמעביר כל סוכן ← כל אדפטר, בשתי החברות יחד, הפיך, עם שער-preflight
שמסרב מעבר לא-בטוח (סוגר את פער FU-8a — "אין שער-ולידציה למעבר-אדפטר").
scripts/adapter_profiles.py— רישום-פרופילי-אדפטר (מקור-אמת יחיד ל-3 הצירים; אדפטר חדש = רשומה אחת).scripts/migrate_agent_adapter.py— מנוע--check/--apply/--revert/--verify:.claude/agents/.generated/<name>.nofm.mdל-content_arg adapters (הקנוני נשאר עם---ל-claude — G2, בלי כפילות-ידנית).--relax-toolsמשחרר את ה-conflict מ-excludeTools הגלובלי, עם שחזור-מדויק.data/adapter-migration-state.json→--revertמחזיר למצב-המקור המדויק (כולל ה-empty-model של ה-mirror)./api/agents/{id}(שימוש-חוזר ב-call_patchמ-sync_agents_across_companies.py) — לא DB..gitignore+scripts/SCRIPTS.md.בדיקות
--verify→ 9 סוכנים תקינים (כולל אימות ש-gemini-critique/hermes לא פותחים ב---).--checkCEO→gemini → מציג nofm-path + model + tool-conflict (case_update, extract_appraiser_facts); provider-guard תופס מודל לא-תואם (exit≠0).#, חסין-flag), canonical↔nofm, recompute של excludeTools.PAPERCLIP_BOARD_API_KEYומוטציה על הפלטפורמה החיה.Invariants
--verifyמסמן א-סימטריה.🤖 Generated with Claude Code
הקשר: החלפת adapter_type ב-dropdown הגולמי של Paperclip מקריסה את הסוכן מיד — content_arg adapters (gemini_local/deepseek_local) שוברים את ה-frontmatter המוביל `---` (yargs/arg-parser קורא אותו כדגל → "Not enough arguments following: prompt"), המודל חייב להתאים ל-provider, ו-excludeTools של gemini גלובלי לכל הסוכנים. בנוסף — שינוי חברה-אחת מפר את INV-MC1 (סנכרון מדלג על adapter mismatch → drift שקט). הכלי מיישב את 3 צירי-הכשל data-driven, מעביר בשתי החברות יחד, הפיך מדויק, ומסרב מעבר לא-בטוח ב-preflight (סוגר את פער FU-8a "אין שער-ולידציה למעבר-אדפטר"). - scripts/adapter_profiles.py — רישום-פרופילי-אדפטר (מקור-אמת יחיד; אדפטר חדש = רשומה אחת) - scripts/migrate_agent_adapter.py — --check/--apply/--revert/--verify; frontmatter→.nofm.md נגזר, sidecar לשחזור, --relax-tools ל-excludeTools, PATCH דרך /api/agents/{id} (לא DB) - .gitignore + scripts/SCRIPTS.md נבדק: --verify (9 סוכנים תקינים), --check (CEO→gemini מציג nofm+model+tool-conflict; provider-guard תופס מודל לא-תואם, exit≠0), ובדיקות-לוגיקה טהורות (strip/canonical/recompute). Invariants: מקיים G2 (רישום+קובץ-קנוני יחיד, גרסת-gemini נגזרת), G12 (PATCH-API דרך המעטפת, לא DB), INV-MC1 (שתי חברות יחד). סוגר FU-8a. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>