标签
自动应用规则
使用正则表达式模式自动为会话添加标签
自动应用规则会自动扫描用户消息,并应用带有提取值的标签。只需在任意标签上配置正则表达式模式即可触发自动标记 —— 无需人工操作。例如,粘贴 Linear 问题 URL,会话就会自动添加对应的问题键标签。提到一个金额,预算标签就会出现。
配置#
在 labels/config.json 中的任意标签里添加 autoRules:
{
"id": "linear-issue",
"name": "Linear Issue",
"color": "purple",
"valueType": "string",
"autoRules": [
{
"pattern": "linear\\.app/[\\w-]+/issue/([A-Z]+-\\d+)",
"valueTemplate": "$1",
"description": "匹配 Linear 问题 URL"
},
{
"pattern": "\\b([A-Z]{2,5}-\\d+)\\b",
"valueTemplate": "$1",
"description": "匹配像 CRA-123 这样的裸问题键"
}
]
}
规则属性#
| 属性 | 类型 | 是否必需 | 说明 |
|---|---|---|---|
pattern | string | 是 | 带捕获组的正则表达式。使用 JavaScript 正则语法。 |
flags | string | 否 | 正则标志(默认:gi —— 全局、忽略大小写)。g 永远强制启用。 |
valueTemplate | string | 否 | 使用 $1、$2 等捕获组进行替换的模板。如果省略,则使用第一个捕获组。 |
description | string | 否 | 用于描述此规则匹配内容的人类可读说明。 |
正则表达式模式#
规则使用带捕获组的 JavaScript 正则表达式:
{
"pattern": "github\\.com/([\\w-]+/[\\w-]+)/pull/(\\d+)",
"valueTemplate": "$1#$2",
"description": "匹配 GitHub PR URL → repo#number"
}
- 捕获组:
$1、$2等将在valueTemplate中被匹配的组取代 - 全局匹配:
g标志始终强制启用,因此会在一条消息中查找所有出现 - 多次匹配:
"CRA-1 and CRA-2"会在同一标签上生成两个标签项
评估行为#
规则什么时候会被评估?
规则会在用户发送消息时运行(包括新消息和排队消息)。只会扫描用户消息 —— 助手的输出和工具结果不参与。
代码块剥离#
在评估前,会移除围栏代码块(```)和行内代码(`)中的内容,防止在代码示例中误匹配。
去重#
相同的标签+取值组合不会重复添加到会话中。如果 linear-issue::CRA-123 已存在,再次提到 CRA-123 不会产生任何操作。
匹配限制#
每条消息最多匹配 10 个结果,以防从粘贴的数据(例如包含数百个问题键的日志文件)中触发大量标签。
同一标签的多条规则#
每个标签上的所有规则都会被评估。会收集所有规则中的所有匹配项并应用。
错误处理#
无效的正则表达式会在运行时跳过并记录为警告。配置保存时也会进行验证。
值规范化#
提取的值会根据标签的 valueType 进行规范化:
| valueType | 原始捕获 | 规范化结果 |
|---|---|---|
string | CRA-123 | CRA-123(保持原样) |
number | $45,000 | 45000(去除符号与逗号) |
number | 1.5M | 1500000(扩展后缀) |
number | 50k | 50000(扩展后缀) |
date | 2026-01-30 | 2026-01-30(保持原样) |
完整示例#
一个自动标记 Linear 问题、截止日期、联系人和预算的工作区:
{
"version": 1,
"labels": [
{
"id": "linear-issue",
"name": "Linear Issue",
"color": "purple",
"valueType": "string",
"autoRules": [
{
"pattern": "linear\\.app/[\\w-]+/issue/([A-Z]+-\\d+)",
"valueTemplate": "$1",
"description": "Linear URL"
},
{
"pattern": "\\b([A-Z]{2,5}-\\d+)\\b",
"valueTemplate": "$1",
"description": "裸问题键"
}
]
},
{
"id": "deadline",
"name": "Deadline",
"color": "orange",
"valueType": "date",
"autoRules": [
{
"pattern": "(\\d{4}-\\d{2}-\\d{2})",
"valueTemplate": "$1",
"description": "ISO 日期(YYYY-MM-DD)"
}
]
},
{
"id": "contact",
"name": "Contact",
"color": "blue",
"valueType": "string",
"autoRules": [
{
"pattern": "([\\w.+-]+@[\\w.-]+\\.[a-zA-Z]{2,})",
"valueTemplate": "$1",
"description": "电子邮件地址"
}
]
},
{
"id": "budget",
"name": "Budget",
"color": "green",
"valueType": "number",
"autoRules": [
{
"pattern": "\\$([\\d,.]+[kKmMbB]?)",
"valueTemplate": "$1",
"description": "美元金额"
}
]
}
]
}
使用此配置:
- 粘贴
https://linear.app/team/issue/CRA-456会添加linear-issue::CRA-456 - 输入
deadline is 2026-03-15会添加deadline::2026-03-15 - 提到
reach out to alice@example.com会添加contact::alice@example.com - 写下
budget is $50k会添加budget::50000
验证#
创建或编辑自动规则后请务必验证。保存时会拒绝无效的正则表达式(包括存在 ReDoS 风险的模式)。
config_validate({ target: "labels" })