# ADR-001: AI 绘画 Workspace / Conversation 状态归属 ## Status Accepted ## Date 2026-08-11 ## Context 旧客户端把一个 AI 绘画 Workspace 等同于一条持续对话,并由客户端按 Workspace 创建和回收临时 Agent Session。多会话产品模型要求同一设计项目内存在多条独立对话,同时保留项目级生成任务与资产。继续沿用旧 Session 所有权会让注销时的远端 DELETE 破坏 Conversation 的持久上下文。 ## Decision - Workspace 持有项目身份、Conversation 列表、生成任务和资产。 - Conversation 持有消息、Brief、Quote、`turnRevision` 以及服务端持久 Agent Gateway Session 的绑定。 - 新建 Conversation 不创建新 Workspace;切换 Conversation 只读取该对话并重连其事件流,项目级任务和资产保持可见。 - Conversation 异步与流式更新必须同时校验 Workspace + Conversation 身份;Task 更新按 Workspace 归并。 - 客户端不创建、旋转或在注销/退出时 DELETE 服务端持久 Conversation Session。终端清理只关闭本地流、清除本机 Session-id 缓存和本地凭据;后续访问重新从 Conversation API 读取 Session。 - 未打包的本地开发适配器把旧单会话 schema v2 迁移为带默认 Conversation 的 schema v3;该适配器不得成为打包应用的云端失败回退。 ## Rationale 该分层与用户可见的“一个设计项目,多条独立会话,共享生成结果”一致,并让 Session 生命周期由持久化 Conversation 的服务端权威管理。Workspace + Conversation 双重身份和 generation/revision 防护可以阻止切换过程中的迟到异步结果污染当前对话。 ## Consequences - 客户端发布前必须先部署服务端迁移 `0033` 与多 Conversation API。 - 退出登录不会删除远端 Conversation Session;服务端继续通过认证与授权控制访问。 - Renderer、Host API、云端适配器和本地开发适配器都必须保持相同的 Workspace / Conversation / Task 所有权语义。 - Conversation 数量增长后可能需要分页和搜索;当前侧栏只内联展示近期会话。 ## Supersedes - 旧的未文档化“每个 Workspace 由客户端创建并在注销时删除临时事件 Session”实现。 ## Related - `498089401708dc08123141891dba9b54e47cefea` - `03dae62cf35d643bba253d1013579cc3f4f528e4` - `.project-docs/30-worklog/tasks/20260806-design-multisession-ui-4e7d.md`