Files
legal-ai/.claude/agents/HEARTBEAT.md
Chaim 45d52a74d2
All checks were successful
Build & Deploy / build-and-deploy (push) Successful in 7s
Fix agent wakeup: /wake → /wakeup, remove broken DB fallback
The agents used /api/agents/{id}/wake (404) with a fallback of INSERT
INTO agent_wakeup_requests. The DB insert creates only the wakeup
record without a heartbeat_run, so the Paperclip dispatcher never
processes it — agents get stuck in queued forever.

Fix:
- All agents: /wake → /wakeup (correct Paperclip API endpoint)
- Remove all DB INSERT fallbacks, replace with warning
- Document the rule in CLAUDE.md: always API, never DB insert
- Save to memory for future conversations

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-14 14:18:57 +00:00

5.6 KiB
Raw Blame History

HEARTBEAT.md — רשימת ביצוע לכל ריצה

שפה — כלל עליון

כל הפלט שלך חייב להיות בעברית בלבד. זה כולל:

  • Comments ב-Paperclip
  • הודעות סטטוס
  • תיאורי שגיאות
  • סיכומים ודיווחים
  • חשיבה פנימית (thinking)

אין יוצאים מן הכלל. גם שמות tools, פקודות, ונתיבי קבצים — ההסבר סביבם בעברית.


הרץ את הרשימה הזו בכל heartbeat.

1. זיהוי

  • וודא שאתה יודע מי אתה: $PAPERCLIP_AGENT_ID
  • בדוק הקשר: $PAPERCLIP_TASK_ID, $PAPERCLIP_WAKE_REASON

2. בדוק תיבת דואר

curl -s -H "Authorization: Bearer $PAPERCLIP_API_KEY" "$PAPERCLIP_API_URL/api/agents/me/inbox-lite"
  • תעדוף: in_progress קודם, אחר כך todo
  • אם PAPERCLIP_TASK_ID מוגדר — תעדף אותו

2b. קרא תגובות אחרונות על ה-issue

לפני שאתה מתחיל לעבוד, בדוק אם יש comments חדשים מחיים:

curl -s -H "Authorization: Bearer $PAPERCLIP_API_KEY" \
  "$PAPERCLIP_API_URL/api/issues/{issue-id}/comments" | jq '[.[] | select(.authorUserId != null)] | .[-3:]'
  • אם יש comment מחיים (authorUserId, לא authorAgentId) שנכתב אחרי ה-comment האחרון שלך — קרא אותו בתשומת לב
  • אם ה-comment מכיל הוראות עבודה — עקוב אחריהן
  • אם ה-comment מזכיר קובץ שהועלה — בדוק attachments (ראה 2c)
  • אם ה-comment מבקש להעביר לסוכן אחר — עצור, פרסם comment שמאשר, והעֵר את ה-CEO

2c. בדוק קבצים מצורפים

אם comment מחיים מזכיר קובץ או טיוטה:

PGPASSWORD="paperclip" psql -h 127.0.0.1 -p 54329 -U paperclip -d paperclip -c "
SELECT a.original_filename, a.content_type, a.object_key, a.byte_size
FROM issue_attachments ia
JOIN assets a ON a.id = ia.asset_id
WHERE ia.issue_id = '{issue-id}'
ORDER BY ia.created_at DESC LIMIT 5;"
  • נתיב מלא לקובץ: /home/chaim/.paperclip/instances/default/data/storage/{object_key}
  • קבצי DOCX — קרא אותם עם Read
  • השתמש בתוכן הקובץ כקלט לעבודתך

3. Checkout ועבודה

curl -s -X POST -H "Authorization: Bearer $PAPERCLIP_API_KEY" \
  "$PAPERCLIP_API_URL/api/issues/{issue-id}/checkout"
  • עבוד על המשימה לפי ההוראות ב-AGENTS.md שלך
  • השתמש בכלים המשפטיים (legal-ai MCP)

4. דיווח — חובה!

לפני שאתה מסיים, תמיד:

4א. פרסם comment על ה-issue

curl -s -X POST -H "Authorization: Bearer $PAPERCLIP_API_KEY" \
  -H "Content-Type: application/json" \
  "$PAPERCLIP_API_URL/api/issues/{issue-id}/comments" \
  -d '{"body": "סיכום העבודה..."}'

4ב. קבע סטטוס — done או blocked

אם המשימה הושלמה בהצלחה (כל המסמכים חולצו, כל הבדיקות עברו, אין חסימות):

curl -s -X PATCH -H "Authorization: Bearer $PAPERCLIP_API_KEY" \
  -H "Content-Type: application/json" \
  "$PAPERCLIP_API_URL/api/issues/{issue-id}" \
  -d '{"status": "done"}'

אם המשימה נכשלה או חסומה (מסמך לא חולץ, timeout, חוסר מידע, שגיאה שלא ניתנת לפתרון):

curl -s -X PATCH -H "Authorization: Bearer $PAPERCLIP_API_KEY" \
  -H "Content-Type: application/json" \
  "$PAPERCLIP_API_URL/api/issues/{issue-id}" \
  -d '{"status": "blocked"}'

אסור לסיים issue כ-"done" אם יש כשל שלא טופל. "done" = הכל הושלם בהצלחה. אם משהו נכשל — "blocked".

4ג. העֵר את העוזר המשפטי (CEO) — חובה!

אחרי כל סיום משימה (done או blocked), העֵר את העוזר המשפטי כדי שיבדוק תוצאות ויחליט על הצעד הבא:

curl -s -X POST -H "Authorization: Bearer $PAPERCLIP_API_KEY" \
  -H "Content-Type: application/json" \
  "$PAPERCLIP_API_URL/api/agents/752cebdd-6748-4a04-aacd-c7ab0294ef33/wakeup" \
  -d '{"reason": "סוכן [שמך] סיים משימה [issue-id] בסטטוס [done/blocked]. נדרשת בדיקה והחלטה על הצעד הבא."}'

⚠️ אסור להשתמש ב-INSERT INTO agent_wakeup_requests ישירות! הכנסה ישירה ל-DB יוצרת רק את הבקשה בלי heartbeat_run — והסוכן לא יתעורר לעולם. תמיד להשתמש ב-API בלבד.

5. התראת מייל — כשנדרשת תשובה אנושית

כשהתוצאה דורשת החלטה או תשובה של חיים, שלח מייל:

python3 /home/chaim/legal-ai/scripts/notify.py \
  "נדרשת תשובתך — [תיאור קצר]" \
  "תוכן ההודעה עם סיכום מה נדרש"

מתי לשלוח — תמיד:

  • סיום כל משימה — עם סיכום קצר של מה בוצע
  • בקשה לקביעת תוצאה (דחייה/קבלה/חלקית)
  • בקשה לאישור כיוון נימוק
  • דוח QA שנכשל (צריך החלטה על תיקונים)
  • החלטה מוכנה לביקורת דפנה
  • כל מצב שדורש פעולה אנושית ולא יכול להתקדם לבד
  • שגיאה שלא ניתן לפתור ללא התערבות

מתי לא לשלוח:

  • עדכוני סטטוס ביניים (רק בסיום)
  • שגיאות טכניות שאפשר לפתור לבד

6. Release

curl -s -X POST -H "Authorization: Bearer $PAPERCLIP_API_KEY" \
  "$PAPERCLIP_API_URL/api/issues/{issue-id}/release"