在您自己的模型上运行 CrucibleForge:安装指南
- 发布日期
- 2026年11月5日
- 更新日期
- 2026年11月5日
- 作者
- Jacob Lloyd —— 项目完成后,在 AI 协助下撰写
- 阅读时长
- 约 11 分钟阅读

简单来说: CrucibleForge是一款免费且开源的工具,它能够生成 MakoBench 测试集中的所有评分结果。本页面将介绍如何安装该工具、将其连接到本地或远程模型、执行简单的测试并查看结果。如果您没有 GPU,也可以要求我们使用自身的硬件来运行您的模型。
CrucibleForge是一款开源工具,用于生成 MakoBench 测试板上的所有评分数据。该工具完全免费(采用 MIT-0 许可协议,无任何使用限制),您可以在自己的机器上运行它并测试自定义模型。本页面将详细介绍其安装步骤及首次运行方法。下文中的所有命令均是在最新克隆的公共代码库上执行的,输出结果也均来自这些实际运行过程。没有 GPU 或没时间自行运行?请我们帮您在我们的服务器上运行模型吧。
没有 GPU?请我们帮您在我们的服务器上运行模型。
运行 CrucibleForge并不需要 GPU,您只需拥有一个可测试的 API 端点即可。该请求表单适用于那些您无法自行部署的模型。
简而言之:
- 只需四条命令即可完成从代码克隆到基准测试运行的全过程:
uv sync、config --init、status、all。 - 任何兼容 OpenAI 协议的端点均可使用。 无论是 Ollama、LM Studio、llama.cpp、vLLM,还是其他托管式 API 均可。
- 运行 CrucibleForge的机器无需配备 GPU。 在配置了高性能 GPU的机器上,整个测试流程(含评估环节)大约需要25至30分钟。
- 建议先尝试“冒烟测试”。 我们的实测耗时1.6分钟,费用仅为0.0229美元。
- “冒烟测试”并不生成正式评分。 它仅覆盖全部33个测试案例中的4个,因此不会产生总分或排名数据。
开始前需要准备什么?
- 安装了
uv的 Python 3.12 或更高版本,或者 Docker。uv会自动帮你下载并安装 Python。 - 一个可供测试的模型,该模型需能通过与 OpenAI 兼容的
/chat/completions接口进行调用。 - 一个评判器,即任何性能不错的指令型模型,可以是本地运行的或云端托管的。代码本身可通过运行来评分,但聊天功能则需要一个评判器。
- 在 Linux 系统上需要
bubblewrap(也即bwrap)。模型生成的代码会在其沙盒环境中运行。在 Windows 和 macOS 系统中则无需 bubblewrap;此时只需添加--allow-unsandboxed参数,或者直接使用 Docker 镜像——容器本身即相当于一个沙盒环境。
如何安装?
在 Linux 系统上,这是最直接的安装方式。如果您不想安装 Python 相关工具,使用 Docker 则是更简便的方法。README 文件中提供了适用于 Windows、Linux 和 macOS 的命令代码块;每种操作系统上的第一种安装方法均为使用 Docker Desktop 或 Compose。对于本页面内容,我们并未采用 Docker 方式进行安装。
git clone https://github.com/LaserLloyd/CrucibleForge.git
cd CrucibleForge
uv sync --python 3.13
uv run crucibleforge --version
crucibleforge 4.0.1
这里使用的是 4.0.1 版本,也就是撰写本文时最新的公开发布版。现在请创建配置文件:
uv run crucibleforge config --init
wrote models.yaml - edit providers/models, then `crucibleforge status`
示例配置文件中列出了可使用的服务提供商,包括 LM Studio、Ollama、llama.cpp 或任何本地服务器、DeepSeek、OpenRouter、OpenAI 以及 Open WebUI;此外还提供了四个示例模型。只有在启用某个提供商后,相关功能才会运行。
如何连接您的模型?
models.yaml 需要指定提供商、模型以及评判器。
- 提供商。 即提供模型服务的服务器。任何支持
/chat/completions协议的服务器都能与type: openai配合使用。README中提到的本地示例有:Ollama使用的是http://localhost:11434/v1,LM Studio使用的是http://localhost:1234/v1,vLLM则使用http://localhost:8000/v1。对于托管式API,需设置api_key_env: NAME_OF_ENV_VAR;密钥本身绝不应直接写入文件中。 - 模型。 需要包含
name、provider、服务器能识别的model_id以及context_length这些信息。 - 评判器。 每次运行时需通过
--judge provider:model_id来指定。
若要了解某个服务器支持哪些模型,可向其发送请求。以下是一个使用环境变量中存储的密钥的托管式提供商示例:
uv run crucibleforge models discover deepseek
* deepseek-flash
* deepseek-v4-pro
2 models on deepseek (* = in registry)
星号表示该模型已存在于注册表中。初始配置文件中已启用了 deepseek-flash 模型,因此我们无需做任何修改即可运行。对于您自己的模型,只需添加类似如下的条目即可:
models:
- name: my-model
provider: ollama
model_id: qwen3:8b
context_length: 32768
如何检查设置是否正确?
export DEEPSEEK_API_KEY=... # only for a hosted provider or judge
uv run crucibleforge status
如果未设置密钥,托管服务提供商的状态输出会如下所示(仅截取相关行):
suite revision: 4.0.1+e3d1c6fb
providers:
ollama openai http://localhost:11434/v1 DOWN conc=8
deepseek openai https://api.deepseek.com/v1 UP conc=8 key: $DEEPSEEK_API_KEY (NOT SET)
reachable, but it wants an API key: set $DEEPSEEK_API_KEY (HTTP 401)
registry (models):
[enabled ] deepseek-flash deepseek deepseek-flash $0.14/0.28 per 1M
cases: 393 total (235 hard)
smoke subset: 37 cases
benchmark (bench): 33 cases
DOWN 表示该地址没有响应,这对于我们并未运行的本地服务器来说属于正常现象。UP且返回401错误则意味着主机可正常访问,但需要提供密钥。案例数量也很重要:总共有393个案例,而系统实际使用了其中的33个。
在开始运行之前,需要支付多少费用呢?
在任何运行任务中添加 --plan,系统便不会实际执行任何操作。它会显示出将会运行的步骤以及预计所需时间:
uv run crucibleforge all --models deepseek-flash --judge deepseek:deepseek-v4-flash --plan
T1 - every model: 29 rows (29 cases) + 4 perf probes
one round - hosted API (nothing loaded): 29 rows, 8 requests at once
estimate: generation 18.5 min; judge 16.0 min ... -> ~34 min
(plan only - no model, provider or judge was called; times are estimates)
以上就是在托管模型上完整运行一次所需的时间:根据该工具的估算,大约需要34分钟。这只是一个估算值,并非实际测量数据。对于本地模型而言,README中提到在配备高性能GPU的机器上大概需要25到30分钟。
“烟雾测试”的运行过程是怎样的呢?
--smoke 标志会运行一个经过标记的测试子集,涵盖生成、评判以及报告生成等整个流程。这是验证您的配置是否正常运作的最快捷方式。我们选用了 DeepSeek Flash 作为模型与评判器;这一组合正是 README 文档中快速入门指南所推荐的配置。测试则是在 DeepSeek 的非高峰时段进行的。
uv run crucibleforge all --smoke --models deepseek-flash --judge deepseek:deepseek-v4-flash --yes
... profile bench: 4 cases, thinking cap 24576, judge deepseek:deepseek-v4-flash
... link check passed: deepseek reachable, data channel OK
... run: models=['deepseek-flash'] cases=4 smoke=True fresh=False
... [deepseek-flash] RD1-marisol r1 done (15 rows)
... judging done: 1 rows, 0 unparsable judge verdicts, 0 empty generations, 0 errored
run summary:
deepseek-flash: 15 rows, load 0.0s (deepseek), $0.0229
timing: generation 1.2 min, judge 14 s, report 8 s, total 1.6 min
wrote results/report.md, results/failures.md, results/report.html
整个测试过程耗时 1.6 分钟,费用仅为 $0.0229。测试共包含 15 条数据记录:其中一条属于角色扮演案例,其余则是用于测试响应速度的样本。有两点注意事项需要留意:
- 评判器的 API 拒绝了结构化输出请求,因此 CrucibleForge 在该次测试中改用了自由文本格式的 JSON。不过评分结果依然正常生成。
- 该评判器未能通过针对成人内容文本的校准检测。于是 CrucibleForge 仅对其他数据进行了评判,而那些涉及成人内容的记录则暂时留待能够处理此类内容的评判器来处理。README 文档指出,大多数托管型评判器均会如此运作。这些评分结果会显示在界面上,但不会被计入总分。
如何解读结果?
在浏览器中打开 results/report.html,或者阅读 results/report.md。我们这次的测试仅输出了一行结果:
| Model | Overall | Class | Coding | Chat | tok/s | Suite | Notes |
| deepseek-flash | - | - | - | 2.5 +/- 0.1 | 159.7 | 4.0.1 | partial (4/33 cases); judged by deepseek-v4-flash |
其中显示的 2.5 这一数值并非模型的得分。它只是在 Chat 模块中成功运行的那个案例的数值而已。该行显示为“部分完成(4/33 个案例)”,而只完成了部分测试的模型是没有总体评分、类别评分以及排名的——主面板上的规则也是如此。若要获得真正的总分(即代码测试与 Chat 测试的综合得分,满分20分),需要运行完整的测试集。关于各列的具体含义,请参阅 MakoBench 的工作原理以及 MakoBench 的测试内容。
“速度(tok/s)”这一指标仅适用于在相同硬件上运行的模型之间的比较。对于托管型模型而言,其运行速度则取决于服务提供商以及当时的负载情况。
如何运行完整的基准测试?
uv run crucibleforge all --models my-model --judge my-provider:my-judge --yes
首先添加 --fresh 参数,以存档模型之前的对话记录。测试结果会保存在 results/ 目录下,该目录中还有 models.yaml 文件——里面包含评分表、测试失败信息、HTML格式的报告以及每条提示与对应的回复记录。网页版界面只需一条命令即可启动(uv run crucibleforge gui),默认情况下该服务仅监听本地回环地址。
使用前需了解的几点
- 编码类测试用例会运行模型生成的代码。 在 Linux 系统上请使用 bubblewrap,其他平台则可使用 Docker 镜像。
--allow-unsandboxed参数允许以您的身份运行这些代码,此时您的文件也可被读取。 - 云端运行测试需要付费。 建议先执行
--plan命令并运行冒烟测试。 - 测试套件中包含一些成人向内容用例,它们位于独立区域且不会被计入 Total 评分统计中。相关说明请参见 README 文件。
- 评分机制会影响 Chat 类任务的得分。 在 MakoBench 平台上,评分使用的是 Gemma 4 31B 模型(未经审查的“异端”版本,Q8精度),该模型运行在我们自有的 GPU 服务器上。只有使用相同的评分模型时,您的 Chat 任务得分才能与平台数据相匹配;而编码类任务则是通过实际运行代码来评分,因此无论使用何种评分模型都能得到可比结果。
- 所有得分均为同一测试套件版本下的比较值。 本页面介绍的是 4.0 版测试套件;关于该版本的更新内容请参见 Suite 4.0 的变更说明。
所有内容都检查过了吗?
差不多吧。我们还运行了 uv run crucibleforge cases verify,该命令会在离线状态下重新生成标准答案。它共检查了393个用例,发现有一个存在问题:某个代码库用例在信号测试中其参考解决方案出现了超时现象。由于此次运行过程中我们的机器还需处理其他任务,因此无法确定这究竟是真正的程序错误还是机器性能不佳所致。我们尚未将此问题上报给上游开发团队。如果您也遇到了同样的用例问题,请不要担心,您并不孤单。
需要我们帮您运行吗?
没有合适的GPU可用?请让我们在我们的硬件上为您运行模型吧。
我们会根据硬件条件来决定哪些模型可以运行。用户的投票则决定了“投票”标签页中的默认排序顺序。最终结果会显示在 MakoBench 看板上。
相关链接:MakoBench的工作原理、Suite 4.0:有哪些变化,以及 看板页面。