先把当时的情况摆出来。在 Windows 11 上用 llama.cpp b4021 的 llama-server.exe 加载 D:\models\qwen 2.5\qwen2.5-7b-q4.gguf,命令直接报 error: failed to load model from 'D:\models\qwen 2.5\...',把模型拷到 D:\m 下就能启动。

真正麻烦的地方在于,几个原因的现象几乎一样。路径里有空格,参数没有加引号被拆成两段。少数情况下是bat 里用 %1 转发参数,引号在传递过程中丢了。

还有一种情况,模型文件名含中文,控制台代码页不是 UTF-8。另外,完整路径超过 260 字符被系统截断。

第一件事是用引号包住整个模型路径再启动

.\llama-server.exe -m "D:\models\qwen 2.5\qwen2.5-7b-q4.gguf" -c 4096

接着在批处理里改用 %~1 去掉多余引号

start llama-server.exe -m "%~1" -ngl 99

然后把控制台切到 UTF-8 再试中文文件名

chcp 65001

末了启动后确认模型真的加载了

curl http://127.0.0.1:8080/v1/models

别只看报错消失,验证要多做一步。日志里打印 model loaded 与上下文长度,/v1/models 返回的 id 与文件名一致,请求不再出现 failed to load。

写脚本封装启动命令时路径一律加引号,带与号的目录还要再转义一次,别指望参数解析器替自己处理。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。

作者 9823189