功能描述
希望增加一种“新建对话但保留当前 draw.io 画布”的方式。
界面可以提供两个独立操作:
- 新建空白对话:清空聊天并重置图表,即当前行为
- 基于当前图表新建对话:只清空聊天上下文,保留当前图表 XML
问题背景
当前 handleNewChat() 会同时清空消息和图表。因此,当对话过长或上下文受到污染时,用户无法在保留当前图表的前提下重新开始一次干净的 AI 对话。
一个实际场景:
- 用户和 AI 多轮迭代编辑图表;
- 用户又在 draw.io 画布中手工调整文字和布局;
- 对话变长后,模型开始固守之前的错误判断。即使本轮请求已经包含
Current diagram XML (AUTHORITATIVE - the source of truth),模型仍可能沿用旧结论;
- 新建对话可以清除被污染的上下文,但当前操作也会清空图表,导致用户无法继续编辑现有画布。
这对于人和 AI 交替修改的半自动化工作流尤其重要:画布应当是可以持续保留的工作成果,而聊天上下文应当可以单独重置。
相关反馈也反映了聊天与图表绑定过紧、状态或修改丢失等问题:
建议方案
增加一个新的操作,例如:
建议行为:
- 按当前逻辑先把旧会话保存到 History;
- 清空聊天消息、输入框、附件、重试状态以及模型和工具调用历史;
- 保留 draw.io iframe 中当前加载的图表 XML;
- 新会话发送第一条消息时,继续把保留的图表作为权威
Current diagram XML 提交给模型;
- 不重放旧会话中的历史工具调用;
- 最好以当前保留的 XML 为基线重新初始化 Diagram History,而不是删除画布。
UI 可以使用下拉菜单或确认弹窗:
- 新建空白对话:清空聊天并清空图表
- 基于当前图表新建对话:只清空聊天,保留图表
从实现上看,第二条路径可以复用大部分 handleNewChat(),但跳过 clearDiagram(),并保留当前图表状态。
考虑过的替代方案
- 导出并重新导入
.drawio 文件:可以使用,但操作繁琐,会打断自然的人机交替编辑流程;
- 从 History 恢复旧会话:旧聊天也会一起恢复,无法清除已经污染的上下文;
- 继续使用原对话:无法解决错误结论固化或上下文过长的问题;
- 手工复制 XML:技术上可行,但体验较差,而且应用本身已经能够取得当前画布 XML。
补充说明
当前重置提示明确把两个操作绑定在一起:“这将清除当前对话并重置图表。”
增加“保留图表”选项不会改变现有默认行为,同时能够提供更安全、更符合半自动化编辑需求的工作流。
当前行为对应 components/chat-panel.tsx 中的 handleNewChat():它在清空消息后调用 clearDiagram(),并清空 Diagram History。
功能描述
希望增加一种“新建对话但保留当前 draw.io 画布”的方式。
界面可以提供两个独立操作:
问题背景
当前
handleNewChat()会同时清空消息和图表。因此,当对话过长或上下文受到污染时,用户无法在保留当前图表的前提下重新开始一次干净的 AI 对话。一个实际场景:
Current diagram XML (AUTHORITATIVE - the source of truth),模型仍可能沿用旧结论;这对于人和 AI 交替修改的半自动化工作流尤其重要:画布应当是可以持续保留的工作成果,而聊天上下文应当可以单独重置。
相关反馈也反映了聊天与图表绑定过紧、状态或修改丢失等问题:
建议方案
增加一个新的操作,例如:
建议行为:
Current diagram XML提交给模型;UI 可以使用下拉菜单或确认弹窗:
从实现上看,第二条路径可以复用大部分
handleNewChat(),但跳过clearDiagram(),并保留当前图表状态。考虑过的替代方案
.drawio文件:可以使用,但操作繁琐,会打断自然的人机交替编辑流程;补充说明
当前重置提示明确把两个操作绑定在一起:“这将清除当前对话并重置图表。”
增加“保留图表”选项不会改变现有默认行为,同时能够提供更安全、更符合半自动化编辑需求的工作流。
当前行为对应
components/chat-panel.tsx中的handleNewChat():它在清空消息后调用clearDiagram(),并清空 Diagram History。