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 即可。
安装步骤:
- 前往 ollama.com/download 下载 Windows 安装包
- 双击安装,一路 Next
- 安装完成后,浏览器访问
http://localhost:11434,看到Ollama is running表示成功
拉取模型:
打开 PowerShell 或 CMD:
# 拉取 Qwen3 模型
ollama pull qwen3
# 查看已安装的模型
ollama list
# 查看模型详情(参数量、上下文长度等)
ollama show qwen3
配置局域网访问:
默认 Ollama 只监听 localhost,需要配置允许局域网访问:
- 打开系统环境变量
- 新建变量
OLLAMA_HOST,值为0.0.0.0 - 重启 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 关键配置项说明
| 字段 | 说明 | 必需 |
|---|---|---|
baseUrl | Ollama 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 请求
3.3 只需配置HOST
感谢网友指出代理问题也可通过配置HOST解决telegram网络问题,我还没试,也可做参考
四、完整配置文件
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 参数,但模型不支持。
解决:
- 配置中设置
"reasoning": false - 在 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 off | Telegram 中关闭思考模式 |
八、总结
本地模型还是太呆了些
本地部署 Ollama + Clawdbot 的主要挑战:
- 参数兼容性:
api类型和reasoning设置必须正确 - 模型能力差异:开源模型的 tool calling 能力普遍弱于 Claude
适用场景:
- 简单对话、问答
- 对隐私要求高的场景
- 想省钱的场景
不适用场景:
- 需要复杂 tool calling 的任务
- 需要高质量代码生成的场景
建议采用混合方案:日常聊天用本地模型,复杂任务切 Claude。
笔者电脑跑Qwen3的电脑实际运载情况(8.2B 参数,Q4_K_M 量化,上下文 40960 tokens)
附录: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 整理编写。