Skip to content

AI 智能分类

AI 分类用于生成可审核草稿,不是自动接管分类。模型不会创建分类名称,结果也不会在生成后直接写入 repoTags

1. 使用前提

开始任务前需要:

  1. 已登录并完成仓库同步;
  2. 至少存在一个实际分类;
  3. 推荐先建立正式分类注册表;
  4. 在设置页配置 AI 服务商和会话级 API Key;
  5. 确认服务商账户配额和数据处理政策。

正式注册表启用后,AI 只看到正式分类。普通分类仍保留,但不进入模型候选集合。

实验性功能

置信度是模型自评,不等于真实准确率。提交前应审核低置信度项,并抽查高置信度项。

2. 支持的服务商

服务商默认模型 ID结构化输出策略
OpenAIgpt-4o-miniJSON Schema strict
Anthropicclaude-sonnet-4-6原生 JSON Schema
DeepSeekdeepseek-chatOpenAI 兼容 JSON;特定 v4 模型禁用 thinking
通义千问qwen-plusOpenAI 兼容 JSON
智谱 AIglm-4-flashOpenAI 兼容 JSON

模型 ID 和供应商能力可能变化;以设置页实际连接测试和供应商账单为准。不要把 README 中的价格表当作长期承诺。

3. 创建任务

点击左侧分类标题附近的魔法棒按钮。已有未结束任务时会直接打开该任务,避免重复创建。

可处理仓库

当前任务入口只选择没有任何分类关系的仓库。已经拥有普通或正式分类的仓库不会进入新任务,AI 也不会清空已有分类。

试验样本

可以选择:

  • 100 个;
  • 200 个(默认推荐);
  • 500 个;
  • 全部。

100/200/500 支持随机抽样或当前顺序。随机任务保存 seed,便于解释和复现样本。

全部模式

全部模式必须选择分段大小:500、1000 或 2000。每个分段独立生成、审核和提交,前一段提交后才开始下一段。

可选择是否自动对低置信度结果执行 README 增强。即使自动增强,增强结果也不会自动覆盖草稿或写入数据库。

用量估算

创建前显示:

  • 可用仓库数;
  • 本次选择数;
  • 预计批次数;
  • 估算输入与输出 Token。

估算用于比较任务规模,不等于最终账单。

截图待补:任务创建 展示 200 随机样本与“全部 + 500 分段”两种状态,以及 Token 估算变化。

4. 第一阶段:元数据初筛

默认只发送:

  • 仓库 ID 的任务内短标识;
  • 名称和完整名称;
  • 描述;
  • 主语言;
  • GitHub Topics;
  • 当前任务允许的分类注册表。

不会在第一阶段批量发送 README。默认每批 50 个仓库,设置范围为 1–100。

模型必须返回:

json
{
  "assignments": [
    {
      "repository_id": 12,
      "category_id": "c7",
      "confidence": 0.88,
      "reason": "Repository metadata indicates a browser mapping library."
    }
  ]
}

这里的 repository_idcategory_id 是当前请求内部的短 ID。通过校验后才映射回 GitHub 仓库 ID 和稳定分类 ID,避免长 ID 导致输出错误或 token 浪费。

5. 输出校验

每批必须检查:

  • JSON 是否完整且符合 Schema;
  • 返回仓库是否属于当前批次;
  • 是否遗漏仓库;
  • 是否重复返回仓库;
  • 是否出现未知仓库;
  • 分类短 ID 是否存在;
  • 置信度是否在 0–1;
  • 分类理由是否为有效文本。

StarHub 不再使用正则截取、补括号或自动修复截断 JSON。“可解析”不代表“完整正确”。失败批次进入失败清单,可单独重试。

任务状态区分:

  • running:正在处理;
  • paused:已停止后续请求,可恢复;
  • partial:当前段包含失败项;
  • segment_ready:当前段可以审核;
  • completed:非分段生成完成;
  • committed:最终结果已写入;
  • cancelled:任务关闭,不可恢复。

6. 人工审核

审核表包含仓库、分类、置信度和理由。规则:

  • 置信度低于 65% 默认不选中;
  • 高置信度默认选中,但仍建议抽查;
  • 可以逐项修改分类;
  • 可以把结果标记为“正确”或“错误”;
  • 人工评价用于计算真实准确率和错误分布;
  • 未选中结果不会写入正式分类。

