Skip to content

[Feature]: 支持在删除对话时进行可选的文件清理 #31

Description

@chenyme

Affected area

Conversations / streaming

Problem or use case

当前删除会话后,会话中生成或上传的图片、文件资源仍然会保留。这个行为与 LobeHub、Open WebUI 等产品类似,适合多人协作或长期资产留存场景。

但在个人自用或隐私敏感场景下,用户删除会话通常也意味着不再希望保留该会话关联的图片和文件资源。现有行为会导致用户需要额外进入文件管理中手动清理,容易遗漏,也不符合“删除会话即清理相关上下文资源”的预期。

Proposed behavior

在删除会话的确认弹框中增加一个可选 checkbox:

同步删除会话中的所有文件

行为规则:

  • 默认不勾选,保持当前行为,删除会话但保留文件资源。
  • 勾选后,删除会话时同步检查该会话关联的图片和文件。
  • 如果某个文件只被当前删除的会话占用,则同步删除该文件。
  • 如果某个文件仍被其他会话、项目或业务对象引用,则跳过删除,避免误删共享资源。
  • 删除结果应尽量清晰,例如删除成功后可提示已删除会话,并清理了若干未被其他会话引用的文件。
  • 批量删除会话时也应支持同样的选项。

交互可以参考删除项目时的选择框设计,保持默认安全、用户主动确认的模式。

Alternatives considered

当前替代方案是删除会话后再进入文件管理中手动清理相关图片或文件。但这种方式效率低,用户难以准确判断文件是否仍被其他会话使用,也容易造成资源残留。

另一种方案是删除会话时默认删除所有关联文件,但这可能误删被其他会话复用的文件,不够安全,因此不建议作为默认行为。

Compatibility, deployment, or migration impact

Configuration changes: 无需新增全局配置,建议作为删除会话时的用户级显式选择。

API changes: 可能需要在删除会话接口或批量删除接口中增加可选参数,例如 delete_files=truedelete_related_files=true

Database migrations: 如果当前已有会话与文件的关联关系,可通过引用计数或关联查询实现,可能不需要迁移;如果缺少可追踪的关联关系,可能需要补充关联表或索引。

Deployment changes: 无特殊部署要求。

Backward compatibility: 默认不勾选,现有删除会话行为保持不变。只有用户显式选择同步删除文件时,才执行文件清理逻辑。

Documentation or API contract impact

需要更新:

  • 前端 API 类型
  • 删除会话接口说明
  • 批量删除会话接口说明
  • 用户文档中关于“删除会话是否保留文件”的行为说明

Pre-submit checklist

  • I searched existing issues and pull requests.
  • This request is focused on one feature or improvement.
  • I described user-facing, API, configuration, or deployment impact where relevant.

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions