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

发布时间:2026/9/12 21:13:12
Label Studio Enterprise 2.22.0 版本深度解析:暂停标注者、标注限额与 JWT 个人访问令牌 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_auth、label_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 Limit2.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_count、maximum_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 令牌的过期天数TTLlegacy_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 设置JWTSettingsAPIPOST 需要organizations_change权限GET/POST /api/tokens列出/创建当前用户的 API 令牌LSAPITokenView同一用户同时只允许存在一个有效令牌重复创建返回 409POST /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_urlLABEL_STUDIO_URL, api_keyLABEL_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-tokenaccess 令牌过期后请求会返回 401需用 PAT 重新换取这比 legacy 令牌多了一层防护。Legacy Token 不要求刷新直接以Authorization: Token token头使用curl -X method Label Studio URL/api/endpoint -H Authorization: Token token两种令牌均可手动吊销PAT 还支持组织级 TTL 过期与仅展示一次创建后不再明文显示安全性更高。新功能四标注与区域的深度链接Deep Link2.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-regions、toggle-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 GradingLLM 回复评分以 Content Moderation 模板为例仓库中实际存放了可直接使用的配置label_studio/annotation_templates/natural-language-processing/content-moderation/config.yml它对文本提供六分类多选Toxic、Severely Toxic、Obscene、Threat、Insult、Hate并附加补充评论的 TextArea 输入覆盖社交平台、论坛、游戏聊天、直播弹幕等 UGC 内容治理场景View Text nametext value$text/ Choices namecontent_moderation toNametext choicemultiple showInlinefalse Choice valueToxic backgroundred/ Choice valueSeverely Toxic backgroundbrown/ Choice valueObscene backgroundgreen/ Choice valueThreat backgroundblue/ Choice valueInsult backgroundorange/ Choice valueHate backgroundgrey/ /Choices View Header valuePlease provide additional comments/ TextArea namecomments toNametext requiredfalse/ /View /ViewLLM Response Grading 模板则位于 label_studio/annotation_templates/generative-ai/response-grading/config.yml可直接用于对模型生成结果的标注与评分。增强三杂项改进Members dashboardAnnotation 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 是一次质控 安全双主线的重要迭代团队管理通过暂停标注者 每人标注限额两级手段管理者可以把控个人产能与整体进度无需动辄调整项目成员API 安全JWT 个人访问令牌支持组织级 TTL 与一键禁用legacy 令牌可在组织层面逐步淘汰注意禁用后存量令牌立即失效升级前请先评估现有自动化脚本的认证方式参见 Access tokens 指南协作效率标注/区域深度链接与 workspace 专属 URL 降低了跨成员定位成本音频标注体验滚动导航 自动播放 循环播放三项能力让长音频转写、质检类任务更顺手可靠性批量标注、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),仅供参考