OpenClaw使用Ollama本地模型的实现(支持工具调用))
Ollama 的出现,让在本地跑大模型变成了一件再简单不过的事。而 OpenClaw 这个工具链,正好可以通过 Ollama 提供的 OpenAI 兼容 API 跟它无缝对接。最妙的一点是,只要你配置好了 OLLAMA_API_KEY(或者完成了认证),并且没有在配置文件里显式定义 models.providers.ollama 这个条目,OpenClaw 就能
自动发现你本地那些支持工具调用的模型

快速开始
想立刻上手?跟着这几步走就行:
- 先把 Ollama 装上,地址在这里:https://ollama.ai
- 然后拉取你需要的模型:
ollama pull llama3.3 # 或 ollama pull qwen2.5-coder:32b # 或 ollama pull deepseek-r1:32b
- 接下来,为 OpenClaw 启用 Ollama。这里有个小窍门:你随便填个值就行,因为 Ollama 本地跑并不需要真正的 API 密钥。
# 设置环境变量 export OLLAMA_API_KEY="ollama-local" # 或在配置文件中设置 openclaw config set models.providers.ollama.apiKey "ollama-local"
- 最后,直接在配置里引用 Ollama 下的模型:
{
agents: {
defaults: {
model: { primary: "ollama/llama3.3" },
},
},
}
模型发现(隐式提供商)
当你设定了 OLLAMA_API_KEY,但是没有定义 models.providers.ollama 时,奇迹就发生了。OpenClaw 会主动去连接你本地的 Ollama 实例(默认在 http://127.0.0.1:11434),并自动发现可用的模型。具体是怎么做的呢?
- 它会先去查询
/api/tags和/api/show这两个接口。 - 然后,从返回的结果里,只挑选那些报告了自己具备
tools能力的模型。 - 如果某个模型报告了
thinking能力,它就会被自动标记为reasoning类型(也就是具备推理能力)。 - 上下文窗口大小(
contextWindow)会从model_info["中读取;如果读不到,也有默认值兜底。.context_length"] maxTokens会被设置为上下文窗口值的10倍。- 当然,所有费用都被设置为
0,毕竟是本地运行。
这一套组合拳下来,你完全不需要手动去配置每个模型,OpenClaw 会自动保持一个与 Ollama 能力对齐的模型目录。想知道当前有哪些可用模型?很简单:
ollama list openclaw models list
如果你想用个新模型,直接通过 Ollama 拉取就行:
ollama pull mistral
拉取完成后,它就会自动被 OpenClaw 发现并纳入使用。需要警惕的是,如果你在配置里显式设置了 models.providers.ollama,自动发现功能就会被跳过,届时你需要手动定义每一个模型(具体方法参考下一节)。
配置
基本设置(隐式发现)
想快速启用 Ollama?环境变量是最简单粗暴的方式:
export OLLAMA_API_KEY="ollama-local"
显式设置(手动模型)
什么情况下需要用到显式配置呢?大概有这么几种场景:
- 你的 Ollama 跑在了其他主机或者非默认端口上。
- 你想手动指定上下文窗口大小,或者精确控制模型列表。
- 你想把那些没有报告工具支持能力的模型也纳入进来。
这时候,你就需要像下面这样,在配置文件里把一切交代清楚:
{
models: {
providers: {
ollama: {
// 注意:这里要用包含 /v1 的主机地址,以兼容 OpenAI API 格式
baseUrl: "http://ollama-host:11434/v1",
apiKey: "ollama-local",
api: "openai-completions",
models: [
{
id: "llama3.3",
name: "Llama 3.3",
reasoning: false,
input: ["text"],
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
contextWindow: 8192,
maxTokens: 8192 * 10
}
]
}
}
}
}
值得一提的是,如果你已经设置了 OLLAMA_API_KEY 环境变量,那么在提供商条目里其实可以省略 apiKey。OpenClaw 会自动从环境变量里获取它来进行可用性检查。
自定义基础 URL(显式配置)
接上一条,如果你的 Ollama 不在本地,又不想用自动发现,那就需要这样显式配置。但切记,这也会禁用自动发现,所有模型都得你手动定义:
{
models: {
providers: {
ollama: {
apiKey: "ollama-local",
baseUrl: "http://ollama-host:11434/v1",
},
},
},
}
模型选择
配置搞定之后,所有 Ollama 下的模型就都可以直接使用了。比如,你可以这样配置一个主模型和一个备用模型:
{
agents: {
defaults: {
model: {
primary: "ollama/llama3.3",
fallbacks: ["ollama/qwen2.5-coder:32b"],
},
},
},
}
高级用法
推理模型
当 Ollama 在 /api/show 接口中报告模型具备 thinking 能力时,OpenClaw 就会自动将其标记为推理模型。比如拉取 DeepSeek-R1 模型后,它就会自动享有这个“身份”:
ollama pull deepseek-r1:32b
模型费用
这一点无需多言,Ollama 是免费的,所有费用都自然是 $0。
上下文窗口
对于自动发现的模型,OpenClaw 会优先使用 Ollama 报告的上下文窗口值。如果报告里没有,则默认回退到 8192。当然,你也可以在显式的提供商配置里,通过覆盖 contextWindow 和 maxTokens 来获得完全的控制权。
故障排除
如果一切顺利,Ollama 很快就会成为你工具箱里的一员——但如果遇到问题呢?
Ollama 未被检测到
首先,确保 Ollama 确实在运行,并且你已经设置了 OLLAMA_API_KEY,同时
没有
models.providers.ollama 条目。你可以这样启动服务:
ollama serve
然后确认 API 是否可以正常访问:
curl http://localhost:11434/api/tags
没有可用模型
请记住,OpenClaw 的自动发现功能只对报告了工具支持的模型有效。如果你的模型没有被列出来,有两个解决办法:
- 拉取一个明确支持工具调用的模型。
- 或者在
models.providers.ollama中显式定义该模型的参数。
添加模型的操作也很直观:
ollama list # 查看已安装了哪些模型 ollama pull llama3.3 # 拉取一个新模型
连接被拒绝
这通常意味着 Ollama 没有在预期的端口上运行。检查一下:
# 看看 Ollama 进程是否存在 ps aux | grep ollama # 或者直接重启 Ollama ollama serve
另请参阅
- 模型提供商 - 所有提供商概览
- 模型选择 - 如何选择模型
- 配置 - 完整配置参考