forked from SpeedyFoxAi/jarvis-memory
Initial commit: Jarvis Memory system
This commit is contained in:
65
skills/qdrant-memory/scripts/notify_check.py
Executable file
65
skills/qdrant-memory/scripts/notify_check.py
Executable file
@@ -0,0 +1,65 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Lightweight notification checker for agent messages
|
||||
Cron job: Check Redis stream hourly, notify if new messages
|
||||
"""
|
||||
|
||||
import json
|
||||
import redis
|
||||
import os
|
||||
from datetime import datetime, timezone
|
||||
|
||||
REDIS_HOST = "10.0.0.36"
|
||||
REDIS_PORT = 6379
|
||||
STREAM_NAME = "agent-messages"
|
||||
LAST_NOTIFIED_KEY = "agent:notifications:last_id"
|
||||
|
||||
# Simple stdout notification (OpenClaw captures stdout for alerts)
|
||||
def notify(messages):
|
||||
if not messages:
|
||||
return
|
||||
|
||||
other_agent = messages[0].get("agent", "Agent")
|
||||
count = len(messages)
|
||||
|
||||
# Single line notification - minimal tokens
|
||||
print(f"📨 {other_agent}: {count} new message(s) in agent-messages")
|
||||
|
||||
# Optional: preview first message (uncomment if wanted)
|
||||
# if messages:
|
||||
# preview = messages[0].get("message", "")[:50]
|
||||
# print(f" Latest: {preview}...")
|
||||
|
||||
def check_notifications():
|
||||
r = redis.Redis(host=REDIS_HOST, port=REDIS_PORT, decode_responses=True)
|
||||
|
||||
# Get last position we notified about
|
||||
last_id = r.get(LAST_NOTIFIED_KEY) or "0"
|
||||
|
||||
# Read new messages since last notification
|
||||
result = r.xread({STREAM_NAME: last_id}, block=100, count=100)
|
||||
|
||||
if not result:
|
||||
return # No new messages, silent exit
|
||||
|
||||
messages = []
|
||||
new_last_id = last_id
|
||||
|
||||
for stream_name, entries in result:
|
||||
for msg_id, data in entries:
|
||||
messages.append(data)
|
||||
new_last_id = msg_id
|
||||
|
||||
if messages:
|
||||
# Filter out our own messages (don't notify about messages we sent)
|
||||
my_agent = os.environ.get("AGENT_NAME", "Kimi") # Set in cron env
|
||||
other_messages = [m for m in messages if m.get("agent") != my_agent]
|
||||
|
||||
if other_messages:
|
||||
notify(other_messages)
|
||||
|
||||
# Update last notified position regardless
|
||||
r.set(LAST_NOTIFIED_KEY, new_last_id)
|
||||
|
||||
if __name__ == "__main__":
|
||||
check_notifications()
|
||||
Reference in New Issue
Block a user