Magika 是 Google 出的 AI 文件类型检测工具:用一个高度优化的小型深度学习模型(仅几 MB)在毫秒级、单 CPU 上也能精确识别文件内容类型。它在约 1 亿样本、200+ 内容类型(二进制 + 文本)上训练评测,测试集平均约 99% 准确率,尤其在文本类型上明显优于传统方法(如 libmagic/file 命令)。它已在 Google 内部大规模用于把 Gmail、Drive、Safe Browsing 的文件路由到正确的安全与内容策略扫描器,每周处理上千亿样本,并集成进 VirusTotal、abuse.ch。CLI 用 Rust,另有 Python API 与 Rust/JS/Go 绑定。Apache-2.0,研究论文发表于 ICSE 2025。
来源:README 顶部/Highlights;GitHub desc,license Apache-2.0 查看 GitHub 仓库 →约 1.7 万星、自 2023 年就存在并持续维护。热度来自它精准解决了一个老问题:传统 file/libmagic 靠魔数和规则、对文本和混淆文件常出错,而 Magika 用小而快的深度模型把『判断这是什么文件』做到 99% 准确、毫秒级、单 CPU 可跑,还有 Google 的大规模生产验证和 ICSE 论文背书,安全/取证/数据管线领域都用得上。
来源:GitHub 17,035 stars / 1,044 forks,created 2023-08-22;README 顶部自定义深度模型仅几 MB,模型加载后每文件推理约 5ms,单 CPU 即可;推理时间近乎与文件大小无关——只用文件内容的有限子集,可同时处理上千文件、支持 -r 递归扫目录。
来源:README Highlights(小模型/5ms/near-constant)在约 1 亿文件、200+ 内容类型(二进制与文本)上训练评测,测试集平均约 99% precision/recall,尤其在文本内容类型上超越现有方法。
来源:README 顶部/Highlights采用每内容类型的阈值系统决定是否『信任』模型预测,否则返回 Generic text document / Unknown binary data 等通用标签;可用 high-confidence / medium-confidence / best-guess 不同预测模式控制对错误的容忍度。
来源:README Highlights(threshold/prediction modes)CLI 用 Rust 写,提供 Python API,以及 Rust、JavaScript/TypeScript(实验性 npm,驱动浏览器内本地运行的 web demo)和 GoLang(WIP)绑定,可嵌入各类工具链。
来源:README Highlights/Installation;tree(rust/python/js/go)在 Google 内部把 Gmail/Drive/Safe Browsing 文件路由到正确的安全与内容策略扫描器(每周上千亿样本),并已集成进 VirusTotal 与 abuse.ch,是经过大规模实战验证的安全基础组件。
来源:README 顶部(used at scale/VirusTotal/abuse.ch)多语言 monorepo,围绕一个共享的小型深度学习模型构建:assets/models 下是训练好的标准模型(standard_v3_3 等,含 200+ 内容类型定义)。各语言实现把同一模型跑起来——rust/(CLI 主体,性能最佳)、python/(Python API + 包)、js/(TypeScript 实现 magika.ts/magika-node.ts/magika-cli.ts,experimental npm,并驱动浏览器内本地推理的 web demo)、go/(用 onnx 跑模型,WIP)。模型推理只取文件内容的有限子集做特征、近常数时间,配合每类型阈值与置信度模式输出标签或通用回退。tests_data/ 是测试样本,website/website-ng/ 是站点与 demo。整体是『一个共享小模型 + 多语言客户端/绑定 + 阈值/置信度后处理』的设计,强调小、快、可嵌入、可在客户端/浏览器本地运行(隐私友好)。
来源:README Highlights/Installation;tree(rust/python/js/go、assets/models、tests_data)中心为项目本体,内环 = 核心功能模块,外环 = 关键技术依赖;按 deep.json 中的 core_features 与 tech_stack.key_deps 自动生成
自研小型 DL 模型(几 MB)ONNX Runtime(go/rust 推理)PyPI magika / npm magika200+ 内容类型模型(standard_v3_x)适合:①安全/取证/反滥用场景,需要可靠判断上传文件真实类型(不被扩展名/伪装欺骗)再路由到对应扫描器;②数据管线、内容平台、防病毒/沙箱前置的文件分类;③需要在客户端/浏览器本地、低延迟、单 CPU 跑文件类型识别且注重隐私的场景;④想把准确的 file-type 检测嵌进 Rust/Python/JS/Go 工具链的人。不适合:只需粗略按扩展名判断的轻量场景(无需上模型);以及对极少见/自定义私有格式的识别(不在 200+ 类型内可能回退为通用标签)。
来源:README 顶部/Highlights,结合定位推断按语言分别发布:CLI v1.1.0(2026-04-24,Rust)、python-v1.0.2(2026-02-27)等,模型为 standard_v3_3;仓库自 2023-08 持续维护(最近 push 2026-05-20),是成熟且仍活跃迭代的项目。
来源:GitHub Releases cli/v1.1.0、python-v1.0.2;pushed_at 2026-05-20Magika 是『用小 AI 模型把一件老工具做对』的范例:传统 file/libmagic 在文本和伪装文件上常翻车,而它用几 MB 的模型在单 CPU 毫秒级做到 200+ 类型约 99% 准确,还能在浏览器本地跑、隐私友好,背后有 Google 的千亿级生产验证和 ICSE 论文,1.7 万星实至名归。它的边界也清楚:只判断『是什么类型』、不判恶意性,识别范围限于训练覆盖的类型、罕见格式会回退通用标签,且仍是概率判断。对做安全、取证、内容平台或数据管线、需要可靠 file-type 检测的人,它基本是当前最好的开源选择,直接嵌进 Rust/Python/JS/Go 工具链即可。
来源:综合 README 定位/能力、tree 多语言结构、局限与发布状态的事实判断