Muninn:可塞进手机的代码定位模型,配套新基准 Quarry
团队发布 346M 参数代码定位模型 Muninn 与 47M 极小版本,并推出面向智能体代码检索的新基准 Quarry…
Brokk 团队正式发布 Muninn:一款专为代码定位(code localization)设计的小型嵌入模型,并同时推出配套基准 Quarry,用于衡量智能体(agent)在真实代码库中进行语义检索的能力。Muninn 参数量仅 3.46 亿,可在弱 GPU 上快速运行;更激进的 Muninn-small 仅 4700 万参数,纯 CPU 即可推理。两者均采用 Apache 2.0 许可开源。
模型规模与定位
Muninn 的核心目标是把自然语言描述映射到「函数级」的代码片段,而非传统代码搜索模型常见的「文档字符串 → 代码」或「整段 issue → 代码」范式。团队认为,旧的搜索范式更适合一次性上下文检索,但现代 agent 框架倾向于让模型在执行任务过程中迭代调用工具,因此更需要「找到做 X 的代码在哪里」这类精准查询。
为控制体积,Muninn 在 Bifrost 代码分析工具中默认输出 512 维向量,Muninn-small 输出 384 维,并通过 fastrq 进一步压缩到 8 位存储。安装方式上,开发者可通过 uv tool install brokk-bifrost 或 npm install -g @brokkai/bifrost 把语义搜索能力接入现有 harness。
训练数据构造
Muninn 共支持 11 种语言:C、C++、C#、Go、Java、JavaScript、PHP、Python、Rust、Scala、TypeScript(Bifrost 后续又加入 Kotlin 与 Ruby 的索引支持)。训练流程分两步:
- 先用 DeepSeek 从 commit 中反向生成「任务描述」;
- 再用 Luna(替换 DeepSeek 后价格更低)从任务描述生成自然语言查询,并映射到该 commit 修改文件以及 Bifrost 通过 co-edit 与 import 分析给出的「相关文件」中最相关的函数。
两种模型分别承担训练集与基准的查询生成,目的是避免在评测中只测到「模型记住了 DeepSeek 的查询风格」。
Quarry:面向 agent 的检索基准
团队在评测中发现,现有基准(APPS、CodeSearchNet、CosQA、SWE-Bench-Lite localization、LocBench)大多只覆盖 Python、且普遍以 issue 文本或文档字符串作为查询,不能反映现代 agent 实际需要的短查询场景,因此自建 Quarry。Quarry 的设计原则包括:
- 基于真实大型仓库的全量代码作为检索候选,而非短片段;
- 查询为自然语言,不依赖 docstring、伪代码或 issue 文本;
- 覆盖所有常见语言;
- 主指标采用 micro recall(命中多少 gold 函数),而非 MRR,因为前者更直接反映 agent 能看到什么;
- 任务量足够多,能区分「还不错」与「世界最强」。
Quarry 最终从 11 种语言各选 5 个历史深厚的大型仓库,共生成 3,411 个任务、6,525 条查询,仓库与 Muninn 训练数据完全不相交。
性能点
团队特别提到,Muninn-small 在某些任务上击败了 OpenAI 两年前发布的 text-embedding-3——虽然标杆本身并不算高,但考虑到模型体量不到 5000 万参数,这一对比仍具传播价值。综合来看,Muninn 的定位是「足够小、足够快、足够准」的 agent 代码检索组件,适合被集成进 IDE 插件或自动化脚本中本地运行。
