首页 > 教程攻略 > ai教程 >OpenClaw使用Ollama本地模型的实现(支持工具调用))

OpenClaw使用Ollama本地模型的实现(支持工具调用))

来源:互联网 时间:2026-06-02 16:04:14

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

自动发现你本地那些支持工具调用的模型

,省去了不少手动配置的麻烦。

OpenClaw使用Ollama本地模型的实现(支持工具调用)

快速开始

想立刻上手?跟着这几步走就行:

  1. 先把 Ollama 装上,地址在这里:https://ollama.ai
  2. 然后拉取你需要的模型:
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。当然,你也可以在显式的提供商配置里,通过覆盖 contextWindowmaxTokens 来获得完全的控制权。

故障排除

如果一切顺利,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

另请参阅

  • 模型提供商 - 所有提供商概览
  • 模型选择 - 如何选择模型
  • 配置 - 完整配置参考