Files
makelore/.project-docs/10-decisions/adr-001-ai-design-conversation-ownership.md
brother7 be9bc84474
Some checks failed
Electron E2E / Electron E2E (macos-latest) (push) Has been cancelled
Electron E2E / Electron E2E (ubuntu-latest) (push) Has been cancelled
Electron E2E / Electron E2E (windows-latest) (push) Has been cancelled
合并 AI 设计多会话客户端
整合 Enter 发送与多会话交互,保留服务端持久 Conversation Session,并补齐迁移、回归、Electron E2E 与 canonical 文档。
2026-08-11 16:18:52 +08:00

2.4 KiB
Raw Blame History

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”实现。
  • 498089401708dc08123141891dba9b54e47cefea
  • 03dae62cf35d643bba253d1013579cc3f4f528e4
  • .project-docs/30-worklog/tasks/20260806-design-multisession-ui-4e7d.md