Pi Session Manager

层级标签

使用父子标签树、自动规则和拖拽排序来组织会话。

标签(也称"标记")让你可以在项目目录之外对会话进行分类。Pi Session Manager 支持带父子关系的层级标签系统。

标签树

标签以树形结构组织:

📁 状态
  ├── 🟢 进行中
  ├── 🟡 处理中
  └── 🔴 已归档
📁 优先级
  ├── 🔥 高
  ├── ⚡ 中
  └── 💤 低
自定义标签 A
自定义标签 B

创建标签

打开设置 → 标签来管理标签树。你可以:

  • 创建根级标签
  • 在任意父标签下添加子标签
  • 重命名或删除标签
  • 通过拖拽重新排序

分配标签

  • 右键点击会话 → 分配标签
  • 使用看板右键菜单中的标签选择器
  • 在看板列之间拖拽会话

标签选择器

TagPicker 组件渲染完整的标签树,带展开/折叠控件。支持:

  • 多选(为一个会话分配多个标签)
  • 选择器内搜索
  • 带缩进的视觉层级

标签过滤

LabelFilter 下拉菜单出现在侧边栏和看板头部。提供:

  • 分组区块(状态 vs. 自定义)
  • 后代过滤——选择父标签时自动包含其所有子标签
  • 过滤器内搜索

自动规则

基于模式配置自动标签分配:

  • 项目目录模式(如 ~/work/ 下的所有会话自动标记为"工作")
  • 会话名称模式

标签存储在 SQLite 数据库(~/.pi/agent/session-manager.db)中,而非 JSONL 会话文件中。这意味着标签仅存在于你的 Pi Session Manager 实例本地。

后端实现

标签系统在 SQLite 标签表中使用 parent_id 列。前端提供以下工具函数:

  • getDescendantIds(tagId) — 递归获取所有子标签
  • getRootTags() — 仅获取顶级标签
  • getChildTags(parentId) — 获取直接子标签

目录