Clawdbot 集成 Qwen3-32B 本地部署与 18789 端口调试
1. 为什么需要这个整合方案
在本地部署大模型做聊天机器人时,直接调用 Ollama API 常遇到 Web 前端跨域报错或 Clawdbot 配置后连不上模型的问题。Clawdbot 本身不直接对接 Ollama,需要一个中间层处理协议转换、请求转发和端口映射。
整套方案的核心逻辑如下:
- 浏览器访问
http://localhost:18789进入 Clawdbot 聊天界面 - Clawdbot 将消息请求转给内部代理
- 代理转发至
http://localhost:8080(Ollama API 地址) - Ollama 调用本地 Qwen3-32B 模型生成回复并返回
整个过程无需 Docker Compose 或 Kubernetes,采用纯命令行加配置文件方式,轻量可控。
2. 环境准备与基础服务启动
2.1 确认系统前提条件
请在终端运行以下命令确认基础环境已就绪:
# 检查 Node.js 版本(Clawdbot 需要 18.x 或更高)
node --version
# 检查 Ollama 是否已安装并运行
ollama list
# 检查 Python 是否可用
python3 --version
如果 ollama list 未显示 qwen3:32B,请先拉取模型:
ollama pull qwen3:32B
注意:Qwen3-32B 为大模型,首次拉取可能需要 30 分钟以上,请确保磁盘空间充足(建议预留 25GB 以上)。必须明确指定
:32B标签,否则可能加载错版本导致后续报错。
2.2 启动 Ollama 服务并验证 API
Ollama 默认监听 127.0.0.1:11434,先手动测试原始接口是否通:
curl -X POST http://localhost:11434/api/chat \
-H "Content-Type: application/json" \
-d '{ "model": "qwen3:32B", "messages": [{"role": "user", "content": "你好"}], "stream": false }' | jq '.message.content'
如果返回'你好!很高兴见到你',说明 Ollama 工作正常。如果报错 Connection refused,请检查 Ollama 服务是否真的在后台运行(ps aux | grep ollama)。
2.3 创建轻量代理层(关键步骤)
Clawdbot 不能直连 Ollama 的 11434 端口,因为前端代码硬编码了 /v1/chat/completions 路径,而 Ollama 用的是 /api/chat。我们需要一个协议翻译器。
编写一个 Python 代理脚本,保存为 proxy_8080.py:
#!/usr/bin/env python3
import asyncio
import json
from aiohttp import web, ClientSession
OLLAMA_URL =
TIMEOUT =
():
:
data = request.json()
ollama_data = {
: data.get(, ),
: [{: m[], : m[]} m data.get(, [])],
: data.get(, ),
}
ClientSession() session:
session.post(
OLLAMA_URL, json=ollama_data, timeout=asyncio.Timeout(TIMEOUT)
) resp:
resp.status == :
response_data = resp.json()
openai_resp = {
: + ((json.dumps(data)))[:],
: ,
: (().time()),
: ollama_data[],
: [{
: ,
: {: , : response_data.get(, {}).get(, )},
:
}]
}
web.json_response(openai_resp)
:
web.Response(text= resp.text(), status=resp.status)
Exception e:
web.json_response({: (e)}, status=)
app = web.Application()
app.router.add_post(, handle_chat)
web.run_app(app, host=, port=, =)

