Label Studio Enterprise 2.22.0 版本深度解析:暂停标注者、标注限额与 JWT 个人访问令牌
2026/9/12 21:13:11 网站建设 项目流程

Label Studio Enterprise 2.22.0 版本深度解析:暂停标注者、标注限额与 JWT 个人访问令牌

【免费下载链接】label-studioLabel Studio is a multi-type data labeling and annotation tool with standardized output format项目地址: https://gitcode.com/GitHub_Trending/la/label-studio

本篇技术指南以 Label Studio Enterprise 2.22.0 官方发布说明为主体,结合当前开源仓库中的label_studio/jwt_authlabel_studio/organizations、前端编辑器web/libs/editor及标注模板等源码实现,系统梳理该版本引入的标注者暂停机制、标注数量限额、基于 JWT 标准的新一代个人访问令牌、标注与区域深度链接、音频标注可用性改进等核心能力。读者读完后,既能掌握每个新特性的操作入口与配置方法,也能从源码层理解其认证与权限实现原理,为实际部署、升级与二次开发提供依据。

版本概览

Label Studio Enterprise 2.22.0 于2025 年 3 月 25 日发布,对应Helm Chart 版本 1.9.6。该版本的核心关键词是"标注质量管理与访问控制":一方面为团队管理者提供了暂停标注者、设置每人标注数量上限等质控手段;另一方面把 API 访问令牌体系升级为符合 JWT 标准的个人访问令牌(Personal Access Token),并对音频类标注任务做了大量体验改进。

官方对本版本的概括如下:

Pause annotators, set annotation limits, new API tokens, deep linking for annotation and regions, usability improvements for audio

新功能一:暂停标注者(Pause an annotator)

当标注质量出现波动或需要临时调整人力时,2.22.0 提供了直接暂停单个标注者的操作入口,且无需将其移出项目或组织。

  • 操作入口:Members dashboard(成员仪表盘)上即可对标注者执行暂停操作;
  • API 支持:暂停动作同时暴露为 API,便于接入自动化质量管理流程。

从当前仓库的 feature flag 配置可以看出,该能力经历了精细化的权限拆分迭代,见 label_studio/feature_flags.json 中的fflag_feat_utc_886_granular_pause_permissions_for_annotators条目:即"针对标注者的精细化暂停权限"——这意味着暂停动作的权限粒度、触发后的队列与进度状态在后续版本中被持续打磨。可以推断,暂停标注者后,该用户将不再被分配到新的标注任务,其进行中的工作流状态(FSM)也会相应冻结,直到被恢复。

更多细节可参考仓库文档 Pause an annotator。

新功能二:标注限额(Annotation Limit)

2.22.0 在项目设置中新增了Quality > Annotation Limit配置区,允许团队为每个标注者设定可标注任务数量的上限:

  • 可配置字段用于限制每个用户能够标注的任务数量
  • 一旦某个用户达到该上限,其标注进度会被自动暂停(progress will be paused)。

该能力在 feature flag 中对应fflag_feat_all_leap_1821_annotation_limit_short(见 label_studio/feature_flags.json)。从项目模型源码看,Label Studio 的任务分配与标注数量控制始终围绕annotations_countmaximum_annotations(最大标注数/重叠数)与overlap_cohort_percentage等字段展开,见 label_studio/projects/models.py 中对任务"已达最大标注数"的判定逻辑。可以理解为:Annotation Limit 是在项目级"每任务重叠标注数"之外,新增的"每人累计标注量"维度的限流手段,二者共同构成质量与产能的约束体系。

更多细节可参考仓库文档 Annotation Limit。

新功能三:JWT 标准的新一代个人访问令牌

这是本版本最具技术深度的变化:Label Studio Enterprise 2.22.0 引入了一种基于 JWT 标准的新型 API 访问令牌(Personal Access Token),用于替代传统的 Legacy Token。

启用与关闭

  • 令牌类型的启用/禁用入口在Organization 页面
  • 启用后,用户即可在自己的Account & Settings页面生成个人访问令牌;
  • Legacy Token 默认仍然可用,除非管理员在组织层面显式禁用。

源码级实现原理

该能力在仓库中由独立的jwt_auth应用承载,是理解本特性最好的源码入口:

1. 组织级令牌开关(JWTSettings)

见 label_studio/jwt_auth/models.py,每个组织通过一对一关系持有自己的 JWT 设置:

字段类型默认值含义
api_tokens_enabledBooleanFieldTrue是否启用 JWT API 令牌认证
api_token_ttl_daysIntegerField200 * 365(约 200 年)JWT API 令牌的过期天数(TTL)
legacy_api_tokens_enabledBooleanFieldFalse是否启用 legacy API 令牌认证

组织创建时,create_organization会根据环境变量LABEL_STUDIO_ENABLE_LEGACY_API_TOKEN决定新组织默认是否开放 legacy 令牌,见 label_studio/organizations/functions.py;该环境变量的默认值为False,见 label_studio/core/settings/base.py。

2. 令牌截断存储(LSTokenBackend)