质量面板报告已评价、正确、错误、未评价、低置信度数量和主要修改方向。当前评价保存在任务项中,不是独立云端评测集。

7. README 疑难项增强

候选项包括:

  • 置信度低于 65%;
  • 被人工标记为错误的结果,包括高置信度错误。

处理流程:

  1. 从 GitHub 获取 README;
  2. 移除图片、徽章、HTML 和大代码块等噪声;
  3. 截取最多 12,000 个字符;
  4. 以仓库 pushed_at 作为缓存失效依据;
  5. 每批最多处理 5 个疑难项;
  6. 保存 baseline 与 enhanced 两组分类、置信度和理由;
  7. 用户选择是否采用增强结果。

README 和仓库元数据按不可信内容处理。提示词要求模型忽略其中的命令、角色声明和提示注入。

增强摘要会统计修正、退化和分类变化,帮助判断 README 是否真正改善结果。

截图待补:增强前后对比 展示 baseline、enhanced、人工评价、采用按钮以及修正/退化统计。

8. 暂停、恢复、取消和重试

暂停

暂停会调用 AbortController 中止正在进行的 AI 或 README 请求,并保留任务和草稿。刷新页面后可重新打开最近任务。

恢复

恢复从仍为 pending 的项目继续,不重复处理成功项。

重试失败项

只把当前任务或当前分段的失败项重新置为待处理,不重新请求成功仓库。

取消

取消中止后续请求并把任务标为不可恢复。已有草稿保留到用户删除任务,但不能继续执行。

暂停时写入当前结果

暂停后可以“确认写入当前 N 项并结束任务”。该操作:

  • 只写入当前已选择结果;
  • 不写入失败、未处理和未选择项;
  • 写入后结束本次任务;
  • 剩余仓库以后通过新任务继续;
  • 不清空已有分类。

9. 确认写入与撤销

提交前会检查:

  • 当前分类注册表版本仍与任务一致;
  • 任务状态允许提交;
  • 仓库和分类 ID 仍有效;
  • 结果来自当前审核段。

确认后,选中关系通过单一 IndexedDB 事务写入。分段任务提交当前段后,清理该段草稿并进入下一段。

左侧“撤销上次 AI 分类”只撤销最近一次提交新增的关系,不回退分类注册表或其他人工编辑。页面刷新后该临时 receipt 是否仍可用取决于当前会话状态,因此重要写入前仍建议备份。

10. API Key 与自定义地址

  • Key 只保存到 sessionStorage 或当前内存;
  • 非敏感偏好保存到 localStorage
  • 可一键清除 Key;
  • 测试连接不应在失败时保存错误配置;
  • 自定义地址必须是公开 HTTPS;
  • 禁止 URL 用户名/密码、query、hash、localhost、私有 IPv4 和本地 IPv6;
  • 发送 Key 前显示目标主机并要求确认。

浏览器会把分类输入直接发送给所选服务商。对私人仓库使用 AI 前,应确认服务商的数据政策。

11. 准确率与成本建议

  1. 从 200 个随机样本开始;
  2. 审核所有低置信度项;
  3. 从高置信度项中随机抽查;
  4. 先修订分类边界,再扩大规模;
  5. README 只处理疑难项;
  6. 分段提交,不要求页面连续运行数小时;
  7. 以服务商实际账单记录 Token 和成本。

推荐评测指标:Accuracy、Macro-F1、未分类率、低置信度比例、分类混淆、总 Token、总费用和总耗时。

12. 常见错误

错误解释处理
JSON 截断输出不完整减小批次并重试失败项
未知分类 ID模型未遵守当前注册表任务自动暂停,检查模型和注册表版本
注册表已变化任务创建后分类定义改变结束旧任务,基于新注册表创建任务
429服务商限流等待、减小并发或稍后重试
README 失败GitHub 限流、网络或仓库无 README保留元数据结果并人工判断
无法确认写入任务仍在运行或没有有效选中项暂停任务并检查选择状态

当前限制

  • 任务历史没有完整管理页;
  • 实际 Token 与费用尚未统一记录;
  • 没有跨设备任务恢复;
  • AI Key 仍由浏览器持有;
  • 没有 200–500 项的内置标准人工标注集;
  • D2 正式未分类队列与同步后持续分类仍待实现。

下一步

基于 MIT 许可发布