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>
117 lines
5.1 KiB
Bash
Executable File
117 lines
5.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
# A/B test runner #2: DeepSeek V4-Pro on CMP-78 — WITH interaction step
|
||
# (matching the full Sonnet baseline workflow on CMP-80, including ask_user_questions).
|
||
set -euo pipefail
|
||
|
||
PROFILE_HOME="/home/chaim/.hermes/profiles/curator-cmp-deepseek"
|
||
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] סקירת ידע — DeepSeek V4-Pro test #2 (with interaction)"
|
||
PAPERCLIP_RUN_ID="deepseek-ab2-$(date +%s)"
|
||
PAPERCLIP_WAKE_REASON="manual_deepseek_ab_test_v2_with_interaction"
|
||
|
||
read -r -d '' PROMPT <<'EOF' || true
|
||
אתה מנהל ידע (Knowledge Curator) של ועדת הערר. נעור על תיק שדפנה סימנה כסופי.
|
||
|
||
תיק: [ערר 1130-25] סקירת ידע — Knowledge Curator
|
||
issue ID: beb745e5-7195-40c5-9ac0-e9682c2c5184
|
||
run reason: manual_deepseek_ab_test_v2_with_interaction
|
||
|
||
**הקשר חשוב — ניסוי A/B #2:** זוהי ריצה שנייה ידנית באמצעות DeepSeek V4-Pro, הפעם **עם interaction מלא** כדי להשוות הוגנת מול ריצת Sonnet ב-CMP-80. כל הפלטים שתפרסם חייבים להתחיל בכותרת `[ניסוי DeepSeek V4-Pro #2 — עם interaction]`. אל תעיר סוכנים אחרים. אל תיצור 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:
|
||
- שורה ראשונה: `[ניסוי DeepSeek V4-Pro #2 — עם interaction]`
|
||
- אחר כך פסקה אחת מבוא קצרה
|
||
- אחר כך הממצאים ממוספרים
|
||
|
||
## 5. פתח interaction מסוג ask_user_questions
|
||
זה השלב שעבד את Sonnet הרבה זמן — בוא נראה כמה זמן יקח לך.
|
||
|
||
```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-deepseek-v2:'"$PAPERCLIP_TASK_ID"':select",
|
||
"title": "[DeepSeek] איזה ממצאים שווים עדכון?",
|
||
"continuationPolicy": "wake_assignee",
|
||
"payload": {
|
||
"version": 1,
|
||
"submitLabel": "אשר בחירה",
|
||
"questions": [{
|
||
"id": "findings_to_propose",
|
||
"prompt": "סמן את הממצאים שאני אכין כהצעת עדכון ל-style guide",
|
||
"selectionMode": "multi",
|
||
"options": [
|
||
{"id":"f1","label":"<מילוי לפי ממצא 1>","description":"<תקציר>"},
|
||
{"id":"f2","label":"<מילוי לפי ממצא 2>","description":"<תקציר>"}
|
||
]
|
||
}]
|
||
}
|
||
}'
|
||
```
|
||
|
||
מלא את ה-options לפי הממצאים שלך — אופציה אחת לכל ממצא ממוספר.
|
||
|
||
## 6. עדכן issue ל-status=in_review (לא done — ממתינים לבחירת חיים)
|
||
```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"
|
||
```
|
||
|
||
# כללים
|
||
- אל תעדכן קבצים (skills/, lessons.py, DB) בעצמך. רק comment + interaction.
|
||
- אל תיצור issues חדשים.
|
||
- אל תעיר סוכנים אחרים.
|
||
- בעיה? comment קצר עם הסיבה + סגור (status=done).
|
||
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 "=== DeepSeek V4-Pro #2 (with interaction) — 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)"
|