为了不在数据库中暴露完整签名,LSTokenBackend在编码时会把 JWT 拆为header.payload.signature三段,仅保留header.payload两段落库,前端拿到的始终是不含签名的截断令牌,见 label_studio/jwt_auth/models.py。验证时TruncatedLSAPIToken会补上 43 位占位签名以匹配标准 JWT 结构,见 label_studio/jwt_auth/models.py。

3. Legacy 令牌的淘汰机制(TokenAuthenticationPhaseout)

在 label_studio/jwt_auth/auth.py 中,TokenAuthenticationPhaseout继承了 DRF 的TokenAuthentication:当 legacy 令牌发起认证而组织已关闭legacy_api_tokens_enabled时,直接抛出AuthenticationFailed,提示"legacy token 认证已对该组织禁用"。这意味着禁用令牌类型后,存量令牌也会立即失效,与发布说明中的描述一致。

4. 令牌生命周期 API

令牌相关的 API 集中在 label_studio/jwt_auth/views.py,包括:

  • GET/POST /api/jwt/settings:读取/更新当前组织的 JWT 设置(JWTSettingsAPI,POST 需要organizations_change权限);
  • GET/POST /api/tokens:列出/创建当前用户的 API 令牌(LSAPITokenView,同一用户同时只允许存在一个有效令牌,重复创建返回 409);
  • POST /api/token/refresh:用 refresh 令牌换取短时 access 令牌;
  • POST /api/tokens/blacklist:吊销(拉黑)refresh 令牌;
  • POST /api/tokens/rotate:轮换 refresh 令牌(先拉黑当前令牌再签发新令牌)。

使用方式:SDK 与 HTTP API

个人访问令牌在 Python SDK 中的用法与 legacy 令牌一致,可直接写在脚本中或通过环境变量LABEL_STUDIO_API_KEY传入:

LABEL_STUDIO_URL = 'http://localhost:8080' LABEL_STUDIO_API_KEY = 'your-token' # 可以是 PAT 或 legacy token from label_studio_sdk import LabelStudio client = LabelStudio(base_url=LABEL_STUDIO_URL, api_key=LABEL_STUDIO_API_KEY)

但在 HTTP API 场景下二者有本质区别(详见 Access tokens 指南):

  • Personal Access Token 是 JWT refresh 令牌,不能直接用于认证,必须先 POST/api/token/refresh换取短时 access 令牌(约 5 分钟有效),再以Authorization: Bearer <token>头发送请求:
curl -X POST <your-label-studio-url>/api/token/refresh \ -H "Content-Type: application/json" \ -d '{"refresh": "your-personal-access-token"}'
{ "access": "your-new-access-token" }
curl -X <method> <Label Studio URL>/api/<endpoint> -H 'Authorization: Bearer your-new-access-token'

access 令牌过期后请求会返回 401,需用 PAT 重新换取,这比 legacy 令牌多了一层防护。

  • Legacy Token 不要求刷新,直接以Authorization: Token <token>头使用:
curl -X <method> <Label Studio URL>/api/<endpoint> -H 'Authorization: Token <token>'

两种令牌均可手动吊销;PAT 还支持组织级 TTL 过期与"仅展示一次"(创建后不再明文显示),安全性更高。

新功能四:标注与区域的深度链接(Deep Link)

2.22.0 支持通过 URL 直接定位到:

  • 某条具体标注(annotation)
  • 某条标注内的具体区域(region)

操作入口在标注界面的标注与区域各自的**溢出菜单(overflow menu)**中:选择复制链接后,团队成员把链接分享给他人,打开即可直接跳转到对应标注/区域,无需在任务列表中层层查找。该能力与 2.22.0 同时改进的"workspace 专属 URL"配合使用,可显著提升评审、协作与问题复现的效率。

增强一:音频标注任务可用性改进

滚动条导航(Scrollbar navigation)

现在可以在音频文件内前后滚动浏览波形,触控板或鼠标的滚动操作即可激活,不再依赖精确的播放头拖拽,大幅降低长音频定位成本。

两个新音频设置

在音频标注设置中新增两个开关:

  • Auto-Play New Regions:选中一个新区域后自动播放该区域;
  • Loop Regions:播放某个区域时循环播放该区域音频。

从源码看,这两项设置已落地到编辑器的时间轴组件中:前端以loopRegion设置项驱动循环开关,并通过changeSetting回调实时写入组件状态,见 web/libs/editor/src/components/Timeline/Controls/ConfigControl.tsx 与对应类型定义 web/libs/editor/src/components/Timeline/Types.ts;配套测试覆盖了toggle-loop-regionstoggle-auto-play-new-regions两个开关的交互行为,见 web/libs/editor/src/components/Timeline/Controls/tests/ConfigControl.test.tsx。对语音转写、音频质检等高频"反复试听某段"的场景,Loop Regions 能显著减少重复拖动播放头的操作。

增强二:模板库新增三个模板

模板画廊新增三个开箱即用的标注模板:

  • Natural Language Processing > Content Moderation(内容审核)
  • Computer Vision > Medical Imaging Classification with Bounding Boxes(医学影像分类 + 边界框)
  • Generative AI > LLM Response Grading(LLM 回复评分)

