运行环境
- OS: macOS (Apple Silicon)
- workbuddy-switch 版本: v0.1.47
问题描述
在使用「会话复制」功能将账号 A 的会话同步/复制到账号 B 时,存在两个影响体验的问题:
- 未作幂等去重:若目标账号内已存在内容完全相同的会话,工具会无差别以新 session ID 再次写入一条完整副本,导致目标账号内出现大量完全相同的重复会话。
- 重写 created_at 导致会话列表乱序:写入副本时,
created_at 与 updated_at 被重写为复制发生的当前时间戳,而 WorkBuddy 客户端会话列表默认按此时间降序排列,导致批量复制的历史会话瞬间被顶到列表最上方,把最近正在进行的真实对话挤到下方,容易让用户误以为原有对话被覆盖或丢失。
关键证据
在核对本地数据库(sessions 表)时发现:
- 复制落地的副本会话中,
created_at 与 updated_at 均被赋值为复制时刻的时间戳;
- 但这些会话的
last_activity_at 字段依然保留着原始会话的历史真实时间(如几天或数周前的原始时间戳)。
这表明原始时间信息在复制流程中是完全可得的,但在持久化为新记录时未被写入排序依赖的 created_at。
建议与改进方案
- 幂等性检查:在复制到目标账号前,建议基于会话内容(如消息内容哈希)检查目标账号是否已存在相同对话,若存在则跳过或提供「跳过已有」选项。
- 保留原始时间戳:建议将源会话的真实
created_at / updated_at 继承给新副本,或增加「保留原始时间戳」开关,避免污染目标账号的时间线排序。
- 管理与撤回:若后续支持,建议提供副本撤销 / 批量删除副本 / 解除关联的入口。
运行环境
问题描述
在使用「会话复制」功能将账号 A 的会话同步/复制到账号 B 时,存在两个影响体验的问题:
created_at与updated_at被重写为复制发生的当前时间戳,而 WorkBuddy 客户端会话列表默认按此时间降序排列,导致批量复制的历史会话瞬间被顶到列表最上方,把最近正在进行的真实对话挤到下方,容易让用户误以为原有对话被覆盖或丢失。关键证据
在核对本地数据库(
sessions表)时发现:created_at与updated_at均被赋值为复制时刻的时间戳;last_activity_at字段依然保留着原始会话的历史真实时间(如几天或数周前的原始时间戳)。这表明原始时间信息在复制流程中是完全可得的,但在持久化为新记录时未被写入排序依赖的
created_at。建议与改进方案
created_at/updated_at继承给新副本,或增加「保留原始时间戳」开关,避免污染目标账号的时间线排序。