Sessions
会话与项目管理
理解 WinCode 中"项目 → 会话"的核心模型,以及侧边栏的整体结构
会话与项目管理
WinCode 把一切对话都组织在"项目"之下:先打开一个本地文件夹作为项目,再在项目内创建会话。侧边栏是管理这一结构的主入口,也是切换会话、搜索、归档的枢纽。

核心概念
| 概念 | 说明 |
|---|---|
| Project(项目) | 一个本地目录在 WinCode 中的登记。记录路径、显示名、是否置顶 |
| Session(会话) | 与 Claude Code 进程的一次对话。归属某个 projectPath,也可以是"未分类" |
| Pagination Entry | 每个项目在 chatStore 中的分页状态:sessions、loadedCount、totalCount、isExpanded |
| Orphans(未分类) | 没有 projectPath 的历史会话,单独成组显示在侧边栏底部 |
数据关系:
Project (path, name, pinned)
└── Session (id, title, projectPath, pinned, archived)
└── Messages / Tool Calls / Drafts一个会话永远只属于一个项目;如果 projectPath 为空,则归到"未分类"。
侧边栏的四个区域
打开 WinCode 后,左侧侧边栏从上到下分为:
- 搜索栏 — 实时过滤会话,详见 搜索与归档
- 工作区快捷按钮 — 在线文档、TFS 工作项、项目文件、扩展中心(2x2 网格)
- 本地项目列表 — 每个项目是一个
ProjectGroup,可展开/折叠 - 远程项目区 — 预留位,通过 Gateway 配对后显示远程设备项目
关键源码
| 文件 | 作用 |
|---|---|
src/components/sidebar/Sidebar.tsx | 侧边栏主组件,编排搜索、项目列表、未分类会话 |
src/components/sidebar/ProjectGroup.tsx | 单个项目分组,含展开/折叠、新建会话、更多菜单 |
src/components/sidebar/SessionCard.tsx | 单张会话卡片,含悬停按钮与右键菜单 |
src/services/modules/session.ts | 会话 CRUD Tauri 命令封装 |
src/services/modules/project.ts | 项目打开/删除/置顶 Tauri 命令封装 |
src/stores/chatStore.ts | paginationByProject 分页状态、searchSessions 搜索状态 |
src/stores/appStore.ts | 侧边栏开关、宽度、Peek 模式、Explorer 面板 |