会话(Session) 协议
别名:
会话隔离
服务端隔离各客户端对话上下文的单元:每个会话有独立的状态与事件流,事件按 sessionId 分桶。会话状态在界面层,core 无状态。见[第 15 章](/chapters/15-service-v02-events/)。
它是什么
会话(Session)是服务端隔离各客户端对话上下文的单元:每个会话有独立的状态与事件流,事件按 sessionId 分桶。HTTP 请求本身无状态——同一个用户问完「上海的天气」再问「那北京呢?」,第二个请求不知道上下文里已经查过上海;会话就是给这种「连续的对话」一个身份。
状态在界面层
本章的关键分层决定:会话状态在界面层(server),不在 core。loop 每次运行拿到的是完整历史(每次把 session.messages 喂给 runAgent),它自己不保存任何东西;core 拿到什么 sessionId 就盖什么章,不理解「会话」这个概念。判断标准一句话:把 server.mjs 删掉,loop / events 还能不能单独跑、单独被测试?
在本教程的位置
第 15 章用 Map<sessionId, Session> 存每会话消息历史;同一会话正在跑时再提交回 409 session busy(顺序保证:不让同一会话的两轮事件交织)。多会话(multi-session)就是这份 Map 从一条变 N 条。