Skip to content

feat: 对话列表管理增强 #45

Description

@nameless-name

What do you want? (你想要什么?)

希望历史对话列表支持以下功能:

  1. 批量删除:可以多选会话,一次性删除多个。
  2. 归档:可以把不常用的会话归档,从主列表隐藏,在单独的「已归档」视图中查看和恢复。
  3. 置顶:可以把常用/重要会话置顶,不会被后续对话顶下去。

Why? (为什么?)

在对话分析页面时,会遇到需要解释的名词和概念,这时候需要单开对话避免污染主对话上下文,这些单开的对话可能只用几次就需要删除。随着这些对话越来越多,主对话会被挤到下面去。
之后单开的对话已经不需要了,需要手动一个个删除,比较麻烦。

How? (怎么做? — 可选)

这三个功能都需要同时支持单条和批量两种模式:

单条操作:每条会话 hover 时在右侧显示操作按钮(删除、归档、置顶),和现在已有的删除按钮类似。

批量操作:共用一套选择模式:

  • HistoryPanel 顶部增加「编辑」按钮,点击进入选择模式
  • 列表项左侧出现复选框,顶部有全选/取消全选
  • 底部固定操作栏显示「已选 N 项」,以及删除、归档/取消归档、置顶/取消置顶按钮

删除

后台已有的单条 session_delete 逻辑(校验 UUID → VFS 工作区清理 → DB 删除 → 销毁 agent)可以直接复用。单条依然走现有 session_delete IPC,批量走新的 session_batch_delete IPC 循环调用即可。DB 层 Dexie 原生支持 bulkDelete,不需要额外工作。

归档

SessionRecord 加一个 archived 字段,DB schema 升级到 v2 加 archived 索引,已有记录补默认 false。HistoryPanel 加「全部 / 已归档」切换标签页。单条和批量统一走 session_archive / session_unarchive IPC(都接受 sessionIds: string[]),后台更新 DB 字段即可——归档不碰 VFS 工作区和 agent,只是列表视图隐藏。

置顶

SessionRecord 加一个 pinnedAt 字段(可为 null,非 null 表示置顶,值为置顶时间戳),DB schema 加 pinnedAt 索引。列表排序改为置顶的排在前面(按 pinnedAt 倒序),非置顶的按 updatedAt 倒序跟在后面。单条和批量统一走 session_pin / session_unpin IPC(都接受 sessionIds: string[]),后台更新 pinnedAt 字段即可。

Alternatives considered (考虑过的替代方案 — 可选)

No response

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions