会话管理

📎 引用文件

本文引用的文件 - agent/src/api/sessions_routes.py - agent/src/session/models.py - agent/src/session/service.py - agent/src/session/store.py - agent/src/session/events.py

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能与并发
  8. 故障排查指南
  9. 结论
  10. 附录:API 端点参考

简介

本文件为 Vibe-Trading 的“会话管理”API 提供完整、可操作的文档。内容覆盖会话创建、更新、删除、查询,消息发送与历史读取,SSE 事件流订阅;并详细说明会话生命周期、上下文保持、状态同步机制、Session/Message/Attempt 模型字段、事件类型、持久化与恢复策略、清理方式、并发控制、内存管理与性能优化建议。

项目结构

会话管理由以下模块协作完成: - API 路由层:暴露 HTTP 端点(FastAPI),负责鉴权、参数校验、调用服务层。 - 服务层:编排会话生命周期、消息处理、执行尝试(Attempt)调度、事件发布。 - 存储层:基于文件系统的持久化(session.json、messages.jsonl、attempt.json)。 - 事件总线:SSE 事件缓冲、重放、心跳、线程安全发布。 - 数据模型:Session、Message、Attempt、Principal 等数据结构定义。

graph TB Client["客户端"] --> Routes["HTTP 路由<br/>sessions_routes.py"] Routes --> Service["会话服务<br/>service.py"] Service --> Store["文件系统存储<br/>store.py"] Service --> EventBus["SSE 事件总线<br/>events.py"] Service --> Models["数据模型<br/>models.py"] EventBus --> Client

图表来源 - agent/src/api/sessions_routes.py:289-800 - agent/src/session/service.py:53-440 - agent/src/session/store.py:16-259 - agent/src/session/events.py:20-240 - agent/src/session/models.py:121-342

章节来源 - agent/src/api/sessions_routes.py:289-800 - agent/src/session/service.py:53-440 - agent/src/session/store.py:16-259 - agent/src/session/events.py:20-240 - agent/src/session/models.py:121-342

核心组件

章节来源 - agent/src/session/service.py:53-440 - agent/src/session/store.py:16-259 - agent/src/session/events.py:20-240 - agent/src/session/models.py:121-342

架构总览

会话管理的端到端流程如下: - 客户端通过 HTTP 创建/更新/删除/查询会话与消息。 - 路由层调用服务层进行业务编排。 - 服务层将消息写入存储,创建 Attempt 并异步执行 AgentLoop。 - 执行过程中通过事件总线发布 SSE 事件(工具调用、结果、尝试开始/结束等)。 - 客户端通过 /sessions/{id}/events 订阅 SSE 流,支持断线重连与重放。

sequenceDiagram participant C as "客户端" participant R as "路由层" participant S as "会话服务" participant ST as "存储层" participant E as "事件总线" C->>R : POST /sessions/{id}/messages R->>S : send_message(session_id, content) S->>ST : append_message() S->>ST : create_attempt() S->>E : emit("attempt.started") S-->>C : {message_id, attempt_id} Note over S : 后台执行 AgentLoop S->>E : emit("tool_call"/"tool_result")... S->>ST : update_attempt(status=completed/failed/cancelled) S->>E : emit("attempt.completed"/"attempt.failed"/"attempt.cancelled")

图表来源 - agent/src/api/sessions_routes.py:697-728 - agent/src/session/service.py:158-344 - agent/src/session/store.py:151-239 - agent/src/session/events.py:127-240

详细组件分析

数据模型与字段定义

章节来源 - agent/src/session/models.py:121-342

会话生命周期与状态机

stateDiagram-v2 [*] --> 已创建 : "创建会话" 已创建 --> 活跃 : "发送消息并开始执行" 活跃 --> 已完成 : "执行成功" 活跃 --> 已失败 : "执行异常" 活跃 --> 已取消 : "用户取消或超时" 已完成 --> 归档 : "可选归档" 已失败 --> 归档 : "可选归档" 已取消 --> 归档 : "可选归档"

图表来源 - agent/src/session/models.py:121-138 - agent/src/session/service.py:158-344

消息格式与事件类型

章节来源 - agent/src/api/sessions_routes.py:28-158 - agent/src/api/sessions_routes.py:186-282 - agent/src/session/events.py:20-55 - agent/src/session/service.py:34-40

会话持久化、恢复与清理

章节来源 - agent/src/session/store.py:16-259 - agent/src/session/events.py:151-240

并发会话控制、内存管理与性能优化

章节来源 - agent/src/session/service.py:30-91 - agent/src/session/service.py:158-344 - agent/src/session/service.py:346-440 - agent/src/session/service.py:515-581 - agent/src/session/events.py:67-126 - agent/src/session/events.py:185-240

依赖关系分析

graph LR Routes["sessions_routes.py"] --> Service["service.py"] Service --> Store["store.py"] Service --> Events["events.py"] Service --> Models["models.py"] Service --> Tools["tools.build_registry"] Service --> Loop["agent.loop.AgentLoop"]

图表来源 - agent/src/api/sessions_routes.py:289-330 - agent/src/session/service.py:346-440

章节来源 - agent/src/api/sessions_routes.py:289-330 - agent/src/session/service.py:346-440

性能与并发

[本节为通用指导,无需具体文件引用]

故障排查指南

章节来源 - agent/src/api/sessions_routes.py:321-330 - agent/src/api/sessions_routes.py:605-632 - agent/src/api/sessions_routes.py:697-728 - agent/src/session/store.py:118-193 - agent/src/session/events.py:151-240

结论

Vibe-Trading 的会话管理 API 提供了完整的会话生命周期管理能力,结合文件系统持久化与 SSE 事件流,实现了高可用、可恢复、可扩展的会话交互体验。通过严格的并发控制与内存管理策略,系统在高负载下仍能保持稳定。建议在生产环境中合理配置事件缓冲、线程池大小与历史裁剪阈值,以满足不同规模的使用需求。

[本节为总结,无需具体文件引用]

附录:API 端点参考

章节来源 - agent/src/api/sessions_routes.py:335-800