跳到正文

Colibrì

一个纯 C、不带任何引擎依赖的推理引擎:把存储、内存与显存当作同一套层级,让 744B 到 2.8T 参数的 MoE 模型跑在人手已有的机器上。

这是 JustVugg 的 GitHub 头像,不是项目自己的 logo。取自 github.com,2026-10-02。

Screenshot of Colibrì
编辑截图, 2 Oct 2026Colibrì ↗

这是什么

Colibrì 不去假设模型必须装进显存,而是把显存、内存与存储当作一套统一的内存层级,从而在消费级与异构硬件上运行前沿 MoE 模型。目前已支持九个系列:744B 的 GLM-5.2/5.3、带视觉的 321B GLM-5.3-Flash、975B 的 Inkling、2.8T 的 Kimi K3、284B 的 DeepSeek V4 Flash 与带视觉的 552B V4.1 Flash、125B 的 Qwen3.8-Flash-Next、35B-A3B 的 Qwen3.6 以及 7B 的 OLMoE——每个系列一个 C 文件,共用同一套 coli chat / coli serve / coli web 前端。

谁做的仓库在 2026 年 7 月到 10 月之间累积了 2,803 次提交,最大两份份额属于 Vincenzo Fornaro(837 次)和 GitHub 账号 JustVugg(593 次)。其后对这样一个年轻项目来说分布异常宽——ZacharyZcR 216 次、monotophic 141 次、Vincenzo 63 次、Steve Markgraf 60 次、woolcoxm 55 次——贡献者名单超过一百个名字。

它是怎么搭起来的

组成 · 5

引擎围绕一次反转搭建:不问「怎么把模型塞进显存」,而是把存储、内存与显存当作一套层级,让专家在其中流动。模型因此变成一组按需读取的文件,而不是一块常驻分配;有意思的问题也随之从量化变成 I/O 布局、调度、kernel 与 CPU/GPU 重叠。全部是纯 C、无引擎依赖,所以整套东西就是一批文件——每个支持的模型系列一个——共用同一个前端。

c/ ——引擎
126 个文件、6.3 MB:共享运行时、内存分层、以及每个模型系列一个 C 文件——GLM、Inkling、Kimi K3、DeepSeek V4 与 V4.1、Qwen3.8 与 Qwen3.6、OLMoE。
c/tests/
390 个文件、3.6 MB——占文件数的大半,也是「实验可以牺牲速度、但不能悄悄改精度或路由语义」这条承诺背后的机制。
三个前端
coli chat、coli serve、coli web,所有模型共用。跑哪个模型是同一个程序的配置,而不是另一次构建。
docs/
按主题与按模型分册:环境与安装 61 KB、Metal 后端 47 KB、格式 38 KB、Windows 35 KB、基准 28 KB,以及每个模型系列一份——最大的是 qwen38.md 的 29 KB。
web/ 与项目站点
justvugg.github.io/colibri 这个静态站,以及 coli web 背后的 web/ 目录——读者不必自己构建就能看到这个引擎。

取舍,以及它替代了什么

  • 把存储、内存与显存当作一套层级 替代 要求模型必须装进显存

    README 把它写成核心想法:744B 到 2.8T 参数的模型能跑在消费级与异构硬件上,是因为专家是从磁盘流式读取的,而不是常驻内存。

  • 保证语义,拒绝保证速度 替代 在快速内存不足时降低精度

    README 把它写成规则——对速度不作 SLA、对语义给硬保证——并给出理由:快速内存不够可以降速,但不能悄悄把模型重新定义一遍。

  • 纯 C、零引擎依赖 替代 搭在已有的推理运行时之上

    每个模型系列一个 C 文件、共用同一前端,只有在引擎自己掌握格式、I/O 与 kernel 时才成立;README 把「没有依赖」写成让这套内存层级可被检验的前提。

依据JustVugg/colibri 的 README、仓库文件树与 docs/ 下的分册文档,2026-10-02 读取。

制作过程

4 个阶段
  1. 01

    三个月做出一个完整引擎,以及是谁写的

    仓库创建于 2026-07-01,此后每天都有推送;2,803 次提交落在七月(1,028)、八月(985)与九月(790),共 857 个文件。读者应先看署名:591 次提交带共同作者尾注,其中约 575 次署名 Claude 模型——Fable 5 166 次、Opus 5 153 次、Opus 4.8 85 次、Opus 5(1M 上下文)57 次、Fable 5.1 41 次、Opus 4.8(1M 上下文)20 次,另外还有 Opus 5.5、Sonnet 4.6、Sonnet 5 的少量计数,以及 Claude Code、Claude、Cursor 的若干条。十六次尾注署名的是人,多数是维护者。归属也不只体现在尾注上:有几次提交直接以 codex 20260923-120015-1331522267 这类机器生成的名字署名。

  2. 02

    它的主张在于模型住在哪里,而不是跑得多快

    README 用两句话说明设计:744B 到 2.8T 参数的前沿 MoE 模型能在消费级硬件上运行,是因为把存储、内存与显存当作同一套推理层级,并且是纯 C、零引擎依赖。项目把这称作 AI memory multitiering,并把自己首先定位成一个研究平台。这个定位带来一条被写成规则而不是愿望的承诺:对速度不作 SLA,对语义给硬保证——实验必须靠可复现的端到端测量赢得位置,默认策略不会悄悄改变模型精度或路由语义。快速内存不够可以降速,但不能悄悄把模型重新定义一遍。

  3. 03

    九个模型系列,每个一个 C 文件

    README 逐条列出今天能跑的东西与参数量:744B 的 GLM-5.2/5.3、带视觉的 321B GLM-5.3-Flash、975B 的 Inkling、2.8T 的 Kimi K3、284B 的 DeepSeek V4 Flash、带视觉的 552B DeepSeek V4.1 Flash、125B 加 51B n-gram 的 Qwen3.8-Flash-Next、35B-A3B 的 Qwen3.6,以及 7B 的 OLMoE。每个系列是一个 C 文件,全部接在同一套前端之后——模型是引擎的一种配置,而不是它的一个分支。文档也按同样的方式切分:docs/FORMATS.md 38 KB、docs/ENVIRONMENT.md 61 KB、docs/metal_implementation.md 47 KB、docs/windows.md 35 KB、docs/benchmarks.md 28 KB,以及每个模型系列一份——qwen38.md 29 KB、deepseek-v41.md 26 KB、deepseek-v4.md 25 KB。

  4. 04

    仓库里体量最大的是测试

    857 个文件里有 390 个在 c/tests,占 3.6 MB,而 c/ 下的引擎代码是 6.3 MB——这个比例来自那条语义保证:一条「绝不悄悄改精度」的规则,价值只等于能发现它被改动的那些检查。贡献者名单对一个三个月的项目也异常宽:除两位维护者外还有一百多个署名,从二十次、六十次的贡献者一直到大量只提交过一次的人。

相关档案

全部档案 →