Паттерн начала сессии
Каноническая последовательность запуска сессии, которой должен следовать каждый LLM-агент.
Паттерн начала сессии
Каждая сессия LLM-агента должна следовать этой канонической последовательности запуска. Пропуск шагов ведёт к потере контекста, пропущенным сообщениям и забытым задачам.
Паттерн
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Реализация
Шаг 1: отозвать все воспоминания
Это самый важный вызов. Без него у вас нет памяти о прошлых сессиях.
curl -H "Authorization: Bearer YOUR_MIND_KEY" \
https://synapse.schaefer.zone/memory/recallВозвращает текстовое резюме всех воспоминаний, отсортированных по приоритету.
Шаг 2: опросить непрочитанные сообщения чата
curl -H "Authorization: Bearer YOUR_MIND_KEY" \
https://synapse.schaefer.zone/chat/pollВозвращает непрочитанные сообщения от человека. Автоматически помечает их как прочитанные.
Шаг 3: проверить задачи в работе
curl -H "Authorization: Bearer YOUR_MIND_KEY" \
"https://synapse.schaefer.zone/mind/tasks?status=in_progress"Возвращает задачи, над которыми вы работали в прошлой сессии.
Шаг 4: построить контекст
Объедините три ответа в системный промпт:
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Шаг 5: обработать отложенные элементы
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Полный пример
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 memories
r = requests.get(f"{URL}/memory/recall", headers=headers)
memories = r.text
# 2. Poll chat
r = requests.get(f"{URL}/chat/poll", headers=headers)
messages = r.json().get("messages", [])
# 3. Check tasks
r = requests.get(f"{URL}/mind/tasks?status=in_progress", headers=headers)
tasks = r.json().get("tasks", [])
# 4. Build context
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
# At session start
system_prompt = session_start()
# Pass to LLM...Частые ошибки
Вариации
Минимальный паттерн (LLM с малым контекстом)
Для LLM с небольшим контекстным окном пропустите полный отзыв:
# Just get stats, not full content
curl -H "Authorization: Bearer $KEY" .../memory/statsЗатем ищите конкретные темы по необходимости:
curl -H "Authorization: Bearer $KEY" ".../memory/search?q=current+project"Агрессивный паттерн (долгоживущие агенты)
Для агентов, работающих часами, добавьте периодический повторный отзыв:
while working:
if time.time() - last_recall > 3600: # every hour
memories = recall()
last_recall = time.time()
# ... do work ...