你用 ollama launch 或带 UI 的客户端起会话,模型列表里空空如也,或者只有一两个残缺条目,明明命令行 ollama list 里能看到。这类问题九成不在模型本身,而在「拉下来的名字」和「客户端查的名字」对不上,或者服务读的是另一份模型目录。这篇按从本地清单到服务配置的顺序给一套排查动作,帮你把能选的模型找回来。
你用 ollama launch 或带 UI 的客户端起会话,模型列表里空空如也,或者只有一两个残缺条目,明明命令行 ollama list 里能看到一堆。这类问题九成不在模型本身,而在「拉下来的名字」和「客户端查的名字」对不上,或者服务读的是另一份模型目录。先别急着重装,按从本地清单到服务配置的顺序走一遍,大概率能把能选的模型找回来。
下面这套排查的思路是:先确认磁盘上到底有什么,再确认客户端要什么,最后确认两边说的是不是同一件事。顺序别乱,从便宜的动作开始,改环境变量和迁目录放到最后。整套走完还不行,再去站内相关页面看别人的记录。
先确认本地到底有没有这个模型
第一步永远是在终端跑一遍模型清单命令,别在客户端里猜。看名字、标签、大小和修改时间四项,把清单里的名字复制下来,和客户端里显示或者你能填的名字逐字对比。大小写、冒号后面的标签都算数,差一个字符就是两个东西。
- 清单里只有默认标签,而客户端要的是带具体版本后缀的名字,这是标签不匹配,不是模型丢了
- 清单为空,说明根本没拉下来,或者拉到了另一个目录,先别在客户端折腾
- 拉取失败但没报错的情况也要看:磁盘空间不足和网络中断都可能留下一个空壳条目
- 大小显示异常小,基本就是没下完,删掉重拉比修它快
- 修改时间对不上,说明你看的和你以为在用的不是同一份文件
名字和标签对不上,是最常见的一种
从教程、聊天记录或别人的配置里复制来的名字,经常带额外前缀或后缀。客户端一般是按精确字符串匹配的,多一个字符就查不到,界面上也不会给你任何提示,只是列表里没有。这时候最容易误判成「客户端坏了」。
| 现象 | 更可能的原因 | 先做什么 |
|---|---|---|
| 清单有条目,客户端列表空 | 名字或标签不匹配 | 把清单里的完整名字原样复制进去 |
| 列表里只缺某一个 | 那个标签被删了或没拉全 | 按清单里现存的名字重新选 |
| 同名条目出现两次 | 两个标签分别拉过 | 确认客户端认的是哪一个标签 |
| 手填能跑、列表里没有 | 客户端列表没刷新 | 退出重进客户端再看 |
- 复制而不是手打在终端里选中清单中的完整名字,复制到客户端的输入框。手打最容易错在冒号和连字符上,肉眼还看不出来。
- 手填一次做验证如果客户端支持手动输入模型名,先手填一次。能正常跑起来,就说明模型和服务都没问题,纯粹是列表刷新或匹配逻辑的事。
- 同名不同标签分开看同名不同标签属于两个独立条目,删掉其中一个不影响另一个。但客户端可能只认被删的那个,删之前先确认客户端当前在用哪个。
模型目录被改过,服务读的和你看的不是一处
模型存在哪个目录是由环境变量控制的。你改过这个变量之后,旧模型还留在原来的位置,自然不会出现在新目录的清单里。判断方法很直接:清单命令的输出,和文件管理器里实际占空间的位置对不上,那就是两处目录,得先统一。
- 存储目录变量
- 决定模型文件放在哪,改过之后新旧两份目录会同时存在
- 目录迁移
- 要把整份目录搬过去,只搬单个模型文件会导致清单读取异常
- 多用户或容器
- 宿主和容器各有一套目录,先确定客户端连的是哪个服务的那一份
- 相对路径
- 配置里写相对路径时,实际位置取决于服务从哪个目录启动,很容易错位
- 先找一份能跑的模型作为参照,看它落在哪个目录,再判断其他模型是不是在同一处
- 迁移完留一份旧目录的备份,别急着删,确认客户端能列出来再说
- 容器场景下用挂载的方式统一目录,比在两边各存一份省事
- 改完环境变量必须重启服务,否则读的还是旧路径
服务没重启,客户端拿的是旧清单
模型是磁盘上的静态文件,但模型清单通常是服务启动时读一次然后缓存的。你新增或迁移了模型,不重启服务,清单还是旧的那份。客户端本身也常缓存一份列表,反复点刷新不一定有用,退出重进更可靠。
另外注意服务监听地址。如果服务监听在非默认地址,客户端可能连到了另一台机器或者另一个端口的空目录,两边的清单自然不一致。这种情况下的典型表现是:本机命令行看得到,客户端里什么都看不到。
- 固定排查顺序本地清单 → 名字逐字比对 → 存储目录 → 重启服务 → 重启客户端。按这个顺序走,从便宜的动作开始,不要一上来就改配置。
- 确认服务地址和端口看客户端配置里连的地址,和本机服务实际监听的地址对不对。对不上就先改地址,别去动模型。
- 重启后立刻验证服务重启完先用清单命令确认一次,再打开客户端。两步中间不要做别的改动,出问题才知道是哪一步引起的。
哪些情况这套排查不适用
上面这套流程针对的是「本地文件和服务配置」这一类原因。有几类情况按这个查是白费功夫,得换个方向:模型文件本身损坏,或者量化格式不受当前运行环境支持时,它能被列出来,但一加载就失败,那不是清单问题。
还有用了外部推理框架托管的情况,Ollama 只是转发请求,模型清单由对端决定,得去对端查。客户端是第三方应用而非官方工具时,它的模型发现逻辑可能只认特定接口,甚至只认某几个字段,这种情况要看该应用自己的文档,不能拿官方工具的排查路径套。
| 看起来像清单问题 | 实际原因 | 去哪儿查 |
|---|---|---|
| 列表里能看到,点进去报错 | 模型文件损坏或格式不支持 | 看服务的加载日志 |
| 客户端完全看不到模型 | 客户端是对端托管,清单由对端给 | 查对端服务的配置 |
| 第三方客户端列表为空 | 只认特定接口或字段 | 看该应用自己的文档 |
| 换台机器就正常 | 本机服务或目录配置有差异 | 对比两边的环境变量 |
选不到模型这件事,先分清是「名字对不上」还是「模型不在」,两边的动作差得很远。下一步如果你排查完还是没头绪,可以把清单输出和客户端现象对照着记下来,再到站内看看别人遇到过的类似情况,以及各家客户端和中转服务的兼容说明。href 是 /tools/speed-test→
常见问题
命令行能看到模型,为什么 launch 或客户端里选不到?
大概率是名字没对上:客户端按精确字符串找,和清单里的名字差一个标点或标签都算不同条目。把清单里的完整名字原样复制过去试一次;能跑通就是列表缓存问题,重启客户端即可。
改过模型存储目录之后模型全不见了,怎么找回?
旧模型还在原来的目录里,只是新目录清单是空的。两个办法:把旧目录整体搬到新位置,或者把环境变量改回去再重启服务。注意整份目录搬,只搬单个文件容易让清单读取出错。
重启服务还是不出现在列表里,下一步查什么?
确认客户端连的是哪台机器哪个端口,是不是连到了一个空目录的服务实例;再看模型文件是否完整、格式是否受支持。到 质量检测(/tools/quality-check) 这类工具页跑一遍基础校验,能快速区分是清单问题还是文件本身有问题。