乐于分享
好东西不私藏

OpenClaw 实战:让不同 Agent 使用不同模型(云端+本地混合部署)

OpenClaw 实战:让不同 Agent 使用不同模型(云端+本地混合部署)
在构建多角色 AI 助手系统时,一个常见需求是:不同的机器人(Agent)使用不同的模型——有的调用云端大模型(如通义千问),有的调用本地部署的模型(如 Ollama)。这样既能享受云端模型的能力,又能利用本地模型的数据安全与低成本优势。
本文基于 OpenClaw 的真实配置案例,手把手教你如何实现一个多 Agent、多渠道、多模型混合部署的系统。你将学会:
  • 为每个 Telegram 机器人绑定一个独立的 Agent
  • 让大部分 Agent 使用云端模型,单独指定某个 Agent 使用本地 Ollama 模型
  • 解决配置中的常见错误(JSON 格式、字段缺失、API 兼容性等)
01.整体架构
我们以一个实际案例为例:
  • 8 个通用助手(小海、小龙、小智、小博、小典、小灵、小星、小月)使用云端模型(通义千问 `qwen3-coder-next`)
  • 1 个特殊助手(白洁 `baijie`)使用本地 Ollama 模型(`qwen2.5:7b-32k`)
  • 每个助手都有自己的 Telegram 机器人,互不干扰
  • 同时支持飞书渠道(所有消息统一路由给小海)
