OpenClaw【二、集成本地模型】

OpenClaw(一个开源的自动化爬虫与Agent框架)与本地 Ollama 部署的大模型集成,核心在于利用 Ollama 提供的 OpenAI 兼容 API。OpenClaw 通常设计为支持 OpenAI 协议,因此只需将其配置指向本地的 Ollama 服务即可。

以下是基于 2026 年主流版本的详细集成流程:


第一阶段:准备 Ollama 环境 (服务端)

在配置 OpenClaw 之前,必须确保 Ollama 服务已就绪且模型适合 Agent 任务。

1. 启动 Ollama 服务

确保 Ollama 正在运行。

# 终端执行
ollama serve

默认监听地址:http://127.0.0.1:11434

2. 选择并优化模型 (关键步骤)

OpenClaw 作为 Agent,需要模型具备较强的指令遵循能力函数调用 (Function Calling) 能力。

  • 推荐模型: qwen2.5:7b (中文好), llama3.1:8b (通用强), mistral-nemo
  • 拉取模型:
    ollama pull qwen2.5:7b
    

3. 创建高上下文专用模型 (可选但推荐)

爬虫任务通常涉及长网页内容,默认模型的上下文(Context Window)可能不足(通常为 4k 或 8k)。建议创建一个 32k 上下文的版本:

  1. 新建文件 Modelfile:
    FROM qwen2.5:7b
    PARAMETER num_ctx 32768
    SYSTEM "You are a helpful web scraping assistant. Always output valid JSON when requested."
    
  2. 构建新模型:
    ollama create qwen2.5-agent -f Modelfile
    
    记住这个模型名称 qwen2.5-agent,稍后配置要用。

第二阶段:配置 OpenClaw (客户端)

OpenClaw 的配置方式取决于其版本(CLI 交互式或配置文件)。以下是两种主流方法。

方法 A:通过环境变量配置 (最通用,推荐 Docker/脚本使用)

OpenClaw 通常读取标准的环境变量来连接 LLM 提供商。

  1. 设置环境变量:
    在运行 OpenClaw 之前,导出以下变量:

    # 指定提供商类型为 openai (因为 Ollama 兼容 OpenAI 协议)
    export LLM_PROVIDER=openai
    
    # 基础 URL 指向 Ollama 的 v1 接口 (注意末尾的 /v1)
    export OPENAI_BASE_URL=http://127.0.0.1:11434/v1
    
    # API Key (Ollama 本地不需要真实 key,填任意非空字符串,如 'ollama')
    export OPENAI_API_KEY=ollama
    
    # 指定要使用的模型名称 (必须与 ollama list 中的名称一致)
    export LLM_MODEL=qwen2.5-agent
    
  2. 启动 OpenClaw:

    openclaw run <your_task>
    

方法 B:修改配置文件 (config.json.env)

如果你使用配置文件管理,找到 OpenClaw 的配置目录(通常在 ~/.openclaw/config.json 或项目根目录)。

配置示例 (config.json):

{
  "llm": {
    "provider": "openai",
    "base_url": "http://127.0.0.1:11434/v1",
    "api_key": "ollama-local-key",
    "model": "qwen2.5-agent",
    "parameters": {
      "temperature": 0.7,
      "max_tokens": 4096,
      "stream": true
    }
  },
  "features": {
    "enable_function_calling": true, 
    "enable_rag": true
  }
}

注意:enable_function_calling 对于 OpenClaw 提取结构化数据至关重要,确保你的 Ollama 模型支持此功能(Qwen2.5 和 Llama 3.1 均支持)。


第三阶段:验证集成

在正式运行爬虫任务前,先进行连通性测试。

1. 测试 API 连通性

使用 curl 确认 OpenClaw 能访问 Ollama:

curl http://127.0.0.1:11434/v1/models

如果返回 JSON 列表包含你的模型,说明网络通畅。

2. 运行 OpenClaw 简单任务