以 Content Moderation 模板为例,仓库中实际存放了可直接使用的配置(label_studio/annotation_templates/natural-language-processing/content-moderation/config.yml):它对文本提供六分类多选(Toxic、Severely Toxic、Obscene、Threat、Insult、Hate),并附加"补充评论"的 TextArea 输入,覆盖社交平台、论坛、游戏聊天、直播弹幕等 UGC 内容治理场景:

<View> <Text name="text" value="$text"/> <Choices name="content_moderation" toName="text" choice="multiple" showInline="false"> <Choice value="Toxic" background="red"/> <Choice value="Severely Toxic" background="brown"/> <Choice value="Obscene" background="green"/> <Choice value="Threat" background="blue"/> <Choice value="Insult" background="orange"/> <Choice value="Hate" background="grey"/> </Choices> <View> <Header value="Please provide additional comments"/> <TextArea name="comments" toName="text" required="false"/> </View> </View>

LLM Response Grading 模板则位于 label_studio/annotation_templates/generative-ai/response-grading/config.yml,可直接用于对模型生成结果的标注与评分。

增强三:杂项改进

  • Members dashboard:Annotation Summary 表格中新增了用户表现汇总(performance summary)的跳转链接,管理者可一键查看成员标注质量数据;
  • URL 格式更新:Label Studio 的 URL 格式支持直接链接到特定 workspace,配合深度链接便于团队协作;
  • 错误页面升级:4xx/5xx 错误页重新设计,附带实用的帮助链接,提升排障效率;
  • S3 桶名校验:新增对 S3 bucket 名称格式的校验,避免非法命名导致的存储异常;
  • 性能优化:通知与缓存相关逻辑得到性能改进,降低高频场景下的开销;
  • 错误处理改进:整体错误处理路径更健壮;
  • UI 一致性修复:修正跨模块样式,保证 Label Studio 界面风格统一。

安全改进

2.22.0 针对组织成员可见性(org membership visibility)做了安全加固,避免组织成员信息被越权查看。结合本版本新增的 JWT 令牌体系与"禁用即失效"的 legacy 令牌淘汰机制,整体访问控制面(认证令牌 + 成员可见性 + 暂停/限额权限)更加完整。

Bug 修复清单

本版本共修复 18 项问题,按模块归纳如下:

标注画布与数据渲染

  • 修复缩放时图片被拉伸失真的问题;
  • 修复用户打开指向不存在任务 ID 的 URL 时,Quick View 显示空白的问题;
  • 修复父级选项被隐藏时,深层嵌套的 Choices 仍可见的问题;
  • 修复用户可以在图片边界之外创建边界框(bounding box)的问题;
  • 修复暂停播放时视频帧渲染错误的问题。

Data Manager 与批量标注

  • 修复 Data Manager 间歇性加载报错的问题;
  • 修复批量标注操作时筛选条件(filters)未被遵循的问题;
  • 修复批量标注偶发 500 错误的问题;
  • 修复折叠过批量标注抽屉后无法再调整其大小的问题;
  • 修复批量标注未遵循Allow empty annotations设置的问题。

通知与工作区

  • 修复通知抽屉无限加载的问题;
  • 修复加载工作区列表时偶发抛错的问题。

权限与认证

  • 修复 Reviewer 角色的用户即使不是项目成员,也可通过 API 提交评审的问题;
  • 修复切换工作区并获取错误分页项目时触发 API 报错的问题;
  • 修复通过 SCIM 供给且未分配组的用户角色被重置的问题。

外观与品牌

  • 修复白标(white labeled)应用中注册链接样式异常的问题。

升级建议与要点回顾

综合来看,Label Studio Enterprise 2.22.0 是一次"质控 + 安全"双主线的重要迭代:

  1. 团队管理:通过"暂停标注者 + 每人标注限额"两级手段,管理者可以把控个人产能与整体进度,无需动辄调整项目成员;
  2. API 安全:JWT 个人访问令牌支持组织级 TTL 与一键禁用,legacy 令牌可在组织层面逐步淘汰(注意:禁用后存量令牌立即失效,升级前请先评估现有自动化脚本的认证方式,参见 Access tokens 指南);
  3. 协作效率:标注/区域深度链接与 workspace 专属 URL 降低了跨成员定位成本;
  4. 音频标注体验:滚动导航 + 自动播放 + 循环播放三项能力让长音频转写、质检类任务更顺手;
  5. 可靠性:批量标注、Data Manager、通知等高频路径的大量缺陷修复,配合通知/缓存性能优化,提升了日常使用的稳定性。

如需深入源码研究,推荐按以下路径继续阅读:JWT 令牌体系见 label_studio/jwt_auth;组织级令牌开关见 label_studio/organizations/functions.py 与 label_studio/jwt_auth/models.py;音频设置前端实现见 web/libs/editor/src/components/Timeline;新模板配置见 label_studio/annotation_templates。

【免费下载链接】label-studioLabel Studio is a multi-type data labeling and annotation tool with standardized output format项目地址: https://gitcode.com/GitHub_Trending/la/label-studio

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询