架构图:
Telegram 用户 → 不同 Bot Token → OpenClaw Gateway → 匹配 accountId → 对应 Agent → 指定模型
02.前置准备
2.1 安装 OpenClaw
bash
npm install -g openclaw
2.2 准备 Telegram 机器人
通过 [@BotFather](https://t.me/botfather) 创建多个机器人,分别获取 Bot Token。
2.3 准备本地 Ollama 服务
在另一台机器(或本机)安装 Ollama,并下载所需模型:
bash
ollama pull qwen2.5:7b-32k
ollama pull deepseek-r1:latest
确保 Ollama 服务监听在可访问的 IP 和端口(默认 `11434`)。如果要从其他机器访问,需要设置环境变量:
bash
export OLLAMA_HOST=0.0.0.0
ollama serve
03.配置文件详解
OpenClaw 的配置文件位于 `~/.openclaw/openclaw.json`(Linux/macOS)或 `%USERPROFILE%\.openclaw\openclaw.json`(Windows)。下面分模块介绍核心配置。
3.1 模型供应商(models)
我们需要定义两个供应商:
  • `coding-plan`:云端通义千问(使用 DashScope API)
  • `ollama`:本地 Ollama 服务
关键点:Ollama 的 `baseUrl` 必须包含 `/v1`,`api` 设置为 `openai-completions`,并且不要手动指定 `models` 数组,让 OpenClaw 自动发现。
json
"models": {
"providers": {
"coding-plan": {
"baseUrl": "https://coding.dashscope.aliyuncs.com/v1",
"apiKey": "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"api": "openai-completions",
"models": [
{
"id": "qwen3-coder-next",
"name": "Qwen Coder Next",
"contextWindow": 128000,
"maxTokens": 8192
}
// ... 其他云端模型
]
},
"ollama": {
"baseUrl": "http://10.10.10.103:11434/v1",
"apiKey": "ollama",
"api": "openai-completions"
// 注意:没有 models 数组,让 OpenClaw 自动发现
}
}
}
3.2 Agent 定义(agents)
每个 Agent 有一个唯一的 `id`,可以指定 `workspace`(工作目录)和 `tools` 权限。要覆盖默认模型,就在 Agent 内添加 `model` 字段
json
"agents": {
"defaults": {
"model": { "primary": "coding-plan/qwen3-coder-next" },
"workspace": "/mnt/data/2026",
"maxConcurrent": 4
},
"list": [
{
"id": "xiaohai",
"name": "小海",
"workspace": "/mnt/data/aibot/小海"
},
{
"id": "xiaolong",
"name": "小龙",
"workspace": "/mnt/data/aibot/小龙"
},
// ... 其他云端 Agent
{
"id": "baijie",
"name": "白洁",
"workspace": "/home/wei/.openclaw/workspace-baijie",
"model": {
"primary": "ollama/qwen2.5:7b-32k"   // 使用本地模型
},
"tools": { "alsoAllow": [] }
}
]
}
3.3 渠道配置(channels)
以 Telegram 为例,我们需要为每个机器人创建一个独立的 `account`,使用不同的 `botToken`。注意:每个 `accountId` 必须唯一,且不能与顶层 `default` 冲突。
json
"channels": {
"telegram": {
"enabled": true,
"dmPolicy": "pairing",
"groupPolicy": "open",
"accounts": {
"xiaohai": {
"botToken": "8574325077:AAE1fNupDWWkDjOga0ldk7FKMgZt8F-t0"
},
"xiaolong": {
"botToken": "8713161110:AAFlHI-F_23lEwnimoSai8RxHHKaODNoFcg"
},
// ... 其他账号
"baijie": {
"botToken": "8622503956:AAG5n3WXeQKu8C8Kqj66Kx6soRiKLsFiiAg"
}
}
}
}
3.4 路由绑定(bindings)
将每个 `accountId`(即 Telegram 机器人)绑定到对应的 `agentId`。OpenClaw 根据 `channel` + `accountId` 匹配消息来源,然后路由到指定 Agent。
json
"bindings": [
{
"agentId": "xiaohai",
"match": { "channel": "telegram", "accountId": "xiaohai" }
},
{
"agentId": "xiaolong",
"match": { "channel": "telegram", "accountId": "xiaolong" }
},
// ...
{
"agentId": "baijie",
"match": { "channel": "telegram", "accountId": "baijie" }
}
]
04.常见错误与解决方法
4.1 `Unrecognized key: "channels"` 或 `"bindings"` 出现在 agents.list 中
错误原因:在 Agent 内部写了 `channels` 或 `bindings` 字段,这是不允许的。
解决:将这些字段移到顶层。
4.2 `models.providers.ollama.models.0.name: expected string, received undefined`
错误原因:手动指定 `models` 数组时,每个模型对象缺少 `name` 字段。
解决:要么为每个模型加上 `"name": "xxx"`,要么删除整个 `models` 数组让 OpenClaw 自动发现。
4.3 Ollama 返回 404,但 `/api/tags` 正常
错误原因:`baseUrl` 缺少 `/v1`,或者 `api` 类型错误。
解决:`baseUrl` 必须以 `/v1` 结尾,且 `"api": "openai-completions"`。
4.4 `openclaw models list` 不显示 ollama 模型,但实际能调用
说明:这是 OpenClaw 早期版本的一个显示 bug,不影响实际功能。只要向对应 Agent 发消息,观察 Ollama 服务器 CPU 飙升或 `ollama ps` 有进程,就证明配置成功。
05.验证与测试
5.1 检查配置语法
bash
openclaw doctor --fix
5.2 重启网关
bash
openclaw gateway restart
5.3 查看模型列表(可选)
bash
openclaw models list
5.4 向机器人发消息测试
  • 向普通机器人(如小海)发消息,观察日志中模型为 `coding-plan/qwen3-coder-next`
  • 向 `baijie` 机器人发消息,同时运行 `ollama ps` 查看是否有 `qwen2.5:7b-32k` 进程
5.5 监控日志
bash
openclaw logs --follow
06.性能与成本优化建议
  • 本地模型适合:敏感数据、高频简单问答、离线环境。
  • 云端模型适合:复杂推理、多模态、需要最新知识。
  • 混合部署:根据不同 Agent 的职责分配模型,平衡成本与效果。
  • 硬件提醒:运行 7B 模型在 CPU 上会使风扇狂转,建议使用 GPU 加速(Ollama 支持 NVIDIA CUDA)。
07.总结
通过 OpenClaw 灵活的配置系统,你可以轻松实现:
  • 多个 Telegram 机器人一对一绑定不同 Agent
  • 大部分 Agent 使用高性能云端模型
  • 特定 Agent 使用本地 Ollama 模型,保护隐私并降低成本
关键是理解三个层次:渠道(Channels) → 路由(Bindings) → Agent 与模型。只要配置文件结构正确,OpenClaw 就能将不同来源的消息精准分发给不同的 AI 大脑。
如果你在配置过程中遇到问题,欢迎查看官方文档或社区讨论。祝你玩得开心,让每个机器人都拥有最适合它的“大脑”!