labelhub-platform
Health Pass
- License — License: Apache-2.0
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Community trust — 48 GitHub stars
Code Pass
- Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Pass
- Permissions — No dangerous permissions requested
No AI report is available for this listing yet.
面向 LLM 训练数据生产的可信工作台:AI 提供证据、人类裁决,append-only 账本、可复现导出、评测关卡与 MCP Server。
LabelHub
面向训练数据生产的可信工作台。AI 负责提供证据,人类负责最终裁决,每一份交付都可以复现、可以验证。
LabelHub 覆盖从数据导入、标注、AI 预审、多级人工审核,到导出 SFT/偏好训练格式的完整链路。和普通标注工具不同的是,它把每一个关键事实都以 append-only 的方式记录下来,包括 Schema 版本、提交、审核结论、AI 调用和导出快照。所以它能回答一个大多数工具答不上来的问题:
你凭什么说这批训练数据是对的?
项目正在演进为一个标注垂类 Agent Harness:让 LLM agent 在规则、校验器和人类问责的约束下生产训练数据。设计见 ADR-017,进度见路线图。
它如何工作
数据集导入 ──→ Schema 设计(版本不可变) ──→ 标注员领取并作答(绑定领取时的 Schema 版本)
│
▼
AI 预审(强制 function calling,按三区阈值分流)
├─ 高置信度 → 建议通过 ┐
├─ 不确定 → 转人工 ├──→ 人类审核与仲裁(最终裁决)
└─ 低分 → 建议打回 ┘ │
▼
Quality Ledger(append-only,结论实时派生)──→ 可信导出(可复现,按哈希校验)
- 请求边界:所有业务写入只经过
services/api。业务状态和 outbox 事件在同一个事务里写入(ADR-008)。 - 异步边界:
services/agent轮询 outbox,执行 AI 预审和导出作业,具备幂等、重试、死信,并会记录last_error。 - 契约边界:
packages/contracts/openapi/labelhub.yaml是唯一的 API 源头,前端类型全部由它生成(ADR-012)。
核心设计取舍
| 取舍 | 理由 | 记录 |
|---|---|---|
| AI 是证据,不是裁决 | AI 结论连同 prompt 版本、模型、input hash、成本和延迟一起作为证据写入账本,可以检视、导出或排除,但不能改写最终结论。人类审核者是训练数据准入的问责闸门;唯一的例外是 Owner 显式开启的自动通过,此时由该 Owner 问责,并且受到三重约束:影子数据门槛、盲审抽检、熔断。策略准入的数据默认不导出。 | ADR-005 / 020 |
| 事实只追加,不修改 | 已发布的 Schema 版本不可变,历史提交永远能按原样渲染。Verdict 从最新的账本条目实时派生,用读时计算换取写路径的简单,以及事实不可篡改。 | ADR-002 / 003 / 009 |
| 导出可复现 | 规范化序列化后,同一份数据导出两次得到逐字节相同的文件和 manifest 哈希,并且有测试守护。 | ADR-004 |
| 结构化输出是硬约束 | AI 预审必须通过 function calling 输出,不解析纯文本。校验失败时,走确定性的重试或转人工路径。 | ADR-006 |
| 拒绝静默回退 | Provider 配置出错时,失败会在重试和死信链路上显式暴露,不会悄悄退回到环境变量的配置。 | ADR-011 |
| 模块化单体 + 独立 worker | 13 个业务模块之间靠包边界隔离,单库单进程部署。只有消费异步事件、可能独立失败的 AI worker 被拆成单独进程。 | ADR-001 |
快速开始
依赖:JDK 17、Node 20+、pnpm 9、Docker。
make dev-up # MySQL 8 + MinIO(自动创建 bucket)
make dev-api # 启动后端,默认运行在 :8080/api,自动准备 labelhub_test 测试库
pnpm install
pnpm --filter @labelhub/web dev # 启动前端 http://127.0.0.1:5173(启动前从 OpenAPI 生成类型)
本地演示账号的密码都是 demo1234:owner_demo、labeler_demo、reviewer_demo、senior_reviewer_demo。环境变量样例见 .env.example,详细说明见 开发环境指南。
验证(CI 每次 push 都会执行同样的检查):
make verify # 后端单元测试 + Testcontainers 集成测试
pnpm --filter @labelhub/web lint && pnpm --filter @labelhub/web typecheck && pnpm --filter @labelhub/web test
角色
| 角色 | 职责 |
|---|---|
| Owner | 创建任务、导入数据集(配额由题目数派生)、设计并发布 Schema、触发 AI 预审、创建可信导出 |
| Labeler | 先到先得领取(乐观锁守护配额,ADR-007),按领取时绑定的 Schema 版本作答,自动保存草稿,批量领取和提交 |
| Reviewer | 初审 approve/reject,疑难提交可以标记升级 |
| Senior Reviewer | 在独立的仲裁工作台处理 AI 升级、疑难标记和抽检,不做二次全量审核 |
| Platform Admin | 配置 LLM Provider(密钥加密存库)、查看成本/效率/人力仪表盘、管理用户与角色、查看审计日志 |
仓库结构
apps/web/ React 18 + TypeScript + Vite,Semi Design,Formily 渲染器(Feature-Sliced Design,ADR-013)
services/api/ Spring Boot 模块化单体:业务权威、契约实现、Flyway 迁移
services/agent/ AI worker:轮询 outbox,执行 AI 预审和导出
packages/contracts/ OpenAPI 契约(唯一源头)与校验语料
evals/ 离线评测(Python):黄金集、录制/回放、成绩单、ChatGPT 登录(ADR-017/018)
infra/ 本地 / 演示 / 生产三套 compose,nginx,MinIO 初始化
scripts/ 开发启动、部署、CI 辅助脚本
docs/ 设计基线、ADR、指南、设计系统、过程记录(导航见 docs/README.md)
文档
从 docs/README.md 开始。常用入口:
- 设计基线:业务事实模型的权威来源
- 架构决策记录:ADR-001 ~ 022
- 工程规范 和 AI 协作宪章,AI 编码 agent 的入口是 AGENTS.md
- 批次审计台账:append-only,记录了每个合入批次的交付和验证过程
路线图
| 阶段 | 内容 | 状态 |
|---|---|---|
| W0 | CI 与工程基线:集成测试真实运行,跳过即判失败 | ✅ 完成 |
| W1 | 离线评测框架:基于 HelpSteer2 的黄金集、录制/回放、单次调用的基线成绩(evals/,支持 ChatGPT 登录跑评测,ADR-018;基线报告) |
✅ 完成 |
| W2 | Agent 循环:校验 AI 审核输出并自我纠错(ADR-019;对比报告) | ✅ 完成 |
| W3 | 策略层:升级规则、阈值校准、受控的自动通过(ADR-020;校准报告) | ✅ 完成 |
| W4 | 判例记忆:检索人类裁决作为参考,人机分歧回流 | ❌ 评测关卡未通过,未合并:BM25 判例让留出集坏样本数从 8.48 升到 10.00(见 Iceberg86-gb/labelhub-platform#12) |
| W5 | MCP Server:外部 agent 可以在同一套治理与审计规则下接入(ADR-022,接入指南) | ✅ 完成,关卡测试通过 |
在线演示
演示入口是 http://120.26.182.61:8443/。备案和 HTTPS 切换还没完成,所以访问时必须带上 http:// 和 :8443。公网演示账号由项目 Owner 私下发放。部署方式见 演示环境说明。
许可证
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found