WinCode
Sessions

搜索与会话归档

在侧边栏搜索会话、恢复草稿、查看归档列表

搜索与会话归档

WinCode 的搜索框位于侧边栏顶部,可以对所有项目下的会话标题做全文过滤。搜索结果会临时覆盖原有的分页视图,退出搜索后自动还原。

会话搜索框

搜索会话

搜索栏结构:

[Search 图标] [输入框:"搜索会话..."]

实现位于 Sidebar.tsxhandleSearch:

const handleSearch = async (keyword: string) => {
  setSearch(keyword);
  setSearchKeyword(keyword);
  if (!keyword.trim()) {
    setSearchSessions(null);   // 清空,回到分页视图
    return;
  }
  const results = await sessionSearch(keyword);
  setSearchSessions(results);
};
  • 后端 session_search 命令对会话标题做模糊匹配
  • 搜索结果会按 projectPath 重新分组,只显示命中会话所在的项目,空项目自动隐藏
  • 没有 projectPath 的命中会话归到"未分类"分组下
  • 清空搜索框立即回到原分页视图,不会丢失展开/折叠状态

草稿恢复

Claude Code CLI 本身维护每个会话的输入框草稿,WinCode 在前端 chatStore 中按 sessionId 缓存未发送的消息。当切换回某个会话时:

  • 聊天输入框从 chatStore.drafts[sessionId] 读取内容并回填
  • 草稿与消息不同,不会写入 SQLite,仅存在内存和本地 localStorage
  • 删除会话时,对应草稿也会被清理

归档列表

WinCode 当前版本(参见 Sidebar.tsx)尚未实现独立的归档视图。源码中只有两个相关痕迹:

  1. Session 类型里预留了归档相关字段(在 Rust 后端 session.rs 模型里)
  2. 搜索框能搜到所有会话,包括历史会话

后续版本计划在侧边栏新增"归档"分组,把过期会话折叠进去,减少视觉噪音。在此之前,推荐做法:

  • 使用搜索框 — 关键词过滤快速找到历史会话
  • 使用置顶 — 把重要会话固定在项目顶部,相当于"软归档"的反向操作
  • 导出为 Markdown — 通过会话卡片的"导出为 Markdown"按钮,把对话保存到本地文件

分页展开/折叠

每个项目的会话列表是分页加载的,初次展开只拉取 5 条:

按钮作用
展开显示loadedCount < totalCount 时出现,点击再加载 10 条
折叠显示loadedCount > 5 时出现,点击重新加载仅 5 条
加载中状态项目行 chevron 变成 Loader2 旋转图标,禁用展开/折叠按钮

这些按钮只在项目展开且 totalCount > 0 时才显示,位于会话列表底部。

相关文档

On this page