Sessions
搜索与会话归档
在侧边栏搜索会话、恢复草稿、查看归档列表
搜索与会话归档
WinCode 的搜索框位于侧边栏顶部,可以对所有项目下的会话标题做全文过滤。搜索结果会临时覆盖原有的分页视图,退出搜索后自动还原。

搜索会话
搜索栏结构:
[Search 图标] [输入框:"搜索会话..."]实现位于 Sidebar.tsx 的 handleSearch:
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)尚未实现独立的归档视图。源码中只有两个相关痕迹:
Session类型里预留了归档相关字段(在 Rust 后端session.rs模型里)- 搜索框能搜到所有会话,包括历史会话
后续版本计划在侧边栏新增"归档"分组,把过期会话折叠进去,减少视觉噪音。在此之前,推荐做法:
- 使用搜索框 — 关键词过滤快速找到历史会话
- 使用置顶 — 把重要会话固定在项目顶部,相当于"软归档"的反向操作
- 导出为 Markdown — 通过会话卡片的"导出为 Markdown"按钮,把对话保存到本地文件
分页展开/折叠
每个项目的会话列表是分页加载的,初次展开只拉取 5 条:
| 按钮 | 作用 |
|---|---|
| 展开显示 | 当 loadedCount < totalCount 时出现,点击再加载 10 条 |
| 折叠显示 | 当 loadedCount > 5 时出现,点击重新加载仅 5 条 |
| 加载中状态 | 项目行 chevron 变成 Loader2 旋转图标,禁用展开/折叠按钮 |
这些按钮只在项目展开且 totalCount > 0 时才显示,位于会话列表底部。