Skip to content

AI 分类安全与正确性审计

首次审计:2026-08;状态复核:2026-08-04。

本文既保留旧链路的风险依据,也记录当前修复状态。用户操作以AI 分类指南为准,后续计划以接手路线图为准。

当前结论

旧版“自由文本 JSON → 正则修补 → 自动创建分类 → 直接写库”已经被持久任务、正式注册表、严格校验和人工审核取代。元数据第一轮与疑难项 README 第二轮均已具备可用链路,适合作为用户控制的实验性辅助工具。

仍不能把 AI 当作无人监督的全量自动整理器,也不能承诺固定准确率。尚缺人工金标准、跨供应商回归、完整成本统计、持续未分类队列和更充分的 10k–20k 长期压力测试。

审计状态矩阵

原风险当前状态现有控制仍需工作
Key 长期存 localStorage已修复sessionStorage、一键清除补充独立计时 TTL;可选安全代理需另行设计
任意 base URL 窃取 Key已修复公网 HTTPS、主机展示、禁止私网/凭据/query/fragment维护 endpoint 规则测试
自由文本 JSON 自动修补已修复原生结构化/JSON 模式、运行时校验、拒绝修补提高供应商能力探测
模型自由创建分类已修复只允许任务注册表 category ID注册表变更后旧任务 UX
未知/重复/遗漏仓库已修复短 ID 白名单、唯一性和完整性校验丰富失败定位信息
结果直接写数据库已修复持久草稿、人工审核、确认后事务写入、撤销扩充审核快捷操作
停止不取消请求已修复AbortController、timeout、任务状态覆盖更多 GitHub 网络边界
批次写入竞态已修复await、数据变更队列、事务多标签页锁仍需加强
失败批次显示全部成功已修复success/partial/failed/cancelled、失败项重试更完整任务事件日志
全量提前抓 README已修复元数据优先,候选才增强,缓存与长度限制缓存过期和清理 UI
无暂停恢复已修复IndexedDB 任务、分段、暂停/恢复增量持续队列 D2
无质量评测未完成有人工正确/错误评分和试点评测能力200–500 金标准与 Macro-F1
无可靠成本核算部分完成创建任务前 token 粗估、usage 基础供应商价格版本与实耗报表

当前正确链路

text
用户确认正式分类注册表
→ 创建任务并锁定 registryVersion
→ 选择范围、分段与批次
→ 第一轮只发送仓库名称/描述/语言/topics 等元数据
→ 供应商结构化输出或 JSON object
→ Schema + 仓库短 ID + 分类 ID + 完整性校验
→ 持久化审核草稿(不改 repoTags)
→ 人工选择、修改分类、评价质量
→ 低置信度或人工标错项目按需读取 README
→ 对比增强结果并再次审核
→ 用户确认后通过事务写入 repoTags
→ 可撤销本次写入

暂停状态可以写入当前有效且已选择的草稿;写入后结束该任务,剩余仓库以后创建新任务处理。这避免已确认结果被迫等待数小时全量任务。

当前输出不变量

  • 每个返回 repository ID 必须属于当前请求批次;
  • 同一 repository ID 不得重复;
  • category ID 必须属于任务锁定的注册表;
  • 结果不得引用已合并、删除或未知分类;
  • 置信度与理由必须满足协议类型和长度要求;
  • 截断、尾随文本、无法解析或数量异常不能自动补齐;
  • 一批没有任何有效结果时自动暂停,不能继续产生费用并显示成功;
  • 校验失败项保留原因并可重试,不能静默跳过。

正式分类注册表

注册表是用户或组织维护的数据,不是 StarHub 内置的个人分类表。一个条目可包含:

json
{
  "categoryId": "geospatial.gis",
  "name": "地理信息系统",
  "nameEn": "Geographic Information Systems",
  "aliases": ["GIS"],
  "description": "空间数据管理、分析与地图应用",
  "examples": ["桌面 GIS", "空间数据库", "地图服务"],
  "exclusions": ["仅做通用图像分类的项目"]
}

模型只返回 categoryId。重命名不改变 ID;合并由治理事务迁移关系。任务记录注册表版本,防止分类体系变化后旧结果被错误解释。

隐私与提示注入

第一轮发送仓库公开元数据;README 第二轮会把第三方仓库内容发送给用户选择的 AI 供应商。README 是不可信数据,提示词必须明确它只是待分析内容,不能让其中指令改变输出协议、分类集合或安全规则。

界面应在运行前显示供应商主机、模型、仓库数、是否读取 README 和粗略 token。不要发送 GitHub token、AI Key、用户备份、分类外的私人备注或不必要的全文数据。

大规模任务要求

  • 17k 级任务必须分段,不能依赖单页持续打开;
  • 每段状态、仓库项、错误和审核结果持久化;
  • 请求支持 timeout、真正取消、限流退避和失败项重试;
  • 第一轮不读取全部 README;
  • README 缓存按 repository ID 管理并限制输入长度;
  • 批次不能与分类治理迁移并发写入;
  • 完成、部分成功、失败、暂停、取消必须清楚区分;
  • 提交动作只写选中且有效的结果。

尚未完成的质量工程

建立 200–500 仓库人工金标准,固定测试注册表、模型、提示协议和采样版本,至少报告:

text
Accuracy
Macro-F1
未分类率
低置信度率
无效输出率
人工修改率
主要混淆类别
README 增强净收益
输入/输出 Token
估计与实际费用
总耗时、失败与重试率

模型或提示词升级必须在相同集合回归。没有这套证据前,README 和界面不得宣传“95% 准确率”。

历史风险摘要

旧实现曾存在:正则提取 JSON、手工补括号、用分类名称而非 ID、自动创建标签、按类别分散写库、停止按钮只改布尔变量、未 await 批次回调、错误批次静默跳过、固定延迟、README 串行全量请求、过时模型硬编码和无审核回滚。这些问题是当前任务架构与测试存在的原因,不能为了减少代码再次引入。

下一步审计重点

  1. 修复备份导入/清空没有清理 AI 历史表;
  2. D2 持续未分类队列和新 Stars 增量范围;
  3. README 缓存清理、过期和配额可视化;
  4. 人工金标准与模型回归;
  5. 多标签页任务锁、崩溃恢复和 17k 长时间测试;
  6. 供应商模型参数与结构化输出能力定期复核。

基于 MIT 许可发布