Wzorzec początku sesji
Kanoniczna sekwencja początkowa, którą powinien stosować każdy agent LLM.
Wzorzec początku sesji
Każda sesja agenta LLM powinna podążać za kanoniczną sekwencją startową. Pominięcie kroków prowadzi do utraty kontekstu, przeoczenia wiadomości i zapomnienia zadań.
Wzorzec
1. Recall all memories
2. Poll for unread chat messages
3. Check in-progress tasks
4. Build context from results
5. Process pending items before new workImplementacja
Krok 1: recall wszystkich wspomnień
To najważniejsze wywołanie. Bez niego agent nie ma pamięci przeszłych sesji.
curl -H "Authorization: Bearer YOUR_MIND_KEY" \
https://synapse.schaefer.zone/memory/recallZwraca tekstowe podsumowanie wszystkich wspomnień, posortowane po priorytecie.
Krok 2: odpytanie o nieprzeczytane wiadomości czatu
curl -H "Authorization: Bearer YOUR_MIND_KEY" \
https://synapse.schaefer.zone/chat/pollZwraca nieprzeczytane wiadomości od człowieka. Automatycznie oznacza je jako przeczytane.
Krok 3: sprawdzenie zadań w toku
curl -H "Authorization: Bearer YOUR_MIND_KEY" \
"https://synapse.schaefer.zone/mind/tasks?status=in_progress"Zwraca zadania, nad którymi pracowano w ostatniej sesji.
Krok 4: budowa kontekstu
Połączyć trzy odpowiedzi w system prompt:
def build_context(memories, messages, tasks):
context = f"""# SESSION CONTEXT
## Memories (from previous sessions)
{memories}
## Unread Messages from Human
{format_messages(messages)}
## Active Tasks
{format_tasks(tasks)}
## Instructions
- Address unread messages first
- Resume active tasks before starting new work
- Store new learnings as they happen (POST /memory)
- Poll for new messages every 30-60 seconds
"""
return contextKrok 5: przetworzenie oczekujących elementów
For each unread message:
- Acknowledge receipt (POST /chat/reply)
- Address the message content
- Store any new commitments as memories
For each in-progress task:
- Recall why you were working on it
- Continue from where you left off
- Update task status as you progressPełny przykład
import os
import requests
URL = "https://synapse.schaefer.zone"
KEY = os.environ["SYNAPSE_MIND_KEY"]
def session_start():
"""Canonical session start sequence."""
headers = {"Authorization": f"Bearer {KEY}"}
# 1. Recall wspomnień
r = requests.get(f"{URL}/memory/recall", headers=headers)
memories = r.text
# 2. Odpytanie czatu
r = requests.get(f"{URL}/chat/poll", headers=headers)
messages = r.json().get("messages", [])
# 3. Sprawdzenie zadań
r = requests.get(f"{URL}/mind/tasks?status=in_progress", headers=headers)
tasks = r.json().get("tasks", [])
# 4. Budowa kontekstu
context = f"""You are a Synapse-enabled AI assistant.
MEMORIES FROM PREVIOUS SESSIONS:
{memories}
UNREAD MESSAGES FROM HUMAN:
{chr(10).join(f'- {m["content"]}' for m in messages) or 'None'}
ACTIVE TASKS:
{chr(10).join(f'- [{t["id"]}] {t["title"]}: {t.get("description", "")}' for t in tasks) or 'None'}
INSTRUCTIONS:
1. Acknowledge each unread message
2. Resume active tasks
3. Store new learnings via POST /memory
4. Poll /chat/poll every 30-60 seconds
"""
return context
# Na początku sesji
system_prompt = session_start()
# Przekazać do LLM...Częste błędy
Wariacje
Wzorzec minimalny (LLM z małym kontekstem)
Dla LLM z małymi oknami kontekstu pominąć pełny recall:
# Tylko statystyki, nie pełna treść
curl -H "Authorization: Bearer $KEY" .../memory/statsNastępnie wyszukiwać konkretne tematy w razie potrzeby:
curl -H "Authorization: Bearer $KEY" ".../memory/search?q=current+project"Wzorzec agresywny (agenty długotrwałe)
Dla agentów uruchomionych przez wiele godzin dodać okresowy ponowny recall:
while working:
if time.time() - last_recall > 3600: # co godzinę
memories = recall()
last_recall = time.time()
# ... do work ...