Files
inkos/packages
fanghanjun 70e440b2f1 feat(studio): 新建会话延迟到第一条消息才持久化(draft session)
用户体验上"点新建会话立即出现",但磁盘层面不立即产生 session 文件:
- SessionRuntime 新增 isDraft 字段,标记仅存在前端未落盘的草稿会话
- 新增 createDraftSession action:客户端生成 sessionId(与后端同格式,
  timestamp-random),在 store 里创建 runtime 但不发 POST /sessions
- sendMessage 检测 isDraft:发消息前先 POST /sessions { sessionId, bookId }
  用同一 id 把 session 持久化,成功后把 isDraft 翻成 false 再发 /agent
- deleteSession 跳过 draft(磁盘上还没文件,省一次 404)
- loadSessionDetail 跳过 draft(远端还不存在)

这样用户点新建会话但没聊就切走的情况不会在磁盘产生孤儿文件;同时因为
sessionId 从一开始就固定,React key 和 URL 不用切换,切换顺滑。

同时:
- use-sse.ts 新增 session:title 事件类型,让前端订阅后端"第一条消息写入
  title"的广播,实时刷新侧边栏标题
- chat-page-state.ts 加 localStorage helpers 记录当前新建书籍讨论的 sessionId
- ChatPage 初始化时根据 activeBookId 路由决定激活哪条 session

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-17 02:27:10 -07:00
..