AI 智能分类
AI 分类用于生成可审核草稿,不是自动接管分类。模型不会创建分类名称,结果也不会在生成后直接写入 repoTags。
1. 使用前提
开始任务前需要:
- 已登录并完成仓库同步;
- 至少存在一个实际分类;
- 推荐先建立正式分类注册表;
- 在设置页配置 AI 服务商和会话级 API Key;
- 确认服务商账户配额和数据处理政策。
正式注册表启用后,AI 只看到正式分类。普通分类仍保留,但不进入模型候选集合。
实验性功能
置信度是模型自评,不等于真实准确率。提交前应审核低置信度项,并抽查高置信度项。
2. 支持的服务商
| 服务商 | 默认模型 ID | 结构化输出策略 |
|---|---|---|
| OpenAI | gpt-4o-mini | JSON Schema strict |
| Anthropic | claude-sonnet-4-6 | 原生 JSON Schema |
| DeepSeek | deepseek-chat | OpenAI 兼容 JSON;特定 v4 模型禁用 thinking |
| 通义千问 | qwen-plus | OpenAI 兼容 JSON |
| 智谱 AI | glm-4-flash | OpenAI 兼容 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。
模型必须返回:
{
"assignments": [
{
"repository_id": 12,
"category_id": "c7",
"confidence": 0.88,
"reason": "Repository metadata indicates a browser mapping library."
}
]
}这里的 repository_id 和 category_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%;
- 被人工标记为错误的结果,包括高置信度错误。
处理流程:
- 从 GitHub 获取 README;
- 移除图片、徽章、HTML 和大代码块等噪声;
- 截取最多 12,000 个字符;
- 以仓库
pushed_at作为缓存失效依据; - 每批最多处理 5 个疑难项;
- 保存 baseline 与 enhanced 两组分类、置信度和理由;
- 用户选择是否采用增强结果。
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. 准确率与成本建议
- 从 200 个随机样本开始;
- 审核所有低置信度项;
- 从高置信度项中随机抽查;
- 先修订分类边界,再扩大规模;
- README 只处理疑难项;
- 分段提交,不要求页面连续运行数小时;
- 以服务商实际账单记录 Token 和成本。
推荐评测指标:Accuracy、Macro-F1、未分类率、低置信度比例、分类混淆、总 Token、总费用和总耗时。
12. 常见错误
| 错误 | 解释 | 处理 |
|---|---|---|
| JSON 截断 | 输出不完整 | 减小批次并重试失败项 |
| 未知分类 ID | 模型未遵守当前注册表 | 任务自动暂停,检查模型和注册表版本 |
| 注册表已变化 | 任务创建后分类定义改变 | 结束旧任务,基于新注册表创建任务 |
| 429 | 服务商限流 | 等待、减小并发或稍后重试 |
| README 失败 | GitHub 限流、网络或仓库无 README | 保留元数据结果并人工判断 |
| 无法确认写入 | 任务仍在运行或没有有效选中项 | 暂停任务并检查选择状态 |
当前限制
- 任务历史没有完整管理页;
- 实际 Token 与费用尚未统一记录;
- 没有跨设备任务恢复;
- AI Key 仍由浏览器持有;
- 没有 200–500 项的内置标准人工标注集;
- D2 正式未分类队列与同步后持续分类仍待实现。