Skip to main content

会话启动模式

每个 LLM Agent 都应遵循的标准会话启动序列。


会话启动模式

每个 LLM Agent 会话都应遵循这一标准启动序列。跳过步骤会导致上下文丢失、错过消息、遗忘任务。

模式

1. 回放所有记忆
2. 轮询未读聊天消息
3. 检查进行中的任务
4. 根据结果构建上下文
5. 在做新工作前处理待处理项

实现

第 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 步:构建上下文

把三份响应合并到你的系统 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

第 5 步:处理待处理项

对每条未读消息:
  - 确认收到 (POST /chat/reply)
  - 处理消息内容
  - 把任何新承诺存为记忆

对每个进行中的任务:
  - 回放你为什么在做它
  - 从中断处继续
  - 随进度更新任务状态

完整示例

import os
import requests

URL = "https://synapse.schaefer.zone"
KEY = os.environ["SYNAPSE_MIND_KEY"]

def session_start():
    """标准会话启动序列。"""
    headers = {"Authorization": f"Bearer {KEY}"}
    
    # 1. 回放记忆
    r = requests.get(f"{URL}/memory/recall", headers=headers)
    memories = r.text
    
    # 2. 轮询聊天
    r = requests.get(f"{URL}/chat/poll", headers=headers)
    messages = r.json().get("messages", [])
    
    # 3. 检查任务
    r = requests.get(f"{URL}/mind/tasks?status=in_progress", headers=headers)
    tasks = r.json().get("tasks", [])
    
    # 4. 构建上下文
    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

# 会话开始时
system_prompt = session_start()
# 传给 LLM...

常见错误

变体

最小模式(低上下文 LLM)

对于上下文窗口小的 LLM,跳过完整回放:

# 只获取统计,不要完整内容
curl -H "Authorization: Bearer $KEY" .../memory/stats

然后按需搜索具体主题:

curl -H "Authorization: Bearer $KEY" ".../memory/search?q=current+project"

激进模式(长期运行 Agent)

对于运行数小时的 Agent,加上周期性重新回放:

while working:
    if time.time() - last_recall > 3600:  # 每小时
        memories = recall()
        last_recall = time.time()
    # ... 执行工作 ...

下一步