OpenClaw集成LiteLLM实现智能模型路由:本地+云端混合部署
在 OpenClaw 中集成 LiteLLM Proxy,通过其自定义 Hook 实现「本地小模型处理简单问题+云端思考型大模型处理复杂问题」的自动路由。复杂度路由是 LiteLLM 的功能,不是 OpenClaw 原生能力。
环境状态:OpenClaw v2026.4.1、oMLX、Qwen3.5-4B-MLX-4bit 已安装完成。
重要说明:复杂度智能路由通过 LiteLLM 的async_pre_call_hook实现,OpenClaw 本身不支持基于任务复杂度自动选择模型的功能。
OpenClaw 原生路由能力分析
OpenClaw 原生路由能力(v2026.4.1)
| 路由类型 | 支持情况 | 说明 |
|---|---|---|
| 多代理路由 | ✅ 支持 | 按 channel/account/peer 路由到不同 agent |
| 会话路由 | ✅ 支持 | 基于 session key 的路由(线程、主题) |
| 子代理分发 | ✅ 支持 | 使用 requesterOrigin 进行分发 |
| 模型故障转移 | ✅ 支持 | agents.defaults.model.fallbacks |
| 复杂度智能路由 | ❌ 不支持 | 无根据任务复杂度自动选择模型的能力 |
为什么选择 LiteLLM 方案?
flowchart TD
subgraph OpenClaw原生["OpenClaw 原生路由能力"]
A1["1️⃣ 多代理路由<br/>(Multi-Agent Routing)"] --> A1_result{✓ 根据用户/频道路由到不同 Agent<br/>✗ 不能根据任务复杂度选择模型}
A2["2️⃣ 模型故障转移<br/>(Model Failover)"] --> A2_result{✓ 模型失败时切换备用模型<br/>✗ 简单的轮询/列表切换<br/>不考虑任务复杂度}
A3["3️⃣ 复杂度智能路由<br/>(Complexity Routing)"] --> A3_result{✗ OpenClaw 完全不支持<br/>✓ 需要通过 LiteLLM Custom Hook 实现}
end
LiteLLM vs OpenClaw 原生功能对比
| 功能 | LiteLLM + Hook | OpenClaw 原生 |
|---|---|---|
| 复杂度评分 | ✅ Token + 关键词 + 代码检测 | ❌ 不支持 |
| 智能路由 | ✅ 自动选择本地/云端模型 | ❌ 不支持 |
| 故障转移 | ✅ 多层自动转移 | ✅ 基础故障转移 |
| 成本追踪 | ✅ 统一计费 | ❌ 分散计费 |
| 统一入口 | ✅ 单一 API 调用 | ❌ 需要多配置 |
结论:OpenClaw 原生路由主要用于多代理场景(不同用户/频道使用不同 Agent),而非复杂度路由(根据任务难度选择模型)。真正的智能路由必须依赖 LiteLLM 的 Custom Hook。
核心价值
通过 LiteLLM Proxy + 自定义 Hook 实现真正的本地+云端复杂度智能路由:
flowchart TB
A["用户请求"] --> B["OpenClaw Gateway"]
B --> C["LiteLLM Proxy<br/>(复杂度路由层)"]
C --> D["async_pre_call_hook<br/>(复杂度分析)"]
D --> D1["Token 数量统计"]
D --> D2["关键词模式匹配"]
D --> D3["复杂度评分算法"]
D1 --> E{评分 ≥ 阈值?}
D2 --> E
D3 --> E
E -->|是| F["astron-code-latest<br/>(云端)"]
E -->|否| G["qwen-local<br/>(本地)"]
F --> H["云端模型<br/>Astron Code<br/>(深度推理)"]
G --> I["本地模型<br/>oMLX Qwen3.5-4B<br/>(毫秒响应)"]
核心优势:
- 真正的复杂度路由:自动根据任务复杂度选择模型(LiteLLM Hook 功能)
- 零成本处理简单任务:本地模型响应简单查询
- 智能故障转移:模型不可用时自动切换
- 统一成本追踪:集中查看所有模型消费
一、架构概述
flowchart TB
subgraph OpenClaw["OpenClaw Gateway (v2026.4.1 + skill-vetter)"]
A["用户请求"]
end
A -->|/v1/chat/completions| B["LiteLLM Proxy<br/>(localhost:4000 复杂度路由层)"]
subgraph LiteLLM["LiteLLM Proxy"]
direction TB
C["complexity_router.py<br/>• 复杂度评分算法<br/>• 关键词匹配<br/>• 模型路由决策"]
D["config.yaml<br/>• 模型列表定义<br/>• 故障转移规则<br/>• Hook 注册"]
end
B --> C
B --> D
C --> E{"模型选择"}
E -->|简单任务| F["本地模型"]
E -->|复杂任务| G["云端模型"]
subgraph Local["本地模型"]
F1["oMLX Qwen3.5-4B-MLX<br/>(localhost:8000)<br/>• 零成本<br/>• 毫秒级响应"]
end
subgraph Cloud["云端模型"]
G1["Astron Code / Claude / GPT-4<br/>(api.astron.com 等)<br/>• 按量计费<br/>• 深度推理能力"]
end
F --> F1
G --> G1
重要说明:复杂度路由完全由 LiteLLM Proxy 的自定义 Hook 实现,OpenClaw 仅作为统一的 AI agent 网关。
二、LiteLLM Proxy 安装
1 | # 安装 LiteLLM Proxy (带完整依赖) |
三、复杂度路由 Hook 实现
这是核心组件,实现基于 prompt 复杂度的智能路由。
重要说明:此复杂度路由器是 LiteLLM 的自定义 Hook,不是 OpenClaw 的原生功能。需要先配置 LiteLLM Proxy,然后 OpenClaw 连接到已配置好的 Proxy。
3.1 创建复杂度路由器
创建 ~/.openclaw/litellm/complexity_router.py:
1 | """ |
3.2 复杂度评分说明
| 特征 | 分值 | 说明 |
|---|---|---|
| Token > 1000 | +4 | 超长文本 |
| Token 500-1000 | +3 | 长文本 |
| Token 200-500 | +2 | 中等长度 |
| Token 50-200 | +1 | 短文本 |
| 复杂关键词 | +1/个 | 分析、比较、设计等 |
| 简单关键词 | -2/个 | 你好、查询、翻译等 |
| 代码内容 | +1 | 包含代码标记 |
| 多个问号 | +1~2 | 深度提问 |
示例:
| 输入 | 分数 | 路由 |
|---|---|---|
| “你好” | -10 | 本地 (qwen-local) |
| “翻译 hello world” | -3 | 本地 (qwen-local) |
| “解释量子计算原理” | 3 | 云端 (astron-code-latest) |
| “分析人工智能对就业市场的影响” | 5 | 云端 (astron-code-latest) |
3.3 工具感知路由(Tool-Aware Routing)
OpenClaw 的核心能力是工具调用(Function Calling),不同工具对模型能力要求差异巨大。以下是工具场景的路由建议:
工具类型与模型匹配矩阵
| 工具类型 | 示例场景 | 推荐模型 | 原因 |
|---|---|---|---|
| 简单查询 | 查天气、查时间、简单计算 | qwen-local (本地) | 零成本、毫秒响应 |
| 文件操作 | 读取本地文件、列出目录 | qwen-local (本地) | 本地数据处理,快速响应 |
| 文件编辑 | 写代码、改配置、创建文件 | astron-code-latest (云端) | 需要代码补全和语法理解 |
| 网页搜索 | Google搜索、新闻查询 | astron-code-latest (云端) | 需要联网能力和最新知识 |
| 网页内容提取 | 抓取网页、解析HTML | astron-code-latest (云端) | 需要理解和处理结构化数据 |
| 浏览器自动化 | 填表单、点击操作、爬虫 | astron-code-latest (云端) | 需要多步推理和视觉理解 |
| 代码调试 | 修复Bug、性能分析 | astron-code-latest (云端) | 需要深度推理和复杂分析 |
| 架构设计 | 系统设计、API规划 | astron-code-latest (云端) | 需要复杂推理和多轮思考 |
| 多工具编排 | Agent子任务、多步骤工作流 | astron-code-latest (云端) | 需要长期规划和状态管理 |
工具感知路由流程图
flowchart TD
A["用户请求"] --> B{检测工具调用意图?}
B -->|无| C{文本复杂度评估}
C -->|简单| C1["qwen-local<br/>(本地)"]
C -->|复杂| C2["astron-code-latest<br/>(云端)"]
B -->|是| D{"工具类型?"}
D -->|简单查询/文件读取| E["qwen-local<br/>(本地)"]
D -->|文件编辑/网页操作| F["astron-code-latest<br/>(云端)"]
D -->|代码调试/架构设计| G["astron-code-latest<br/>(云端)"]
D -->|多工具编排| H["astron-code-latest<br/>(云端)"]
C1 --> Z["返回结果"]
C2 --> Z
E --> Z
F --> Z
G --> Z
H --> Z
增强版复杂度路由器
更新 complexity_router.py 以支持工具感知路由:
1 | """ |
工具场景路由示例
| 用户请求 | 工具检测 | 路由决策 | 模型 |
|---|---|---|---|
| “你好” | 无工具 | 简单文本 | qwen-local |
| “查一下北京天气” | simple工具 | 天气查询 | qwen-local |
| “帮我搜索OpenClaw最新消息” | medium工具 | 网页搜索 | astron-code-latest |
| “这段代码有Bug帮我看看” | complex工具 | 代码调试 | astron-code-latest |
| “分析这段Python代码的性能” | 复杂文本 | 深度分析 | astron-code-latest |
| “帮我设计一个微服务架构” | complex工具 | 架构设计 | astron-code-latest |
工具成本优化策略
| 工具类型 | 月均调用占比 | 使用模型 | 月成本(假设1000次/天) |
|---|---|---|---|
| 简单工具 | ~40% | qwen-local | $0 |
| 中等工具 | ~35% | astron-code-latest | ~$15 |
| 复杂工具 | ~25% | astron-code-latest | ~$25 |
| 总计 | 100% | 智能路由 | ~$40 |
对比全云端方案:全部使用 astron-code-latest,月成本约 $100,节省 60%。
四、LiteLLM 配置文件
创建 ~/.openclaw/litellm/config.yaml:
1 | # =========================================== |
五、环境变量配置
创建 ~/.openclaw/litellm/.env:
1 | # 云端 API Keys |
五点五、配置 LiteLLM Proxy 的复杂度路由 Hook
在启动 LiteLLM Proxy 之前,确保 Hook 已正确配置:
1 | # 1. 确保复杂度路由器文件存在 |
六、启动与验证
6.1 启动 LiteLLM Proxy
1 | cd ~/.openclaw/litellm |
6.2 验证服务
1 | # 1. 检查健康状态 |
6.3 查看日志验证路由
1 | # 查看 LiteLLM 日志 |
6.4 验证 OpenClaw 连接
1 | # 测试 OpenClaw 与 LiteLLM Proxy 的连接 |
七、OpenClaw 配置
重要说明:OpenClaw 的配置只是连接到已配置好的 LiteLLM Proxy。复杂度路由完全在 LiteLLM 层实现,OpenClaw 本身不具备此功能。
编辑 ~/.openclaw/openclaw.json:
1 | { |
八、OpenClaw 原生路由能力
8.1 多代理路由(Multi-Agent Routing)
OpenClaw 支持按渠道/用户路由到不同 Agent,这与复杂度路由是不同的概念:
1 | { |
用途:不同用户/场景使用不同 Agent,而非根据任务复杂度选择模型。
8.2 Model Failover 机制
LiteLLM 的复杂度路由与 OpenClaw 的故障转移协同工作:
flowchart TB
A["用户请求"] --> B["LiteLLM 复杂度路由<br/>(async_pre_call_hook)"]
B --> C{复杂度评分 → 模型选择}
C -->|简单| C1["qwen-local<br/>(本地)"]
C -->|复杂| C2["astron-code-latest<br/>(云端)"]
C1 & C2 --> D{模型可用?}
D -->|是| Z["返回结果"]
D -->|否| E["LiteLLM 故障转移"]
subgraph LiteLLM_Fallback["LiteLLM 故障转移"]
E["fallbacks 配置"]
E --> E1["qwen-local → astron-code-latest"]
E --> E2["astron-code-latest → astron-code-latest → qwen-local"]
end
E1 & E2 --> F{LiteLLM 层可用?}
F -->|否| G["OpenClaw Model Failover"]
subgraph OpenClaw_Fallback["OpenClaw Model Failover"]
G["agents.defaults.model.fallbacks"]
G --> G1["litellm/qwen-local → litellm/astron-code-latest → ..."]
end
G1 --> H["返回结果"]
E1 & E2 --> H
8.3 路由能力总结
| 路由类型 | 实现层 | 说明 |
|---|---|---|
| 复杂度智能路由 | LiteLLM Hook | ✅ 本文方案 |
| 多代理路由 | OpenClaw | ✅ 按用户/渠道 |
| 故障转移 | 双重 | LiteLLM + OpenClaw |
九、测试完整流程
1 | # 1. 重启 OpenClaw Gateway |
测试要点:
- 验证 LiteLLM Proxy 的复杂度路由 Hook 是否正常工作
- 确认 OpenClaw 能正确调用 LiteLLM Proxy
- 检查故障转移机制是否生效
十、成本优化效果
| 任务类型 | 比例 | 模型 | 成本 |
|---|---|---|---|
| 简单任务(问候、查询等) | ~60% | qwen-local (本地) | $0 |
| 复杂任务(分析、推理等) | ~40% | astron-code-latest | 按量计费 |
预估月成本节省(假设每日 100 次请求):
| 方案 | 本地占比 | 云端占比 | 月成本 |
|---|---|---|---|
| 全部云端 | 0% | 100% | ~$30 |
| 智能路由 | 60% | 40% | ~$12 |
十一、架构总结
flowchart TB
A["用户请求"] --> B["LiteLLM Proxy<br/>(复杂度路由层)"]
subgraph Router["async_pre_call_hook (复杂度分析)"]
B --> C["输入"]
C --> C1["Token计数"]
C1 --> C2["关键词匹配"]
C2 --> C3["复杂度评分"]
C3 --> C4{"模型选择"}
C4 -->|分数 ≥ 2| C5["astron-code-latest<br/>(云端)"]
C4 -->|分数 < 2| C6["qwen-local<br/>(本地)"]
end
B --> D["+ 故障自动转移"]
B --> E["+ 成本追踪"]
C5 & C6 --> F["模型响应"]
subgraph LocalModel["本地模型"]
F -->|简单任务 ~60%| G["oMLX Qwen3.5-4B<br/>✓ 零成本<br/>✓ 毫秒级响应<br/>✓ 数据隐私"]
end
subgraph CloudModel["云端模型"]
F -->|复杂任务 ~40%| H["Astron Code<br/>✓ 深度推理<br/>✓ 按量计费"]
end
G <-.->|故障转移| H
组件职责分工:
| 组件 | 主要职责 | 功能范围 |
|---|---|---|
| OpenClaw Gateway | AI agent 网关 | 多代理路由、会话管理、工具调用统一入口 |
| LiteLLM Proxy | 模型路由中枢 | 复杂度分析、模型选择、故障转移、成本追踪 |
| 本地模型 (oMLX) | 简单任务处理 | 零成本、快速响应、数据隐私保护 |
| 云端模型 (Astron) | 复杂任务处理 | 深度推理、知识更新、复杂计算 |
关键说明:复杂度智能路由完全由 LiteLLM 的自定义 Hook 实现,OpenClaw 提供统一的管理界面和工具调用支持。
智能路由效果:
- 简单任务 (~60%) → 本地模型 (零成本)
- 复杂任务 (~40%) → 云端模型 (按需付费)
- 故障时 → 自动转移备用模型
- 月成本节省 ~60%
十三、OpenClaw vs LiteLLM:功能对比总结
| 功能维度 | OpenClaw | LiteLLM | 本方案 |
|---|---|---|---|
| 复杂度路由 | ❌ 不支持 | ✅ Hook 实现 | ✅ 通过 LiteLLM |
| 多代理路由 | ✅ 按用户/频道 | ❌ 不支持 | ✅ OpenClaw 原生 |
| 工具调用统一 | ✅ Function Calling | ❌ 不支持 | ✅ OpenClaw 原生 |
| 模型故障转移 | ✅ 基础故障转移 | ✅ 高级故障转移 | ✅ 双重保障 |
| 成本追踪 | ❌ 分散计费 | ✅ 统一计费 | ✅ LiteLLM 统一 |
| 本地模型支持 | ✅ 通过 provider | ✅ 通过 proxy | ✅ 双重集成 |
最佳实践:
- 使用 OpenClaw 进行多代理管理和工具调用编排
- 使用 LiteLLM 进行复杂度路由和成本优化
- 组合使用 获得完整的 AI agent 解决方案
OpenClaw 官方资源
- OpenClaw 官方文档
- OpenClaw GitHub CHANGELOG
- OpenClaw LiteLLM Provider
- OpenClaw CLI Reference
- OpenClaw Help/FAQ
LiteLLM 官方资源
版本更新记录
| 日期 | 版本 | 关键更新 |
|---|---|---|
| 2026-04-01 | v2026.4.1 | /tasks 后台任务看板,Agent 本地故障转移 |
| 2026-03-23 | v2026.3.23 | Qwen endpoints,UI 优化 |
| 2026-03-22 | v2026.3.22 | ClawHub 优先,MCP 整合 |
| 2026-03-13 | v2026.3.12 | Gateway Dashboard v2,GPT-5.4/Claude 快速模式 |
| 2026-03-08 | v2026.3.7 | Context Engine 插件接口,GPT-5.4 支持 |