Files
legal-ai/scripts/SCRIPTS.md
Chaim 45341a0bc8 feat(curator): switch Hermes Curator to DeepSeek V4-Pro via deepseek_local adapter
A/B test (2026-05-05) showed DeepSeek V4-Pro is 2-3x faster and ~20x cheaper
than Sonnet for style/lexicon pattern analysis, with comparable quality.
Adds adapters/deepseek-paperclip-adapter/ package, documents adapter requirements
(env injection, run-id headers), updates CLAUDE.md with adapter integration notes,
and records lessons from ערר 1200-25 (block order for 1xxx, "להלן מתוך" pattern,
expanded factual background, bridge planning analysis, flat heading structure).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-10 05:58:52 +00:00

10 KiB
Raw Blame History

scripts/ — מדריך סקריפטים

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


סקריפטים פעילים

Script Type Purpose Scheduled
pc.sh bash wrapper לכל קריאות Paperclip API מסוכנים — מוסיף Authorization, X-Paperclip-Run-Id (audit trail), Content-Type, base URL. תחביר: pc.sh <METHOD> <PATH> [BODY_JSON]. אסור curl ישיר ל-$PAPERCLIP_API_URL. ראה HEARTBEAT.md §0. counterpart ב-Python: web/paperclip_api.py. נקרא ע"י סוכנים
sync_missing_agent_skills.py python סקריפט "אל-כשל" להוספת paperclipSkillSync ל-הגהת מסמכים ו-מנתח משפטי שפיספסו את ה-sync ההיסטורי (Gap #28). תומך --verify/--dry-run/--apply. גיבוי אוטומטי ל-agents-pre-skill-sync-*.sql. דורש PAPERCLIP_BOARD_API_KEY (Infisical /paperclip ב-nautilus env). idempotent. חד-פעמי (בוצע 2026-05-04). שמור לרפרנס
sync_agents_across_companies.py python סנכרון סוכנים מ-CMP (1xxx, master) ל-CMPA (8xxx, mirror) — Gap #25. משווה adapter_config (model/timeout/instructions/skills/etc), runtime_config (heartbeat), ושדות top-level (budget/metadata/icon/title/role). מסנן אוטומטית local skills שלא קיימים ב-mirror. לוגיקת subset (mirror יכול להחזיק יותר skills כי ה-API מוסיף required runtime skills). תומך --verify/--dry-run/--apply [--only NAME]. גיבוי אוטומטי. דורש PAPERCLIP_BOARD_API_KEY. להריץ אחרי כל שינוי הגדרות ב-CMP. ⚠ אם adapter_type שונה בין CMP ל-CMPA — הסקריפט מדלג על הסוכן עם warning. בעת מעבר adapter (למשל ל-deepseek_local) חובה לעדכן ידנית בשתי החברות לפני sync. ידני אחרי כל שינוי
fix_paperclipai_skills_drift.py python סקריפט חד-פעמי (בוצע 2026-05-04) שניקה drift על paperclipai/* skills בין CMP ל-CMPA. הסיר paperclip-dev מכל 14 הסוכנים, ודאג ש-paperclip-converting-plans-to-tasks קיים רק על CEO ו-analyst. תומך --apply (ברירת מחדל: dry-run). דורש PAPERCLIP_BOARD_API_KEY. נשמר לרפרנס למקרה שhdrift חוזר. חד-פעמי (בוצע)
auto-sync-cases.sh bash סנכרון תיקי ערר ל-Gitea — רץ כל דקה * * * * * (cron)
backup-db.sh bash גיבוי PostgreSQL יומי ל-data/backups/ (gzip) לתזמן: 0 2 * * *
restore-db.sh bash שחזור DB מגיבוי (companion ל-backup-db.sh) ידני
notify.py python שליחת מייל התראה מסוכנים via SMTP (Gmail) נקרא ע"י סוכנים
bidi_table.py python יצירת טבלאות box-drawing עם תמיכה ב-BiDi (עברית+אנגלית) ספריית עזר
convert_decision_template.py python המרת data/training/טיוטת החלטה.dotxskills/docx/decision_template.docx לטעינה ב-python-docx להריץ כשמתעדכנת התבנית
deploy-track-changes.sh bash סנכרון skills CMP↔CMPA + בדיקות + הנחיות deploy לארכיטקטורת Track Changes ידני
retrofit_case.py python retrofit רטרואקטיבי — מזריק bookmarks לקובץ קיים של תיק ספציפי ומגדיר אותו כ-active_draft ידני (חד-פעמי לתיק)
reembed_voyage.py python Re-embed כל הוקטורים ב-DB עם המודל ב-VOYAGE_MODEL (לאחר שינוי מודל). 5 טבלאות, 1024 דמ', batches של 100. ראה docs/voyage-upgrades-plan.md ידני (אחרי החלפת VOYAGE_MODEL)
voyage_context3_poc.py python POC #1 — voyage-3 vs voyage-context-3 על פסיקה אחת קצרה (קלמנוביץ, 63 chunks). הכרעה: context-3 לא מציג שיפור עקבי בנצ'מרק חד-פעמי, נשמר לרפרנס
voyage_context3_poc_long.py python POC #2 — voyage-context-3 על פסיקה ארוכה (אהרון ברק 219 chunks) עם sliding windows. הכרעה: context-3 לא משתפר על פסיקה גדולה בנצ'מרק חד-פעמי, נשמר לרפרנס
voyage_multimodal_poc.py python POC #3 — voyage-multimodal-3 על דוח שמאי (89 עמודים). הכרעה: שיפור משמעותי לטבלאות + 22 עמודי image-only שhttp text-OCR מאבד בנצ'מרק חד-פעמי, מוכן לשלב C
voyage_rerank_judge_poc.py python POC #4 — voyage-3 vs rerank-2 vs context-3 על אהרון ברק, 18 שאילתות, claude-haiku-4-5 כ-judge. הכרעה: rerank-2 ניצח עם +9% mean@3 בנצ'מרק חד-פעמי
voyage_rerank_corpus_poc.py python POC #5 — voyage-3 vs rerank-2 על קורפוס מלא (785 docs). הכרעה: +4.5% mean@3 כללי, +11.6% על P queries (practical) בנצ'מרק חד-פעמי, אישר את שלב B
multimodal_backfill.py python Backfill voyage-multimodal-3 page embeddings על מסמכי תיקים קיימים. idempotent (skips by default), forces MULTIMODAL_ENABLED=true ל-run, רץ מהקונטיינר. שלב C — ראה docs/voyage-upgrades-plan.md ידני per-case (python multimodal_backfill.py 8174-24 8137-24)
backfill_chunk_pages.py python Backfill page_number ב-document_chunks קיימים. legacy chunker לא tracked עמודים → page_number=NULL חוסם boost של multimodal hybrid (text+image join על אותו עמוד). re-extracts כל PDF (re-OCR אם צריך, ~$0.0015/page), מחשב page_offsets, ומעדכן chunks. idempotent ידני per-case (python backfill_chunk_pages.py 8174-24 8137-24)

תיקיית .archive/ — סקריפטים שהושלמו

סקריפטים חד-פעמיים שהפונקציונליות שלהם הוטמעה ב-MCP server או ב-API. נשמרים ב-git לצורך היסטוריה — אין להריץ אותם.

Script Original Purpose Superseded By
backfill_pattern_frequency.py עדכון תדירות דפוסי סגנון ב-DB web/app.py::_extract_pattern_variants()
batch_upload_training.py העלאת קורפוס אימון (16 קבצים) Web UI: /api/training/upload
benchmark_embeddings.py השוואת מודלי embeddings (voyage-3 vs voyage-4) הושלם — voyage-3-large נבחר
benchmark_new_vs_old.py השוואת Google Vision vs markdown קיים הושלם — בדיקה חד-פעמית לתיק 1130-25
decompose-decisions.py פירוק החלטות סופיות ל-12 בלוקים MCP: write_block(), write_all_blocks()
export-decision-docx.py ייצוא החלטה ל-DOCX MCP: export_docx()
extract-citations.py חילוץ ציטוטי פסיקה מבלוק י MCP service: references_extractor.py
extract-claims.py חילוץ טענות מבלוק ז MCP: extract_claims() + claims_extractor.py
extract_claims_8174.py חד-פעמי — חילוץ טענות חסרות לתיק 8174-24 אחרי timeout של האנליסט (43 טענות עורר נוספו 30/04/26) phase 1: claude_session async + 30min timeout + chunking סמנטי
extract_all_google_vision.py OCR בכמות עם Google Vision MCP: document_upload() pipeline
extract_originals.py חילוץ טקסט מ-PDF עם Claude Opus MCP service: extractor.py
extract_originals_ocr.py חילוץ OCR מלא מ-PDF MCP service: extractor.py
generate-embeddings.py יצירת embeddings לבלוקים ופסיקה אוטומטי — נוצרים עם יצירת בלוקים
link-claims-to-discussion.py קישור טענות לפסקאות דיון MCP service: qa_validator.py
proofread_training_corpus.py ניקוי Nevo מ-DOCX/PDF ל-Markdown MCP service: proofreader.py + Web UI
seed-appeals.py seeding תיקי ערר ראשוניים ל-DB MCP: case_create()
seed-knowledge.py seeding לקחים, ביטויי מעבר, פסיקה MCP: record_chair_feedback(), precedent_attach()
validate-decision.py ולידציה מול block-schema MCP: validate_decision() + qa_validator.py
run_curator_deepseek_test.sh A/B test #1 (2026-05-05) — Hermes Curator על CMP-78 דרך DeepSeek V4-Pro ב-provider:custom, ללא interaction. תוצאה: 6:33 דק׳, 5 ממצאי סגנון/לקסיקון, פי 3 מהיר מ-Sonnet baseline (CMP-80) ופי ~20 זול. הסקריפט נקודתי לתיק 1130-25 — לא להריץ שוב החלפת Curator לאדפטר DeepSeek מקומי (בתהליך)
run_curator_deepseek_test_v2.sh A/B test #2 (2026-05-05) — אותו run אבל עם interaction. תוצאה: 9:08 דק׳, 5 ממצאים, היחיד מ-4 הריצות שזיהה תוצאה עובדתית נכונה (קבלה חלקית). interaction נכשל ב-API ("Agent run id required" בריצה ידנית). החלפת Curator לאדפטר DeepSeek מקומי
run_curator_sonnet_rerun.sh A/B test #3 (2026-05-05) — ריצה חוזרת של Sonnet 4.5 על אותו CMP-78. תוצאה: 12:52 דק׳ (לעומת 20:13 בריצה המקורית — כי בלי לולאת interaction.json). זיהה תוצאה שגויה ("דחייה") בעקביות עם הריצה המקורית — Sonnet עקבי-בטעות, DeepSeek אקראי. בדיקה חד-פעמית — לא להריץ שוב

סקריפטים שנמחקו (git history בלבד)

Script Reason
import-final-decisions.py מיגרציה הושלמה — כל ההחלטות ב-data/training/
compare_extractions.py בדיקה חד-פעמית לתיק 1130-25
decompose-decisions-v2.py כפילות של v1
extract_google_vision.py hardcoded לתיק בודד
extract_google_vision_single.py wrapper חד-פעמי
test-search.py סקריפט דיבאג