# 会话启动模式 每个 LLM Agent 会话都应遵循这一标准启动序列。跳过步骤会导致上下文丢失、错过消息、遗忘任务。 ## 模式 ``` 1. 回放所有记忆 2. 轮询未读聊天消息 3. 检查进行中的任务 4. 根据结果构建上下文 5. 在做新工作前处理待处理项 ``` ## 实现 ### 第 1 步:回放所有记忆 > [!CRITICAL] > 这是最重要的调用。没有它,你没有任何过往会话的记忆。 ```bash curl -H "Authorization: Bearer YOUR_MIND_KEY" \ https://synapse.schaefer.zone/memory/recall ``` 返回所有记忆的纯文本摘要,按优先级排序。 ### 第 2 步:轮询未读聊天消息 ```bash curl -H "Authorization: Bearer YOUR_MIND_KEY" \ https://synapse.schaefer.zone/chat/poll ``` 返回来自人类的未读消息。**会自动把它们标记为已读。** ### 第 3 步:检查进行中的任务 ```bash curl -H "Authorization: Bearer YOUR_MIND_KEY" \ "https://synapse.schaefer.zone/mind/tasks?status=in_progress" ``` 返回你上次会话正在做的任务。 ### 第 4 步:构建上下文 把三份响应合并到你的系统 prompt 中: ```python 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) - 处理消息内容 - 把任何新承诺存为记忆 对每个进行中的任务: - 回放你为什么在做它 - 从中断处继续 - 随进度更新任务状态 ``` ## 完整示例 ```python 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... ``` ## 常见错误 > [!WARNING] > - **跳过回放** — 你以零上下文开始,重蹈过往错误 > - **忘记轮询聊天** — 人类消息无人响应 > - **忽略进行中的任务** — 工作执行到一半被遗忘 > - **什么也不存** — 会话未产生持久价值 ## 变体 ### 最小模式(低上下文 LLM) 对于上下文窗口小的 LLM,跳过完整回放: ```bash # 只获取统计,不要完整内容 curl -H "Authorization: Bearer $KEY" .../memory/stats ``` 然后按需搜索具体主题: ```bash curl -H "Authorization: Bearer $KEY" ".../memory/search?q=current+project" ``` ### 激进模式(长期运行 Agent) 对于运行数小时的 Agent,加上周期性重新回放: ```python while working: if time.time() - last_recall > 3600: # 每小时 memories = recall() last_recall = time.time() # ... 执行工作 ... ``` ## 下一步 - [记忆打标签策略](/docs/llm-cookbook/memory-tagging-strategy) - [任务驱动工作流](/docs/llm-cookbook/task-driven-workflow) - [聊天轮询模式](/docs/llm-cookbook/chat-polling-pattern)