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>
107 lines
5.1 KiB
Bash
Executable File
107 lines
5.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
# A/B test #3: Sonnet 4.5 re-run on CMP-78 — same task as DeepSeek #2 but with Sonnet.
|
||
# Goal: check if Sonnet is consistent across runs (esp. the case-outcome detection),
|
||
# given that the original Sonnet baseline on CMP-80 misread the outcome as "דחייה"
|
||
# while the actual result is "קבלה חלקית".
|
||
set -euo pipefail
|
||
|
||
PROFILE_HOME="/home/chaim/.hermes/profiles/curator-cmp" # default Sonnet profile
|
||
PAPERCLIP_API_URL="http://localhost:3100/api"
|
||
PAPERCLIP_API_KEY="pcp_c87edcf306d06fce13fac701bb6d747191d61dba5b51e903"
|
||
PAPERCLIP_TASK_ID="beb745e5-7195-40c5-9ac0-e9682c2c5184" # CMP-78
|
||
PAPERCLIP_TASK_KEY="$PAPERCLIP_TASK_ID"
|
||
PAPERCLIP_TASK_TITLE="[ערר 1130-25] סקירת ידע — Sonnet rerun (consistency check)"
|
||
PAPERCLIP_RUN_ID="sonnet-rerun-$(date +%s)"
|
||
PAPERCLIP_WAKE_REASON="manual_sonnet_consistency_rerun"
|
||
|
||
read -r -d '' PROMPT <<'EOF' || true
|
||
אתה מנהל ידע (Knowledge Curator) של ועדת הערר. נעור על תיק שדפנה סימנה כסופי.
|
||
|
||
תיק: [ערר 1130-25] סקירת ידע — Knowledge Curator
|
||
issue ID: beb745e5-7195-40c5-9ac0-e9682c2c5184
|
||
run reason: manual_sonnet_consistency_rerun
|
||
|
||
**הקשר חשוב — ניסוי A/B #3:** זוהי ריצה חוזרת ידנית באמצעות Sonnet 4.5 (אותו מודל שהריץ ב-CMP-80) — בדיקת עקביות. כל הפלטים שתפרסם חייבים להתחיל בכותרת `[ניסוי Sonnet 4.5 — ריצה חוזרת על CMP-78]`. אל תעיר סוכנים אחרים. אל תיצור issues חדשים.
|
||
|
||
הוראות:
|
||
דפנה סימנה את ההחלטה הסופית של תיק 1130-25 כסופית.
|
||
קובץ סופי: `סופי-1130-25.docx`
|
||
|
||
סקור את ההחלטה מול skills/decision/SKILL.md ו-docs/legal-decision-lessons.md.
|
||
חפש 3-5 דפוסי סגנון/דיון שלא תועדו. כתוב comment בעברית, ניטרלי, ממוספר.
|
||
|
||
# שלבי ביצוע
|
||
|
||
## 1. קונטקסט
|
||
- קרא את MEMORY.md שלך (memory tool) — מה כבר זיהית.
|
||
- קרא `/home/chaim/legal-ai/skills/decision/SKILL.md` (file tool) — מה כבר תועד.
|
||
|
||
## 2. נתונים
|
||
- `mcp__legal-ai__case_get` עם case_number `1130-25` — מטא-דאטה.
|
||
- `mcp__legal-ai__case_get_final_text` עם case_number `1130-25` — קרא את הטקסט המלא של ההחלטה הסופית.
|
||
|
||
**שים לב במיוחד**: זהה במדויק את **תוצאת ההחלטה** (קבלה / קבלה חלקית / דחייה) על סמך הטקסט עצמו, לא על סמך הנחות.
|
||
|
||
## 3. ניתוח
|
||
חפש 3-5 דפוסים/פערים. לכל ממצא: מה ראיתי + מה זה אומר + הצעה ניסוחית מדויקת.
|
||
|
||
## 4. כתוב comment הממצאים
|
||
```bash
|
||
curl -sS -X POST -H "Authorization: Bearer $PAPERCLIP_API_KEY" -H "Content-Type: application/json" \
|
||
-d "$(jq -n --arg b "$BODY" '{body:$b}')" \
|
||
"$PAPERCLIP_API_URL/issues/$PAPERCLIP_TASK_ID/comments"
|
||
```
|
||
|
||
פורמט ה-body:
|
||
- שורה ראשונה: `[ניסוי Sonnet 4.5 — ריצה חוזרת על CMP-78]`
|
||
- שורה שנייה: `**תוצאת ההחלטה הזו: <קבלה / קבלה חלקית / דחייה>** — ציין מפורשות
|
||
- אחר כך פסקה אחת מבוא קצרה
|
||
- אחר כך הממצאים ממוספרים
|
||
|
||
## 5. פתח interaction מסוג ask_user_questions
|
||
זהה לפלואו של Sonnet באמת. אם תקבל "Agent run id required" — נסה כמה דרכים, ואם לא הולך, פרסם comment עם רשימת אופציות לבחירה.
|
||
|
||
```bash
|
||
curl -sS -X POST -H "Authorization: Bearer $PAPERCLIP_API_KEY" -H "Content-Type: application/json" \
|
||
"$PAPERCLIP_API_URL/issues/$PAPERCLIP_TASK_ID/interactions" \
|
||
-d '{
|
||
"kind": "ask_user_questions",
|
||
"idempotencyKey": "curator-sonnet-rerun:'"$PAPERCLIP_TASK_ID"':select",
|
||
"title": "[Sonnet rerun] איזה ממצאים שווים עדכון?",
|
||
"continuationPolicy": "wake_assignee",
|
||
"payload": {"version": 1, "submitLabel": "אשר בחירה",
|
||
"questions": [{"id": "findings_to_propose", "prompt": "סמן ממצאים", "selectionMode": "multi", "options": []}]}}'
|
||
```
|
||
|
||
## 6. עדכן issue ל-status=in_review
|
||
```bash
|
||
curl -sS -X PATCH -H "Authorization: Bearer $PAPERCLIP_API_KEY" -H "Content-Type: application/json" \
|
||
-d '{"status":"in_review"}' "$PAPERCLIP_API_URL/issues/$PAPERCLIP_TASK_ID"
|
||
```
|
||
|
||
# כללים
|
||
- אל תעדכן קבצים בעצמך. רק comment + interaction.
|
||
- אל תיצור issues חדשים.
|
||
- אל תעיר סוכנים אחרים.
|
||
EOF
|
||
|
||
export HERMES_HOME="$PROFILE_HOME"
|
||
export PAPERCLIP_API_URL PAPERCLIP_API_KEY PAPERCLIP_TASK_ID PAPERCLIP_TASK_KEY \
|
||
PAPERCLIP_TASK_TITLE PAPERCLIP_RUN_ID PAPERCLIP_WAKE_REASON
|
||
|
||
echo "=== Sonnet 4.5 rerun (consistency check) — CMP-78 ==="
|
||
echo "HERMES_HOME=$HERMES_HOME"
|
||
echo "TASK_ID=$PAPERCLIP_TASK_ID"
|
||
echo "RUN_ID=$PAPERCLIP_RUN_ID"
|
||
echo "Started: $(date -u '+%Y-%m-%d %H:%M:%S UTC')"
|
||
echo "---"
|
||
|
||
START_EPOCH=$(date +%s)
|
||
hermes -z "$PROMPT" --yolo chat 2>&1
|
||
END_EPOCH=$(date +%s)
|
||
DURATION=$((END_EPOCH - START_EPOCH))
|
||
echo ""
|
||
echo "=== Run finished ==="
|
||
echo "Ended: $(date -u '+%Y-%m-%d %H:%M:%S UTC')"
|
||
echo "Duration: ${DURATION}s ($((DURATION/60))m $((DURATION%60))s)"
|