创建一个简单的测试任务(例如提取某新闻标题),观察日志:

openclaw run --url "https://news.example.com" --task "Extract the main headline and date."

观察重点:

  • 无报错: 没有出现 Connection refused401 Unauthorized
  • 响应速度: 本地模型首字生成时间 (TTFT) 应在秒级。
  • 输出质量: 检查是否正确提取了数据。如果模型胡言乱语,可能是上下文不够(回到第一阶段调整 num_ctx)或温度参数过高。

第四阶段:高级场景与故障排查

场景 1:跨机器部署 (Docker 中的 OpenClaw 连接 宿主机的 Ollama)

如果 OpenClaw 运行在 Docker 容器中,而 Ollama 运行在宿主机:

  1. 宿主机配置: 设置 OLLAMA_HOST=0.0.0.0:11434 并重启 Ollama。
  2. 防火墙: 确保宿主机防火墙允许 11434 端口。
  3. 容器配置:
    • Linux: base_url 设为 http://host.docker.internal:11434/v1 或宿主机 IP。
    • Mac/Win: base_url 设为 http://host.docker.internal:11434/v1

常见错误及解决方案

错误现象 可能原因 解决方案
Connection refused 地址错误或 Ollama 未启动 检查 URL 是否包含 /v1;确认 ollama serve 正在运行。
401 Unauthorized API Key 为空 在配置中填入任意字符串作为 api_key (如 ollama)。
Context length exceeded 网页内容太长,超出模型限制 在 Modelfile 中增大 num_ctx 并重新 ollama create
Model not found 模型名称不匹配 运行 ollama list 核对名称,确保配置中的 model 字段完全一致。
输出格式错误 (JSON 解析失败) 模型指令遵循能力弱 换用更强的模型 (如 Qwen2.5-14B);在 System Prompt 中强调 "Output ONLY JSON"。

总结流程图

+-----------------------+
|   开始集成流程        |
+----------+------------+
           |
           v
+-----------------------+
| 1. 准备 Ollama 环境   |
| - 安装并启动服务      |
| - 命令: ollama serve  |
+----------+------------+
           |
           v
+-----------------------+
| 2. 获取模型           |
| - 命令: ollama pull   |
|   (推荐: qwen2.5:7b)  |
+----------+------------+
           |
           +------> [需要长上下文吗?] ------+
           |                                |
         (否)                              (是)
           |                                |
           |                  +-----------------------------+
           |                  | 创建自定义 Modelfile        |
           |                  | - 设置 PARAMETER num_ctx    |
           |                  | - 命令: ollama create       |
           |                  +--------------+--------------+
           |                                 |
           +<--------------------------------+
           |
           v
+-----------------------+
| 3. 配置 OpenClaw      |
| --------------------- |
| Provider: openai      |
| Base URL:             |
| http://...:11434/v1   |
| API Key: ollama       |
| Model: <你的模型名>   |
+----------+------------+
           |
           v
+-----------------------+
| 4. 验证连通性         |
| - curl 测试 /v1/models|
| - 检查是否返回模型列表|
+----------+------------+
           |
           v
+-----------------------+
| 5. 运行 OpenClaw 任务 |
| - 执行爬虫指令        |
| - 观察日志输出        |
+----------+------------+
           |
           v
+-----------------------+
|   集成成功!           |
+-----------------------+
graph TD A[安装 Ollama] --> B[拉取模型 (qwen2.5/llama3)] B --> C{需要长上下文?} C -- 是 --> D[创建 Modelfile 调大 num_ctx] D --> E[ollama create 自定义模型] C -- 否 --> F[直接使用原生模型] E --> G[配置 OpenClaw] F --> G G --> H[设置 BaseURL: .../v1] G --> I[设置 API Key: 任意值] G --> J[设置 Model Name] H & I & J --> K[启动 OpenClaw] K --> L[运行爬虫任务]
posted @ 2026-03-16 14:19  蓝迷梦  阅读(54)  评论(0)    收藏  举报