llmfit
llmfit 是一款专为本地大语言模型(LLM)设计的终端工具,旨在帮助用户快速找到最适合自己硬件配置的模型。面对市面上数百种模型和不同的运行提供商,用户往往难以判断哪些模型能在自己的电脑上流畅运行。llmfit 通过一键检测系统的内存、CPU 和 GPU 规格,自动评估各模型在质量、速度、适配度及上下文长度等维度的表现,从而精准推荐“刚刚好”能跑起来的模型,避免了因显存或内存不足导致的运行失败。
这款工具特别适合开发者、AI 研究人员以及希望在本地部署大模型的进阶用户。无论是拥有单张显卡的笔记本,还是配置了多卡工作站甚至苹果 M 系列芯片的用户,llmfit 都能提供针对性的建议。其独特亮点在于内置了交互式终端界面(TUI),不仅直观展示预估生成速度和最佳量化格式,还支持动态筛选、多后端适配(如 Ollama、llama.cpp、MLX 等)以及对混合专家模型(MoE)的特殊优化。只需一条命令,即可告别繁琐的手动试错,让本地大模型部署变得简单高效。
使用场景
一名拥有 32GB 内存和单张 RTX 4090 显卡的开发者,正试图在本地搭建一个高效的代码辅助助手,却面对 Hugging Face 上成千上万个模型版本无从下手。
没有 llmfit 时
- 盲目试错成本高:只能凭经验猜测哪些量化版本(如 Q4_K_M 或 Q8_0)能塞进显存,频繁下载数十 GB 的模型文件后才发现运行时报错“内存不足”。
- 性能预估靠猜:无法提前知道选定模型在当前硬件上的推理速度(tok/s),部署后才发现生成速度只有 2 tokens/s,完全无法满足实时编码需求。
- 选型维度单一:往往只关注参数量大小,忽略了上下文窗口(Context)是否足够长,导致模型无法读取完整的项目文件结构。
- 环境配置繁琐:需要手动查阅文档确认模型是否支持 Ollama 或 llama.cpp 后端,反复切换工具链进行兼容性测试。
使用 llmfit 后
- 一键精准匹配:运行
llmfit后,工具自动扫描硬件配置,直接过滤掉所有无法运行的模型,仅列出“完美适配”或“良好运行”的选项。 - 量化与速度透明化:界面清晰展示每个推荐模型的最佳量化格式及预估推理速度,开发者可立即锁定既能跑满显存又能保证流畅度的模型。
- 多维场景筛选:通过
/搜索 "coding" 并按 "Ctx" 排序,瞬间找到专为代码优化且支持长上下文的模型,无需人工比对参数表。 - 后端无缝衔接:直接在交互界面中查看模型对 Ollama 或 LM Studio 的支持情况,选中即可获取运行命令,省去了排查后端兼容性的时间。
llmfit 将原本需要数小时的模型选型与兼容性测试过程,压缩为一次直观的终端交互,让开发者能立刻在本地硬件上运行最优的大语言模型。
运行环境要求
- Windows
- macOS
- Linux
- 非必需
- 支持多 GPU 设置、MoE 架构及动态量化选择
- 工具会自动检测 GPU 名称和显存 (VRAM) 以评估模型适配度,未指定具体型号或最低显存要求
未说明具体数值。工具会根据系统 RAM 自动检测并评分,以确定哪些模型可以运行。

快速开始
llmfit
English · 中文
数百种模型与提供商。一条命令即可找到适合您硬件的模型。
一款终端工具,可根据您的系统内存、CPU 和 GPU 资源,智能选择最合适的 LLM 模型。它会检测您的硬件配置,从质量、速度、适配性和上下文处理能力等多个维度对每个模型进行评分,并告诉您哪些模型在您的机器上能够流畅运行。
默认提供交互式 TUI 界面,同时也支持经典 CLI 模式。支持多 GPU 配置、MoE 架构、动态量化选择、速度估算以及本地运行时提供商(Ollama、llama.cpp、MLX、Docker Model Runner、LM Studio)。
姊妹项目:

