xiantong 文档

标签

使用彩色标签和结构化元数据组织会话

标签是可以应用到会话的可叠加彩色标签。与状态(互斥 —— 每个会话一个)不同,标签支持多选 —— 一个会话可以拥有零个或多个标签。它们支持通过嵌套树进行分层组织。

标签如何工作#

标签让你按项目、主题、优先级或其他任意维度对对话进行分类 —— 方便以后过滤并查找相关会话。

功能描述
多选一个会话可以同时拥有多个标签
分层标签可以嵌套形成分组(最多 5 层)
颜色编码每个标签显示为彩色圆点
可带值标签可以带有值(文本、数字或日期)
可自动应用正则规则可以根据消息内容自动应用标签

工作区级配置#

标签按工作区配置。每个工作区初始没有标签 —— 你可以创建所需的标签。配置存储于:

~/.xiantong/workspaces/{workspace-id}/labels/config.json

创建标签#

只需询问你的 Agent。 创建标签最简单的方式是描述你需要什么:

  • “创建一个红色的 Bug 标签”
  • “在 Engineering 组下添加 Alpha 和 Beta 项目标签”
  • “设置一个带数字值的 Priority 标签”

Agent 会自动处理配置。

你也可以通过编辑配置文件手动创建标签。

基本示例#

{
"version": 1,
"labels": [
{
"id": "bug",
"name": "Bug",
"color": "destructive"
},
{
"id": "feature",
"name": "Feature",
"color": "accent"
}
]
}

分层标签#

标签形成嵌套树。父/子关系通过 children 数组表达。数组顺序决定显示顺序。

{
"version": 1,
"labels": [
{
"id": "eng",
"name": "Engineering",
"color": "info",
"children": [
{
"id": "frontend",
"name": "Frontend",
"children": [
{ "id": "react", "name": "React", "color": { "light": "#3B82F6", "dark": "#60A5FA" } }
]
},
{ "id": "backend", "name": "Backend" }
]
},
{ "id": "bug", "name": "Bug", "color": "destructive" }
]
}

这会在侧边栏显示为一个树状结构:

Engineering
|- Frontend
| \- React
\- Backend
Bug

层级规则#

  • ID 是简单的 slug(小写字母数字 + 连字符)
  • ID 必须在整棵树中全局唯一
  • 最大嵌套深度:5 层
  • 数组顺序 = 显示顺序(无需 order 字段)
  • 按父级过滤会包含所有子孙会话

标签属性#

每个标签对象支持以下属性:

属性类型必需默认描述
idstring唯一 slug(小写字母数字 + 连字符)
namestring显示名称
colorEntityColorcurrentColor 40% 透明度标签圆点颜色(见下文)
valueType"string" | "number" | "date"(无 — 仅表示存在)值类型提示。不需要值的标签可省略。
childrenLabel[][]嵌套子标签
autoRulesAutoRule[][]自动应用的正则规则(参见 自动应用规则

颜色#

标签在 UI 中显示为彩色圆点。你可以使用系统颜色或自定义十六进制值。

系统颜色#

使用语义颜色名称表示常见含义:

颜色用途
"destructive"Bug、错误、严重问题
"accent"功能、增强
"success"已完成、通过
"info"信息性、元数据
"foreground/60"中性、其他

系统颜色也支持透明度:"accent/80""info/50" 等。

自定义颜色#

为精准控制,可使用明暗模式配色对:

{
"color": { "light": "#6366F1", "dark": "#818CF8" }
}

支持十六进制、OKLCH、RGB 和 HSL 格式。

对子标签使用自定义颜色对象可以获得精确的颜色控制。将系统颜色保留给顶层类别。

标签值#

标签可以选带一个和特定类型。这让标签成为结构化元数据 —— 例如,一个带值 3 的“priority”标签,或一个带日期的“due”标签。

存储格式#

会话将标签存储为字符串数组。布尔标签仅 ID,带值标签使用 :: 分隔符:

{
"labels": ["bug", "priority::3", "due::2026-01-30", "linear::CRA-456"]
}
  • 布尔标签"bug" —— 仅表示存在,无值
  • 带值标签"priority::3" —— ID 与值之间用 :: 分隔
  • 仅在第一次出现 :: 时拆分(值中可以包含 ::

值类型#

值在解析时根据原始字符串推断:

类型格式示例
number有限数字"priority::3""effort::0.5"
dateISO 日期(YYYY-MM-DD)"due::2026-01-30"
string其他任何内容"link::https://example.com"

推断顺序: 先检查 ISO 日期 -> 再检查数字 -> 最后字符串回退。配置中的 valueType 仅供 UI 提示 —— 解析器总是根据原始值推断类型。

侧边栏行为#

标签以多层可展开区域显示在左侧栏。点击标签会筛选会话列表,仅显示匹配的会话。点击父标签会包括所有子孙标签的会话。

验证#

每次修改配置后都要验证。

编辑配置文件后,请执行验证以捕捉错误:

config_validate({ target: "labels" })

验证器会检查:

  • 有效的 JSON 与递归结构
  • 整棵树中 ID 全局唯一
  • 有效的 slug 格式(小写字母数字 + 连字符)
  • 最大嵌套深度(5 层)

与状态的主要差异#

标签状态
基数多选(每个会话可有多个)互斥(每个会话一个)
默认无 — 初始为空自带 5 个默认
视觉彩色圆点图标 + 颜色
层级嵌套树(最多 5 层)扁平列表
可选的类型值无值
筛选多标签交叉筛选基于类别(打开/关闭)