Skip to main content

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 work

Implementacja

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/recall

Zwraca 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/poll

Zwraca 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 context

Krok 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 progress

Peł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/stats

Nastę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 ...

Następne kroki