安装
Windows
scoop install llmfit
如果尚未安装 Scoop,请参考 Scoop 安装指南。
macOS / Linux
Homebrew
brew install llmfit
快速安装
curl -fsSL https://llmfit.axjns.dev/install.sh | sh
该命令会从 GitHub 下载最新版本的二进制文件,并将其安装到 /usr/local/bin(如果没有 sudo 权限,则安装到 ~/.local/bin)。
无需 sudo 安装到 ~/.local/bin:
curl -fsSL https://llmfit.axjns.dev/install.sh | sh -s -- --local
Docker / Podman
docker run ghcr.io/alexsjones/llmfit
此命令会输出 llmfit recommend 命令的 JSON 结果。您可以使用 jq 对 JSON 进一步查询。
podman run ghcr.io/alexsjones/llmfit recommend --use-case coding | jq '.models[].name'
从源码编译
git clone https://github.com/AlexsJones/llmfit.git
cd llmfit
cargo build --release
# 生成的二进制文件位于 target/release/llmfit
使用方法
TUI(默认)
llmfit
启动交互式终端界面。屏幕顶部会显示您的系统规格(CPU、内存、GPU 型号、显存大小、运行时后端)。下方是一个可滚动的表格,模型按综合评分排序。每行显示模型的评分、预估的 token/s 速度、最适合您硬件的量化方式、运行模式、内存占用以及适用场景分类。
| 键 | 功能 |
|---|---|
Up / Down 或 j / k |
导航浏览模型 |
/ |
进入搜索模式(支持名称、提供商、参数、使用场景的部分匹配) |
Esc 或 Enter |
退出搜索模式 |
Ctrl-U |
清除搜索内容 |
f |
切换适配性筛选器:全部、可运行、完美、良好、勉强 |
a |
切换可用性筛选器:全部、GGUF 可用、已安装 |
s |
切换排序列:评分、参数量、内存占比、上下文长度、发布日期、使用场景 |
v |
进入视觉模式(可多选模型) |
V |
进入列筛选模式 |
t |
切换颜色主题(自动保存) |
p |
打开所选模型的规划模式(硬件资源规划) |
P |
打开提供商筛选弹出窗口 |
U |
打开使用场景筛选弹出窗口 |
C |
打开功能特性筛选弹出窗口 |
m |
标记所选模型以供比较 |
c |
打开比较视图(已标记模型与当前选中模型对比) |
x |
清除比较标记 |
i |
切换“已安装优先”排序(基于检测到的运行时提供商) |
d |
下载所选模型(当有多个提供商时会弹出选择框) |
r |
从运行时提供商处刷新已安装模型 |
Enter |
切换所选模型的详细信息视图 |
PgUp / PgDn |
每次滚动 10 行 |
g / G |
跳转到列表顶部 / 底部 |
q |
退出程序 |
类 Vim 模式
TUI 使用受 Vim 启发的模式,显示在左下角的状态栏中。当前模式决定了哪些键是可用的。
正常模式
默认模式。用于导航、搜索、筛选和打开视图。上表中的所有按键在此模式下均适用。
可视模式 (v)
选择连续的模型范围以进行批量比较。按 v 键将锚点定位到当前行,然后使用 j/k 或方向键扩展选择范围。选中的行会高亮显示。
| 键 | 动作 |
|---|---|
j / k 或箭头键 |
上下扩展选区 |
c |
比较所有选中的模型(打开多模型比较视图) |
m |
标记当前模型以进行双模型比较 |
Esc 或 v |
退出可视模式 |
多模型比较视图显示一个表格,其中行代表属性(得分、tok/s、适配度、内存占比、参数量、运行模式、上下文长度、量化等),列则为不同的模型。最佳值会被高亮显示。如果选择的模型数量超过屏幕宽度,可使用 h/l 或方向键水平滚动。
选择模式 (V)
基于列的筛选模式。按 V(Shift-v)进入选择模式,然后使用 h/l 或方向键在列标题间移动。当前活动的列会以视觉方式突出显示。按下 Enter 或 空格 键即可激活该列对应的筛选功能:
| 列 | 筛选操作 |
|---|---|
| 实例 | 循环切换可用性筛选 |
| 模型 | 进入搜索模式 |
| 提供者 | 打开提供者弹出菜单 |
| 参数量 | 打开参数规模分桶弹出菜单(<3B、3-7B、7-14B、14-30B、30-70B、70B+) |
| 得分、tok/s、内存占比、上下文长度、日期 | 按该列排序 |
| 量化 | 打开量化弹出菜单 |
| 运行模式 | 打开运行模式弹出菜单(GPU、MoE、CPU+GPU、CPU) |
| 适配度 | 循环切换适配度筛选 |
| 使用场景 | 打开使用场景弹出菜单 |
在选择模式下,行导航(j/k)仍然有效,因此您可以在应用筛选器时查看其效果。按 Esc 键返回正常模式。
TUI 计划模式 (p)
计划模式颠覆了常规的适配分析:它不是问“什么适合我的硬件?”,而是估算“这个模型配置需要什么样的硬件?”。
在选中某一行后,按下 p 键,然后:
| 键 | 动作 |
|---|---|
Tab / j / k |
在可编辑字段之间移动(上下文长度、量化、目标 TPS) |
Left / Right |
在当前字段内移动光标 |
| 输入 | 编辑当前字段 |
Backspace / Delete |
删除字符 |
Ctrl-U |
清除当前字段 |
Esc 或 q |
退出计划模式 |
计划模式会显示以下估算结果:
- 最小和推荐的显存/内存/CPU 核心数
- 可行的运行路径(GPU、CPU 卸载、纯 CPU)
- 为达到更好的适配目标所需的升级幅度
主题
按 t 键可在 10 种内置颜色主题之间循环切换。您的选择会自动保存到 ~/.config/llmfit/theme 文件中,并在下次启动时恢复。
| 主题 | 描述 |
|---|---|
| 默认 | 原始 llmfit 颜色 |
| Dracula | 深紫色背景搭配柔和色调 |
| Solarized | 伊森·斯库诺弗的 Solarized Dark 调色板 |
| Nord | 北极风,冷峻的蓝灰色调 |
| Monokai | Monokai Pro 的温暖语法高亮颜色 |
| Gruvbox | 复古风格调色板,带有温暖的大地色调 |
| Catppuccin Latte | 🌻 浅色主题 — 和谐的粉彩色反转 |
| Catppuccin Frappé | 🪴 低对比度深色 — 沉稳、低调的美学 |
| Catppuccin Macchiato | 🌺 中等对比度深色 — 温和、舒缓的色调 |
| Catppuccin Mocha | 🌿 最深的变体 — 舒适且色彩丰富的点缀 |
Web 控制面板
当您以非 JSON 模式运行 llmfit 时,它会自动在 0.0.0.0:8787 启动一个后台 Web 控制面板。在同一网络中的任何浏览器中打开即可:
http://<your-machine-ip>:8787
您可以通过环境变量覆盖主机或端口:
LLMFIT_DASHBOARD_HOST=0.0.0.0 LLMFIT_DASHBOARD_PORT=9000 llmfit
| 变量 | 默认值 | 描述 |
|---|---|---|
LLMFIT_DASHBOARD_HOST |
0.0.0.0 |
控制面板服务器绑定的接口 |
LLMFIT_DASHBOARD_PORT |
8787 |
控制面板服务器绑定的端口 |
要禁用自动启动的控制面板,可以传递 --no-dashboard 参数:
llmfit --no-dashboard
CLI 模式
使用 --cli 或任何子命令可获得经典的表格输出:
# 按适配度排名的所有模型表格
llmfit --cli
# 完美适配的模型,前 5 名
llmfit fit --perfect -n 5
# 显示检测到的系统规格
llmfit system
# 列出数据库中的所有模型
llmfit list
# 按名称、提供商或参数量搜索
llmfit search "llama 8b"
# 单个模型的详细信息
llmfit info "Mistral-7B"
# 前 5 名推荐(JSON 格式,供代理或脚本使用)
llmfit recommend --json --limit 5
# 按使用场景筛选的推荐
llmfit recommend --json --use-case coding --limit 3
# 强制指定运行时(绕过 Apple Silicon 上的自动 MLX 选择)
llmfit recommend --force-runtime llamacpp
llmfit recommend --force-runtime llamacpp --use-case coding --limit 3
# 为特定模型配置规划所需硬件
llmfit plan "Qwen/Qwen3-4B-MLX-4bit" --context 8192
llmfit plan "Qwen/Qwen3-4B-MLX-4bit" --context 8192 --quant mlx-4bit
llmfit plan "Qwen/Qwen3-4B-MLX-4bit" --context 8192 --target-tps 25 --json
# 作为节点级 REST API 运行(适用于集群调度器/聚合器)
llmfit serve --host 0.0.0.0 --port 8787
REST API (llmfit serve)
llmfit serve 启动一个 HTTP API,公开与 TUI/CLI 相同的拟合/评分数据,包括节点的筛选和顶级模型选择。
# 活性检查
curl http://localhost:8787/health
# 节点硬件信息
curl http://localhost:8787/api/v1/system
# 带筛选条件的完整拟合列表
curl "http://localhost:8787/api/v1/models?min_fit=marginal&runtime=llamacpp&sort=score&limit=20"
# 关键调度端点:该节点可运行的顶级模型
curl "http://localhost:8787/api/v1/models/top?limit=5&min_fit=good&use_case=coding"
# 按模型名称/提供商文本搜索
curl "http://localhost:8787/api/v1/models/Mistral?runtime=any"
models/models/top 支持的查询参数:
limit(或n):返回的最大行数perfect:true|false(为true时强制仅显示完美匹配)min_fit:perfect|good|marginal|too_tightruntime:any|mlx|llamacppuse_case:general|coding|reasoning|chat|multimodal|embeddingprovider:提供商文本过滤器(子字符串)search:跨名称/提供商/尺寸/使用场景的自由文本过滤sort:score|tps|params|mem|ctx|date|use_caseinclude_too_tight:是否包含不可运行的行(默认在/top上为false,在/models上为true)max_context:用于内存估算的每请求上下文上限force_runtime:mlx|llamacpp|vllm— 在分析过程中覆盖自动运行时选择
在本地验证 API 行为:
# 自动启动服务器并运行端点/模式/筛选断言
python3 scripts/test_api.py --spawn
# 或测试已运行的服务器
python3 scripts/test_api.py --base-url http://127.0.0.1:8787
GPU 内存覆盖
在某些系统上,GPU 显存自动检测可能会失败(例如 nvidia-smi 出现问题、虚拟机、直通设置等)。可以使用 --memory 手动指定 GPU 的显存大小:
# 覆盖为 32 GB 显存
llmfit --memory=32G
# 也可以使用 MB 单位(32000 MB ≈ 31.25 GB)
llmfit --memory=32000M
# 适用于所有模式:TUI、CLI 和子命令
llmfit --memory=24G --cli
llmfit --memory=24G fit --perfect -n 5
llmfit --memory=24G system
llmfit --memory=24G info "Llama-3.1-70B"
llmfit --memory=24G recommend --json
支持的后缀:G/GB/GiB(千兆字节)、M/MB/MiB(兆字节)、T/TB/TiB(太字节)。不区分大小写。如果未检测到 GPU,则覆盖会创建一个模拟的 GPU 条目,以便对模型进行 GPU 推理的评分。
用于估算的上下文长度上限
使用 --max-context 可以限制用于内存估算的上下文长度(而不改变每个模型所宣传的最大上下文长度):
# 在 4K 上下文长度下估算内存占用
llmfit --max-context 4096 --cli
# 也适用于子命令
llmfit --max-context 8192 fit --perfect -n 5
llmfit --max-context 16384 recommend --json --limit 5
如果未设置 --max-context,llmfit 将在可用时使用 OLLAMA_CONTEXT_LENGTH。
JSON 输出
在任何子命令中添加 --json 可获得机器可读的输出:
llmfit --json system # 硬件规格以 JSON 格式输出
llmfit --json fit -n 10 # 前 10 名拟合结果以 JSON 格式输出
llmfit recommend --json # 前 5 名推荐结果(recommend 默认为 JSON 格式)
llmfit plan "Qwen/Qwen2.5-Coder-0.5B-Instruct" --context 8192 --json
plan 的 JSON 包含以下稳定字段:
- 请求信息(上下文、量化、目标 TPS)
- 估计的最低/推荐硬件配置
- 各路径的可行性(GPU、CPU 卸载、纯 CPU)
- 升级差异
工作原理
硬件检测 -- 通过
sysinfo读取总内存/可用内存,统计 CPU 核心数,并探测 GPU:- NVIDIA -- 通过
nvidia-smi支持多 GPU。汇总所有检测到的 GPU 的显存。若报告失败,则回退到根据 GPU 型号名称估算显存。 - AMD -- 通过
rocm-smi检测。 - Intel Arc -- 独立显存通过 sysfs 获取,集成显存则通过
lspci获取。 - Apple Silicon -- 统一内存通过
system_profiler获取。显存等于系统内存。 - Ascend -- 通过
npu-smi检测。 - 后端检测 -- 自动识别加速后端(CUDA、Metal、ROCm、SYCL、CPU ARM、CPU x86、Ascend),用于速度估算。
- NVIDIA -- 通过
模型数据库 -- 数百个模型来自 HuggingFace API,存储在
data/hf_models.json中,并在编译时嵌入。内存需求根据参数量,结合量化层级(Q8_0 至 Q2_K)计算得出。显存在 GPU 推理中是主要限制;仅 CPU 运行时则以系统内存作为后备。MoE 支持 -- 具有专家混合架构的模型(Mixtral、DeepSeek-V2/V3)会自动检测。每个 token 只激活部分专家,因此实际显存需求远低于总参数量所暗示的数值。例如,Mixtral 8x7B 总参数量为 467 亿,但每 token 只激活约 129 亿,通过专家卸载可将显存需求从 23.9 GB 降至约 6.6 GB。
动态量化 -- llmfit 不假设固定量化级别,而是尝试最适合您硬件的质量量化。它从 Q8_0(质量最高)开始,逐步降低到 Q2_K(压缩比最高),选择能在可用内存内运行的最高质量量化。如果全上下文都不满足,再尝试半上下文。
多维度评分 -- 每个模型在四个维度上进行评分(每个维度满分为 100 分):
维度 衡量内容 质量 参数量、模型家族声誉、量化惩罚、任务匹配程度 速度 根据后端、参数量和量化估计的每秒生成 token 数 契合度 内存使用效率(理想范围:50–80% 的可用内存) 上下文 上下文窗口能力与用例目标的匹配程度 各维度按加权综合得分排序。权重因用例类别而异(通用、编码、推理、聊天、多模态、嵌入)。例如,聊天场景更注重速度(权重 0.35),而推理场景则更注重质量(权重 0.55)。无法运行的模型(过于紧张)始终排在最后。
速度估算 -- LLM 推理中的 token 生成受内存带宽限制:每个 token 需从显存中读取一次完整的模型权重。当 GPU 型号被识别后,llmfit 使用其实际内存带宽来估算吞吐量:
公式:
(带宽_GB_s / 模型大小_GB) × 效率因子效率因子(0.55)考虑了内核开销、KV 缓存读取及内存控制器的影响。该方法已通过 llama.cpp 的公开基准测试(Apple Silicon、NVIDIA T4)以及实际测量结果验证。
带宽查找表覆盖了 NVIDIA(消费级 + 数据中心)、AMD(RDNA + CDNA)和 Apple Silicon 系列的约 80 款 GPU。
对于未识别的 GPU,llmfit 会回退到各后端的速度常数:
后端 超速常数 CUDA 220 Metal 160 ROCm 180 SYCL 100 CPU (ARM) 90 CPU (x86) 70 NPU (Ascend) 390 回退公式:
K / params_b × 量化速度倍增因子,其中对 CPU 卸载(0.5×)、仅 CPU 运行(0.3×)以及 MoE 专家切换(0.8×)均设有惩罚。契合度分析 -- 每个模型都会评估其内存兼容性:
运行模式:
- GPU -- 模型可完全容纳在显存中。推理速度快。
- MoE -- 专家混合架构,采用专家卸载策略。活跃专家位于显存,不活跃专家位于内存。
- CPU+GPU -- 显存不足,部分数据溢出至系统内存,同时进行部分 GPU 卸载。
- CPU -- 无 GPU。模型完全加载到系统内存中。
契合度等级:
- 完美 -- 在 GPU 上达到推荐内存要求。需要 GPU 加速。
- 良好 -- 有余量,适合专家卸载或 CPU+GPU 模式。
- 临界 -- 内存较为紧张,或仅限 CPU 运行(仅 CPU 模式一律归于此)。
- 过于紧张 -- 显存或系统内存均不足。
模型数据库
模型列表由 scripts/scrape_hf_models.py 生成,这是一段独立的 Python 脚本(仅使用标准库,无需 pip 依赖),用于查询 HuggingFace REST API。涵盖数百个模型及提供商,包括 Meta Llama、Mistral、Qwen、Google Gemma、Microsoft Phi、DeepSeek、IBM Granite、Allen Institute OLMo、xAI Grok、Cohere、BigCode、01.ai、Upstage、TII Falcon、HuggingFace、Zhipu GLM、Moonshot Kimi、Baidu ERNIE 等。爬虫会自动通过模型配置文件(num_local_experts、num_experts_per_tok)及已知架构映射检测 MoE 架构。
模型类别涵盖通用、编码(CodeLlama、StarCoder2、WizardCoder、Qwen2.5-Coder、Qwen3-Coder)、推理(DeepSeek-R1、Orca-2)、多模态/视觉(Llama 3.2 Vision、Llama 4 Scout/Maverick、Qwen2.5-VL)、聊天、企业级(IBM Granite)以及嵌入(nomic-embed、bge)等。
完整列表请参阅 MODELS.md。
要刷新模型数据库:
# 自动更新(推荐)
make update-models
# 或直接运行脚本
./scripts/update_models.sh
# 或手动操作
python3 scripts/scrape_hf_models.py
cargo build --release
爬虫会将数据写入 data/hf_models.json,并通过 include_str! 将其嵌入二进制文件中。自动更新脚本会备份现有数据,验证 JSON 输出,并重新构建二进制文件。
默认情况下,爬虫会为模型补充来自 unsloth 和 bartowski 等提供商的已知 GGUF 下载源。结果会缓存到 data/gguf_sources_cache.json(有效期 7 天),以避免重复调用 API。如需加快抓取速度,可使用 --no-gguf-sources 参数跳过补充下载源的步骤。
项目结构
src/
main.rs -- CLI 参数解析、入口点、TUI 启动
hardware.rs -- 系统内存/CPU/GPU 检测(多 GPU、后端识别)
models.rs -- 模型数据库、量化层级、动态量化选择
fit.rs -- 多维度评分(Q/S/F/C)、速度估算、MoE 分载
providers.rs -- 运行时提供者集成(Ollama、llama.cpp、MLX、Docker Model Runner、LM Studio)、安装检测、拉取/下载
display.rs -- 经典 CLI 表格渲染 + JSON 输出
tui_app.rs -- TUI 应用程序状态、过滤器、导航
tui_ui.rs -- TUI 渲染(ratatui)
tui_events.rs -- TUI 键盘事件处理(crossterm)
data/
hf_models.json -- 模型数据库(206 个模型)
skills/
llmfit-advisor/ -- OpenClaw 技能,用于硬件感知的模型推荐
scripts/
scrape_hf_models.py -- HuggingFace API 爬虫
update_models.sh -- 自动化数据库更新脚本
install-openclaw-skill.sh -- 安装 OpenClaw 技能
Makefile -- 构建和维护命令
发布到 crates.io
Cargo.toml 已包含必要的元数据(描述、许可证、仓库)。发布步骤如下:
# 先进行干运行以捕获问题
cargo publish --dry-run
# 正式发布(需要 crates.io API token)
cargo login
cargo publish
在发布前,请确保:
Cargo.toml中的版本号正确(每次发布都需递增)。- 仓库根目录下存在
LICENSE文件。如果缺失,可使用以下命令创建:
# 对于 MIT 许可证:
curl -sL https://opensource.org/license/MIT -o LICENSE
# 或者自行编写许可证内容。`Cargo.toml` 中已声明 license = "MIT"。
data/hf_models.json已提交。该文件会在编译时嵌入,必须存在于发布的 crate 中。Cargo.toml中的exclude列表应将target/、scripts/和https://oss.gittoolsai.com/images/AlexsJones_llmfit_readme_bfe3c444a49a.gif排除在外,以减小下载包的大小。
更新发布步骤如下:
# 递增版本号
# 编辑 Cargo.toml:version = "0.2.0"
cargo publish
依赖项
| Crate | 用途 |
|---|---|
clap |
使用 derive 宏进行 CLI 参数解析 |
sysinfo |
跨平台内存和 CPU 检测 |
serde / serde_json |
用于模型数据库的 JSON 反序列化 |
tabled |
CLI 表格格式化 |
colored |
CLI 彩色输出 |
ureq |
用于运行时/提供者 API 集成的 HTTP 客户端 |
ratatui |
终端 UI 框架 |
crossterm |
ratatui 的终端输入输出后端 |
运行时提供者集成
llmfit 支持多种本地运行时提供者:
- Ollama(基于守护进程/API 的拉取)
- llama.cpp(直接从 Hugging Face 下载 GGUF 文件并检测本地缓存)
- MLX(Apple Silicon / mlx-community 模型缓存 + 可选服务器)
- Docker Model Runner(Docker Desktop 内置的模型服务)
- LM Studio(具有 REST API 的本地模型服务器,支持模型管理和下载)
当一个模型有多个兼容的提供者可用时,在 TUI 中按下 d 键会打开提供者选择模态框。
Ollama 集成
llmfit 与 Ollama 集成,用于检测您已安装哪些模型,并直接从 TUI 下载新模型。
要求
- Ollama 必须已安装并正在运行(
ollama serve或 Ollama 桌面应用)。 - llmfit 会连接到
http://localhost:11434(Ollama 的默认 API 端口)。 - 无需额外配置——只要 Ollama 在运行,llmfit 就会自动检测到它。
远程 Ollama 实例
要连接到运行在不同机器或端口上的 Ollama,可以设置 OLLAMA_HOST 环境变量:
# 连接到特定 IP 和端口的 Ollama
OLLAMA_HOST="http://192.168.1.100:11434" llmfit
# 通过主机名连接
OLLAMA_HOST="http://ollama-server:666" llmfit
# 适用于所有 TUI 和 CLI 命令
OLLAMA_HOST="http://192.168.1.100:11434" llmfit --cli
OLLAMA_HOST="http://192.168.1.100:11434" llmfit fit --perfect -n 5
这在以下场景中非常有用:
- 在一台机器上运行 llmfit,而 Ollama 在另一台机器上提供服务(例如,GPU 服务器 + 笔记本客户端)。
- 连接到运行在 Docker 容器中且使用自定义端口的 Ollama。
- 在反向代理或负载均衡器后使用 Ollama。
工作原理
启动时,llmfit 会查询 GET /api/tags 来列出您已安装的 Ollama 模型。每个已安装的模型在 TUI 的 Inst 列中都会显示一个绿色的 ✓。系统栏会显示 Ollama: ✓ (N 已安装)。
当您对某个模型按下 d 键时,llmfit 会向 Ollama 发送 POST /api/pull 请求来下载该模型。对应的行会高亮显示,并带有动画进度条实时显示下载进度。下载完成后,该模型即可立即通过 Ollama 使用。
如果 Ollama 未运行,与 Ollama 相关的操作会被跳过;TUI 仍会支持其他提供者,例如 llama.cpp(如果可用)。
llama.cpp 集成
llmfit 与 llama.cpp 集成,作为 TUI 和 CLI 中的运行时/下载提供者。
要求:
llama-cli或llama-server必须在PATH中可用(用于运行时检测)。- 需要有网络访问权限,以便从 Hugging Face 下载 GGUF 文件。
工作原理:
- llmfit 会将 HF 模型映射到已知的 GGUF 仓库(并提供启发式回退方案)。
- 将 GGUF 文件下载到本地 llama.cpp 模型缓存中。
- 当本地存在匹配的 GGUF 文件时,会标记该模型已安装。
Docker Model Runner 集成
llmfit 与 Docker Model Runner 集成,后者是 Docker Desktop 内置的模型服务功能。
要求:
- Docker Desktop 必须启用 Model Runner 功能。
- 默认端点为
http://localhost:12434。
工作原理:
- llmfit 会查询
GET /engines来列出 Docker Model Runner 中可用的模型。 - 模型会通过 Ollama 式的标签映射与 HF 数据库匹配(Docker Model Runner 使用
ai/<tag>命名)。 - 在 TUI 中按下
d键会通过docker model pull进行拉取。
远程 Docker Model Runner 实例
要连接到运行在不同主机或端口上的 Docker Model Runner,可以设置 DOCKER_MODEL_RUNNER_HOST 环境变量:
DOCKER_MODEL_RUNNER_HOST="http://192.168.1.100:12434" llmfit
LM Studio 集成
llmfit 与 LM Studio 集成,作为本地模型服务器,并内置模型下载功能。
要求:
- LM Studio 必须运行且已启用本地服务器
- 默认端点:
http://127.0.0.1:1234
工作原理:
- llmfit 通过
GET /v1/models查询 LM Studio 中可用的模型列表 - 在 TUI 中按下
d键会触发通过POST /api/v1/models/download进行下载 - 下载进度通过轮询
GET /api/v1/models/download-status来跟踪 - LM Studio 直接接受 HuggingFace 模型名称,因此无需进行名称映射
远程 LM Studio 实例
若要连接到不同主机或端口上的 LM Studio,请设置 LMSTUDIO_HOST 环境变量:
LMSTUDIO_HOST="http://192.168.1.100:1234" llmfit
模型名称映射
llmfit 的数据库使用 HuggingFace 模型名称(例如 Qwen/Qwen2.5-Coder-14B-Instruct),而 Ollama 使用自己的命名方案(例如 qwen2.5-coder:14b)。llmfit 维护了一个准确的映射表,确保安装检测和拉取操作能够解析为正确的模型。每个映射都是精确的——qwen2.5-coder:14b 映射的是 Coder 模型,而不是基础的 qwen2.5:14b。
平台支持
- Linux -- 完全支持。可通过
nvidia-smi(NVIDIA)、rocm-smi(AMD)、sysfs/lspci(Intel Arc)以及npu-smi(Ascend)检测 GPU。 - macOS(Apple Silicon) -- 完全支持。通过
system_profiler检测统一内存。VRAM 即系统 RAM(共享池)。模型通过 Metal GPU 加速运行。 - macOS(Intel) -- 可检测 RAM 和 CPU。如果安装了
nvidia-smi,则可检测独立 GPU。 - Windows -- 可检测 RAM 和 CPU。如果已安装
nvidia-smi,则可检测 NVIDIA GPU。 - Android / Termux / PRoot -- 通常可以检测 CPU 和 RAM,但目前不支持 GPU 自动检测。移动 GPU(如 Adreno)通常无法通过 llmfit 使用的桌面/服务器探测接口被识别。
GPU 支持
| 厂商 | 检测方法 | VRAM 报告 |
|---|---|---|
| NVIDIA | nvidia-smi |
精确的专用 VRAM |
| AMD | rocm-smi |
已检测(VRAM 可能未知) |
| Intel Arc(独立) | sysfs (mem_info_vram_total) |
精确的专用 VRAM |
| Intel Arc(集成) | lspci |
共享系统内存 |
| Apple Silicon | system_profiler |
独立内存(等于系统 RAM) |
| Ascend | npu-smi |
已检测(VRAM 可能未知) |
如果自动检测失败或报告值不正确,可使用 --memory=<SIZE> 参数进行覆盖(参见上文的 [GPU 内存覆盖])。
Android / Termux 注意事项
在 Android 系统中,例如 Termux + PRoot,llmfit 通常无法通过标准的 Linux 检测路径(nvidia-smi、rocm-smi、DRM/sysfs、lspci 等)检测到移动 GPU。在这种环境下,当前实现下出现“未检测到 GPU”的情况是正常的。
如果您仍然希望在使用统一内存的手机或平板上获得 GPU 类似的推荐,可以手动覆盖内存大小:
llmfit --memory=8G fit -n 20
llmfit recommend --json --memory=8G --limit 10
这只是用于推荐和评分的临时解决方案,并不能真正检测 Android 设备上的 GPU 运行情况。
贡献
欢迎贡献,尤其是新增模型。
添加模型
- 将模型的 HuggingFace 仓库 ID(例如
meta-llama/Llama-3.1-8B)添加到scripts/scrape_hf_models.py中的TARGET_MODELS列表。 - 如果模型受限制(需要 HuggingFace 认证才能访问元数据),请在同一脚本的
FALLBACKS列表中添加一个备用条目,包含参数量和上下文长度。 - 运行自动化更新脚本:
make update-models # 或:./scripts/update_models.sh - 验证更新后的模型列表:
./target/release/llmfit list - 更新 MODELS.md,运行:
python3 << 'EOF' < scripts/...(参见提交历史中的生成脚本)。 - 打开拉取请求。
当前列表请参阅 MODELS.md,架构详情请参阅 AGENTS.md。
OpenClaw 集成
llmfit 以 OpenClaw 技能的形式提供,该技能可以让代理推荐适合硬件的本地模型,并自动配置 Ollama/vLLM/LM Studio 提供者。
安装技能
# 从 llmfit 仓库
./scripts/install-openclaw-skill.sh
# 或手动
cp -r skills/llmfit-advisor ~/.openclaw/skills/
安装完成后,您可以向 OpenClaw 代理询问以下问题:
- “我可以运行哪些本地模型?”
- “为我的硬件推荐一个编码模型”
- “用最适合我 GPU 的模型来配置 Ollama”
代理会在后台调用 llmfit recommend --json,解析结果,并提示您将最佳模型选择配置到 openclaw.json 文件中。
工作原理
该技能教会 OpenClaw 代理:
- 通过
llmfit --json system检测您的硬件 - 通过
llmfit recommend --json获取排名推荐 - 将 HuggingFace 模型名称映射到 Ollama/vLLM/LM Studio 标签
- 配置
openclaw.json中的models.providers.ollama.models
完整技能定义请参阅 skills/llmfit-advisor/SKILL.md。
替代方案
如果您正在寻找其他方法,可以查看 llm-checker —— 一个集成了 Ollama 的 Node.js 命令行工具,可以直接拉取和基准测试模型。它采用更直接的方式,通过 Ollama 在您的硬件上实际运行模型,而不是仅根据规格估算性能。如果您已经安装了 Ollama 并希望测试真实性能,这将是一个不错的选择。需要注意的是,它不支持 MoE(专家混合)架构——所有模型都被视为密集型模型,因此像 Mixtral 或 DeepSeek-V3 这样的模型的内存估算将反映总参数量,而非较小的活跃子集。
许可证
MIT
版本历史
v0.9.12026/04/05v0.9.02026/04/05v0.8.92026/04/04v0.8.82026/04/04v0.8.72026/04/03v0.8.62026/04/01v0.8.52026/03/27v0.8.42026/03/22v0.0.22026/03/22v0.8.22026/03/21v0.8.12026/03/20v0.8.02026/03/19v0.7.92026/03/18v0.7.82026/03/18v0.7.72026/03/18v0.7.62026/03/18v0.7.52026/03/18v0.7.42026/03/15v0.7.32026/03/14v0.7.22026/03/13常见问题
相似工具推荐
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
Deep-Live-Cam
Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具,用户仅需一张静态照片,即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点,让高质量的数字内容创作变得触手可及。 这款工具不仅适合开发者和技术研究人员探索算法边界,更因其极简的操作逻辑(仅需三步:选脸、选摄像头、启动),广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换,还是制作趣味短视频和直播互动,Deep-Live-Cam 都能提供流畅的支持。 其核心技术亮点在于强大的实时处理能力,支持口型遮罩(Mouth Mask)以保留使用者原始的嘴部动作,确保表情自然精准;同时具备“人脸映射”功能,可同时对画面中的多个主体应用不同面孔。此外,项目内置了严格的内容安全过滤机制,自动拦截涉及裸露、暴力等不当素材,并倡导用户在获得授权及明确标注的前提下合规使用,体现了技术发展与伦理责任的平衡。
NextChat
NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。