用途:管理用户与智能体之间的持久对话线程(会话),避免上下文窗口溢出、状态丢失和用户困惑。适用于设计多轮智能体交互、排查上下文丢失或溢出、决定分叉/恢复/新建,以及制定会话存储保留策略。
会话状态:idle → running → idle(用户发送、智能体响应、等待);idle → compacting → idle(后台上下文压缩);idle → archived(用户或 TTL 触发)。会话可长期存在,从数小时到数周,靠压缩维持上下文预算。
创建:SDK 用 crypto.randomUUID() 生成 sessionId 并传入 query 的 options;Managed 用 client.beta.sessions.create({ agent_id, metadata })。建议在 metadata 中附带 user_id、tenant、feature flag 等自有标识,便于过滤与审计。
恢复:SDK 用 options: { resume: sessionId };Managed 用 client.beta.sessions.messages.create({ session_id, content })。同一用户、同一话题、调试早前决策或继续长流程时恢复;话题完全改变、状态陈旧无法纠正、用户身份变更、上下文过满时新建。新建成本低,恢复坏会话成本高。
压缩:上下文接近模型上限时,旧消息被压缩为摘要。分自动压缩(Managed 默认,SDK 需开启)与手动压缩(可带自定义指令,如 compactSession({ sessionId, instruction }))。压缩有损,重要信息应固定到记忆或在下条用户消息中重新注入。
分叉:client.beta.sessions.fork({ source_session_id, metadata }),两会话共享分叉点前历史后各自分叉,适合假设探索、同上下文 A/B 测试、为新子任务建干净分支。
归档与保留:client.beta.sessions.archive({ session_id }) 后保留但不可恢复,除非取消归档。按用途设保留策略,如用户聊天 30–90 天、支持工单按合规窗口、调试会话 7 天后硬删除。
溢出处理:用窄指令激进压缩、分叉并携带摘要的子会话、把静态上下文移入缓存提示、卸载到记忆工具按需重取。
元数据模式:metadata 可含 user_id、tenant_id、thread_type、topic、started_at、feature_flag,用于仪表盘、审计与迁移。
多设备:优先每个逻辑对话单一 session ID,多设备写同一会话(Managed 处理并发,last-writer-wins);或设备级会话共享元数据。
反模式:无限恢复、无压缩策略、无元数据、无保留策略地归档、跨用户共享会话。最佳实践:话题变化即新建、创建时附丰富元数据、对关键信息用手动压缩、用分叉而非手动克隆消息、按用例定义并执行保留策略、把稳定上下文移入缓存或记忆。