Clawdbot/OpenClaw 本地部署 Ollama/Qwen3 无消耗无token

7,920 阅读7分钟

Clawdbot/OpenClaw 本地部署 Ollama/Qwen3 无消耗无token

OpenClaw是ClawdBot最新的名字,本文内容主要讲述让 AI 助手跑在自己的服务器上,完全免费、完全私有

前言

上一篇文章介绍了如何通过 API 代理配置 Clawdbot 连接 Claude。这篇文章记录如何让 Clawdbot 连接本地部署的 Ollama 模型(以 Qwen3 为例),实现完全本地化、零成本的 AI 助手。

笔者有一台 32GB 内存、RX 7600 GRE 显卡的台式电脑专门用来部署 Ollama 跑 Qwen3 模型,放在局域网里当 AI 服务器。

环境信息:

  • Clawdbot 运行环境:macOS 14.5
  • Ollama 服务器:Windows 台式机(32GB RAM + RX 7600 GRE,局域网 IP: 192.168.31.20)
  • 模型:qwen3(8.2B 参数,Q4_K_M 量化,上下文 40960 tokens)
  • Node.js:v22.22.0

整体架构

┌─────────────────────────────────────────────────────────────┐
│                      macOS 客户端                            │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   Telegram App  ◄────►  Telegram Bot API (需魔法)           │
│        │                       │                            │
│        ▼                       ▼                            │
│   ┌─────────────────────────────────────────────────────┐   │
│   │              Clawdbot Gateway                       │   │
│   │           (本地 ws://127.0.0.1:18789)               │   │
│   └─────────────────────────────────────────────────────┘   │
│                          │                                  │
│                          ▼                                  │
│            ┌─────────────────────────────┐                  │
│            │    Ollama API (局域网)      │                  │
│            │  http://192.168.31.20:11434 │                  │
│            │        (无需魔法)           │                  │
│            └─────────────────────────────┘                  │
└─────────────────────────────────────────────────────────────┘

一、Ollama 服务端配置

笔者使用 Windows 部署,直接下载安装包一路 Next 即可。

安装步骤:

  1. 前往 ollama.com/download 下载 Windows 安装包
  2. 双击安装,一路 Next
  3. 安装完成后,浏览器访问 http://localhost:11434,看到 Ollama is running 表示成功

拉取模型:

打开 PowerShell 或 CMD:

# 拉取 Qwen3 模型
ollama pull qwen3

# 查看已安装的模型
ollama list

# 查看模型详情(参数量、上下文长度等)
ollama show qwen3

9c361751bdca304dea1d6729c9c3fe6c.png

配置局域网访问:

默认 Ollama 只监听 localhost,需要配置允许局域网访问:

  1. 打开系统环境变量
  2. 新建变量 OLLAMA_HOST,值为 0.0.0.0
  3. 重启 Ollama 服务(可以在任务管理器里结束 Ollama 进程,然后重新打开)

验证:

从 Mac 上测试连接:

curl http://192.168.31.20:11434/api/tags

能返回模型列表就说明局域网访问配置成功。


二、Clawdbot 配置

2.1 核心配置文件

文件位置: ~/.clawdbot/clawdbot.json

{
  "models": {
    "providers": {
      "ollama": {
        "baseUrl": "http://192.168.31.20:11434/v1",
        "apiKey": "ollama-local",
        "api": "openai-completions",
        "models": [
          {
            "id": "qwen3",
            "name": "Qwen3",
            "reasoning": false,
            "input": ["text"],
            "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
            "contextWindow": 32768,
            "maxTokens": 8192
          }
        ]
      }
    }
  },
  "agents": {
    "defaults": {
      "model": {
        "primary": "ollama/qwen3"
      },
      "workspace": "/Users/你的用户名/clawd"
    }
  }
}

2.2 关键配置项说明

字段说明必需
baseUrlOllama API 地址,必须加 /v1
apiKey随意填写,Ollama 不验证
api必须openai-completions
models手动定义模型列表
reasoning必须设为 false,否则会发送不支持的参数

⚠️ 踩坑点 1: api 必须是 openai-completions,不能是 openai-responses。后者是 OpenAI 新版 API,Ollama 不支持,会导致空响应。

⚠️ 踩坑点 2: reasoning 必须设为 false。设为 true 时 Clawdbot 会发送 thinking 参数,大多数 Ollama 模型不支持,会报错或返回空。


三、代理配置

这是最关键的部分。因为:

  • Telegram API 需要魔法访问
  • Ollama 在局域网,不需要走代理

如果所有请求都走代理,局域网的 Ollama 就连不上了。

3.1 智能代理脚本

创建 ~/proxy-setup.js

const { setGlobalDispatcher, ProxyAgent, Agent } = require('undici');

const proxyAgent = new ProxyAgent('http://127.0.0.1:1087');
const directAgent = new Agent();

// 不走代理的地址(局域网)
const noProxyList = [
  '192.168.',
  '10.',
  '172.16.',
  '127.0.0.1',
  'localhost'
];

const customDispatcher = {
  dispatch(opts, handler) {
    const host = opts.origin ? new URL(opts.origin).hostname : '';
    const shouldBypass = noProxyList.some(prefix => host.startsWith(prefix));
    
    if (shouldBypass) {
      console.log('[代理] 直连:', host);
      return directAgent.dispatch(opts, handler);
    } else {
      console.log('[代理] 走代理:', host);
      return proxyAgent.dispatch(opts, handler);
    }
  }
};

setGlobalDispatcher(customDispatcher);
console.log('[代理] 已启用智能代理,局域网直连');

3.2 启动脚本

创建 ~/start-clawdbot.sh

#!/bin/bash
NODE_PATH=$(npm root -g) node --require ~/proxy-setup.js $(which clawdbot) gateway --port 18789
chmod +x ~/start-clawdbot.sh

3.3 启动 Gateway

~/start-clawdbot.sh

成功启动后会看到:

[代理] 已启用智能代理,局域网直连
🦞 Clawdbot 2026.1.24-3
[gateway] 正在监听 ws://127.0.0.1:18789
[telegram] [default] 启动成功 (@你的机器人名)

发送消息时会看到:

[代理] 直连: 192.168.31.20      # Ollama 请求
[代理] 走代理: api.telegram.org  # Telegram 请求

image.png

3.3 只需配置HOST

感谢网友指出代理问题也可通过配置HOST解决telegram网络问题,我还没试,也可做参考

www.answeroverflow.com/m/146217023…


四、完整配置文件

4.1 主配置 ~/.clawdbot/clawdbot.json

{
  "meta": {
    "lastTouchedVersion": "2026.1.24-3"
  },
  "browser": {
    "enabled": true,
    "defaultProfile": "chrome"
  },
  "models": {
    "providers": {
      "ollama": {
        "baseUrl": "http://192.168.31.20:11434/v1",
        "apiKey": "ollama-local",
        "api": "openai-completions",
        "models": [
          {
            "id": "qwen3",
            "name": "Qwen3",
            "reasoning": false,
            "input": ["text"],
            "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
            "contextWindow": 32768,
            "maxTokens": 8192
          }
        ]
      }
    }
  },
  "agents": {
    "defaults": {
      "model": {
        "primary": "ollama/qwen3"
      },
      "workspace": "/Users/你的用户名/clawd",
      "compaction": {
        "mode": "safeguard"
      },
      "maxConcurrent": 4
    }
  },
  "channels": {
    "telegram": {
      "enabled": true,
      "dmPolicy": "pairing",
      "botToken": "你的机器人Token",
      "groupPolicy": "allowlist",
      "streamMode": "partial"
    }
  },
  "gateway": {
    "port": 18789,
    "mode": "local",
    "bind": "loopback",
    "auth": {
      "mode": "token",
      "token": "你的gateway_token"
    }
  }
}

五、常见问题排查

5.1 模型返回空响应

症状: 日志显示 durationMs=63(只有几十毫秒),没有实际内容返回。

原因:

  • api 设置错误(应为 openai-completions
  • reasoning 设为 true 导致发送了不支持的参数

解决:

{
  "api": "openai-completions",
  "models": [{
    "reasoning": false
  }]
}

5.2 Ollama 连接超时

症状: 日志显示 fetch failed 或超时。

原因: 代理脚本把局域网请求也代理了。

解决: 使用智能代理脚本(见第三节),让局域网地址直连。

5.3 thinking 参数报错

症状: 模型返回类似 Invalid thinking level "verbose" 的错误。

原因: Clawdbot 发送了 thinking 参数,但模型不支持。

解决:

  1. 配置中设置 "reasoning": false
  2. 在 Telegram 发送 /thinking off

5.4 Session 无效

症状: 提示 session ID is invalid or no longer exists

解决:

# 清除所有 session
clawdbot sessions prune --all
# 或
rm -rf ~/.clawdbot/agents/main/sessions/*

# 重启
clawdbot gateway stop && sleep 3 && ~/start-clawdbot.sh

5.5 Tool Calling 不工作 (没好的解决办法呆就呆在这里)

症状: 让模型执行任务时,模型说「我无法操作文件系统」。

原因: 开源模型的 tool calling 能力普遍较弱,虽然 Qwen3 支持 tools,但实际执行效果不如 Claude。

解决: 复杂任务还是建议用 Claude API。


六、与 Claude API 混合使用

推荐配置:简单聊天用本地模型,复杂任务用 Claude。

{
  "models": {
    "providers": {
      "ollama": {
        "baseUrl": "http://192.168.31.20:11434/v1",
        "apiKey": "ollama-local",
        "api": "openai-completions",
        "models": [...]
      },
      "anthropic": {
        "baseUrl": "https://你的代理地址.com",
        "apiKey": "你的API密钥",
        "api": "anthropic-messages",
        "models": []
      }
    }
  },
  "agents": {
    "defaults": {
      "model": {
        "primary": "ollama/qwen3",
        "fallback": ["anthropic/claude-sonnet-4-5-20250929"]
      }
    }
  }
}

这样当本地模型出错时,会自动回退到 Claude。


七、常用命令速查

命令说明
ollama list查看已安装模型
ollama pull <模型>下载模型
ollama rm <模型>删除模型
clawdbot status --deep查看详细状态
clawdbot models list查看可用模型
clawdbot sessions prune --all清除所有会话
clawdbot gateway stop停止网关
/thinking offTelegram 中关闭思考模式

八、总结

本地模型还是太呆了些

image.png

本地部署 Ollama + Clawdbot 的主要挑战:

  1. 参数兼容性api 类型和 reasoning 设置必须正确
  2. 模型能力差异:开源模型的 tool calling 能力普遍弱于 Claude

适用场景:

  • 简单对话、问答
  • 对隐私要求高的场景
  • 想省钱的场景

不适用场景:

  • 需要复杂 tool calling 的任务
  • 需要高质量代码生成的场景

建议采用混合方案:日常聊天用本地模型,复杂任务切 Claude。

笔者电脑跑Qwen3的电脑实际运载情况(8.2B 参数,Q4_K_M 量化,上下文 40960 tokens)

2e9e9105f504e918e7bdcc35f38678d0.png


附录:AI 知识卡片

# Clawdbot + Ollama 本地部署知识卡片
# 用途: 供 AI 模型快速理解本文核心内容

meta:
  场景: Clawdbot 连接局域网 Ollama 服务
  关键词: [Ollama, Qwen3, 本地部署, 局域网, 代理配置]
  硬件: Windows 台式机 (32GB RAM + RX 7600 GRE)

Ollama服务端:
  安装: Windows 下载安装包一路 Next
  验证: 浏览器访问 localhost:11434 显示 Ollama is running
  拉取模型: ollama pull qwen3
  局域网配置: 环境变量 OLLAMA_HOST=0.0.0.0
  远程验证: curl http://IP:11434/api/tags

Clawdbot配置:
  位置: ~/.clawdbot/clawdbot.json
  关键字段:
    baseUrl: "http://局域网IP:11434/v1"  # 必须加/v1
    apiKey: "ollama-local"  # 随意填写
    api: "openai-completions"  # 关键!不能用openai-responses
    reasoning: false  # 关键!必须false,否则发送不支持的参数

代理配置:
  问题: Telegram需要魔法,Ollama在局域网不需要
  方案: 智能代理脚本,局域网地址直连
  脚本: ~/proxy-setup.js
  启动: ~/start-clawdbot.sh

常见错误:
  空响应:
    原因: [api类型错误, reasoning设为true]
    解决: api改为openai-completions, reasoning改为false
  连接超时:
    原因: 局域网请求被代理了
    解决: 使用智能代理脚本
  thinking报错:
    原因: 模型不支持thinking参数
    解决: reasoning设为false, 发送/thinking off
  session无效:
    解决: clawdbot sessions prune --all

混合方案:
  primary: ollama/qwen3
  fallback: anthropic/claude-sonnet-4-5-20250929

本文基于 2026 年 2 月的实际配置经历撰写,由 Claude Opus 4.5 整理编写。