桃子桃子快讯
返回首页
工具

Betlang:50KB 极轻量编程语言检测模型发布

开发者发布仅 50KB 的 CPU 端源码语言识别模型,基于 Google Magika 蒸馏,支持 48 种语言。

2026.07.26 · 周日4 分钟阅读

Betlang 是一款面向 CPU 的极轻量编程语言检测库,整个模型权重仅约 47,840 字节(约 50KB),可在浏览器或本地进程中直接调用。项目以 crate 形式发布,核心 API 为 betlang::detect(source),输入 UTF-8 源码字符串或字节切片,返回包含 Top-1 语言与完整概率排名的检测结果。

模型来源与架构

Betlang 嵌入的权重文件为 assets/magika/source-student-q4.bin,SHA-256 为 8493d2d3757572c8661141e414b1c0755aa08d4c4e5382dfbbc6b73b02d89083。该学生模型由 Google 开源的 Magika 教师模型蒸馏得到,Magika 本身采用 Apache-2.0 协议发布,Betlang 主体则使用 MIT 协议,但要求在再分发模型工件时保留对 Magika 的归属说明。

模型架构标注为 wordseq-b1024-k3-m2048-tiny-3conv-hidden,对应 Magika 的 wordseq 系列,tokenizer 版本 3。推理时使用固定的 4096 字节窗口,并按评估时所用的 2048 token 形状对运行时输入做对齐填充;权重通过进程级 OnceLock 加载一次后复用,避免重复读取开销。CPU 推理后端调用 fearless_simd 进行向量化加速,benchmark 入口由 cargo bench 提供。

覆盖语言与准确率

模型输出 48 个语言标签,未做合并归一处理,包括:asm、batch、c、clojure、cmake、cobol、cpp、cs、css、dart、dockerfile、elixir、erlang、gemfile、gemspec、go、gradle、groovy、haskell、html、ini、java、javascript、json、julia、kotlin、lisp、lua、markdown、objectivec、ocaml、perl、php、powershell、python、r、ruby、rust、scala、shell、sql、swift、toml、typescript、vba、verilog、xml、yaml。

在保留的 filesystem-label 测试集上,模型达到:

  • test_fs_accuracy = 0.942353
  • macro_recall = 0.939690

概率输出经过校准,对歧义样本会给出分裂分数而非强行返回单一标签,降低了错误断言的风险。完整的训练与评估说明见仓库内的 MODEL_CARD.md

适用场景与局限

Betlang 的核心卖点是体积小、可离线、无需 GPU,适合编辑器插件、CLI 工具、边缘设备或资源受限环境中的语言识别需求。但其 50KB 体量与仅 48 个标签的覆盖范围,使其更适合作为轻量补充而非通用 IDE 级识别方案;对于追求更高准确率或更细语言覆盖的场景,仍需依赖 Magika 原版或其他大模型方案。

许可与归属

  • 主体代码:MIT
  • 嵌入学生模型权重:源自 Magika(Apache-2.0)

项目要求在再分发模型工件时保留对 Google Magika 的归属说明,详细基准数据见仓库内的 BENCHMARKS.md,可按文件大小分桶查阅归一化混淆矩阵。

信源