Skill: forrestinfo/openclaw-llm-router (version 2.1.0)

--- name: openclaw-llm-router version: 2.0.0 description: Intelligent model router for OpenClaw. Reads your local config, classifies available models into three tiers (Premium / Balanced / Economy), and routes each task to the best model in your active tier. Supports auto-routing by task type, manual model/tier override, and web-search-powered model library updates. metadata: openclaw: requires: env: [] bins: - python3 primaryEnv: "" emoji: "🦞" homepage: https://clawhub.ai/skills/openclaw-llm-router tags: - routing - multi-model - llm - productivity - chinese --- # OpenClaw LLM Router v2.0 ## 角色 你是 OpenClaw 的智能模型调度员。每次收到用户请求时： 1. 读取用户本地 OpenClaw 配置，找出已激活模型 2. 将这些模型归类到三个套餐（高质量 / 平衡 / 经济） 3. 根据任务类型 + 当前套餐，路由到最合适的具体模型 4. 支持用户手动切换套餐或直接指定模型 --- ## 执行流程 ``` Step 0 → 读取本地配置，检测已激活模型 Step 1 → 将已激活模型归入三档套餐 Step 2 → 检测手动指定（套餐 or 具体模型） Step 3 → 分析任务类型 Step 4 → 在当前套餐内路由最优模型 Step 5 → 输出路由结果 ``` --- ## Step 0：读取 OpenClaw 本地配置 按优先级扫描以下路径： ``` 1. ~/.openclaw/openclaw.json ← 主配置（最常见） 2. ~/.openclaw/models.json ← 模型专项配置 3. ~/.clawdbot/clawdbot.json ← 旧版迁移路径 4. $OPENCLAW_CONFIG 环境变量路径 5. ./openclaw.json ← 当前目录 ``` > 如需用脚本自动读取配置，可运行：`python3 skills/openclaw-llm-router/scripts/read_config.py` 提取以下字段： - `agents.defaults.model` — 当前默认模型 - `agents.defaults.models` — 模型 allowlist（若存在则只在此范围内路由） - `env` 中各 provider 的 API Key 存在性 - `models.providers` — 自定义 provider **已激活 provider 判断（按 env key 检测）：** | Provider | 检测 Key | |---------|---------| | Anthropic (Claude) | `ANTHROPIC_API_KEY` | | OpenAI | `OPENAI_API_KEY` | | OpenAI Codex | OAuth token 文件存在 | | Google (Gemini) | `GEMINI_API_KEY` 或 `GOOGLE_API_KEY` | | DeepSeek | `DEEPSEEK_API_KEY` | | xAI (Grok) | `XAI_API_KEY` | | Moonshot (Kimi) | `MOONSHOT_API_KEY` | | MiniMax | `MINIMAX_API_KEY` | | Zhipu (GLM) | `ZAI_API_KEY` | | Mistral | `MISTRAL_API_KEY` | | OpenRouter | `OPENROUTER_API_KEY` | | Kilocode | `KILOCODE_API_KEY` | | Ollama（本地）| `localhost:11434` 响应正常 | **未找到配置时：** 提示"未检测到 OpenClaw 配置，展示全量套餐供参考。请先运行 `openclaw onboard` 完成配置。" --- ## Step 1：三档套餐分类 将已激活 provider 的模型归入对应档位。完整模型列表见 `references/model-tiers.md`。 ### 🏆 高质量套餐（Premium） 最强推理、最可靠工具调用、200k+ 上下文。适合复杂代码、Agent 编排、重要决策。**成本最高。** 从已激活 provider 中按优先级选： ``` Anthropic → claude-opus-4-6 OpenAI → gpt-5.1-codex / openai-codex/gpt-5.3-codex Google → gemini-3.1-pro-preview / gemini-3-pro-preview / gemini-2.5-pro xAI → grok-4.20 / grok-4 Moonshot → kimi-k2.5 Mistral → mistral-large-2 OpenRouter → （以上模型通过 OpenRouter 访问） ``` ### ⚖️ 平衡套餐（Balanced） 能力与成本最优平衡。适合日常任务、代码生成、内容创作。**OpenClaw 社区最推荐。** ``` Anthropic → claude-sonnet-4-6 / claude-sonnet-4-5 OpenAI → gpt-4o / gpt-5.2 Google → gemini-3-flash-preview / gemini-2.5-flash xAI → grok-4-fast / grok-4.1-fast / grok-code-fast DeepSeek → deepseek-r1 / deepseek-v3.2 Moonshot → kimi-k2 MiniMax → m2.5 / m2.1 Zhipu → glm-5 / glm-4.7 Qwen → qwen3-max / qwen3-coder Ollama → llama-3.3-70b / qwen3-coder（本地） ``` ### 💰 经济套餐（Economy） 极低成本，适合高频简单任务、心跳、后台子 Agent。**质量有取舍。** ``` Anthropic → claude-haiku-4-5 / claude-haiku-3-5 OpenAI → gpt-4o-mini / gpt-4.1-mini Google → gemini-3.1-flash-lite-preview / gemini-2.5-flash / gemini-2.0-flash xAI → grok-4.1-mini / grok-3-mini DeepSeek → deepseek-v3.2 / deepseek-v3 MiniMax → m2.5-lightning / m2.1-lightning Zhipu → glm-4.7-flash / kilocode/glm-5-free（免费） Qwen → qwen3-coder-plus / qwen2.5-coder-32b Ollama → llama-3.2-3b / llama-3.1-8b（本地零成本） ``` **降级规则：** 当前套餐内无可用模型 → 自动降一档并提示用户。 --- ## Step 2：检测手动指定 ### 手动指定套餐 - "高质量" / "Premium" / "最好的" / "不限成本" → 切换高质量套餐 - "平衡" / "Balanced" / "默认" → 切换平衡套餐 - "经济" / "Economy" / "最便宜" / "省钱" → 切换经济套餐 ### 手动指定具体模型 "用 [模型名]" / "切换到 [模型名]" / "让 Claude/GPT/Gemini 来" - ✅ 已激活 → 直接使用，注明所属套餐档位 - ❌ 未激活 → 提示未启用，列出同档可用替代 --- ## Step 3：任务类型分类 | 任务类型 | 特征 | |---------|------| | `heavy_coding` | 多文件重构、架构设计、复杂 debug、生产代码 | | `light_coding` | 简单脚本、代码片段、SQL、配置文件 | | `reasoning` | 分析、推理、数学、论证、对比决策 | | `chinese_writing` | 中文长文、报告、公文、策划书 | | `general_writing` | 英文写作、翻译、摘要、邮件 | | `agent_task` | 多步骤自动化、工具调用链 | | `long_context` | 长文档分析、大代码库 | | `quick_query` | 简单问答、快速分类 | | `heartbeat` | 心跳检测、定时任务 | --- ## Step 4：套餐内路由 ### 高质量套餐 | 任务 | 首选 | 备选 | |-----|------|------| | heavy_coding | claude-opus-4-6 | gpt-5.1-codex | | reasoning | claude-opus-4-6 | grok-4 | | agent_task | claude-opus-4-6 | gpt-5.1-codex | | long_context | gemini-3.1-pro-preview | claude-opus-4-6 | | chinese_writing | kimi-k2.5 | claude-opus-4-6 | | light_coding / general / quick | claude-opus-4-6 | gpt-5.1-codex | | heartbeat | ⚠️ 建议降级到平衡/经济 | — | ### 平衡套餐 | 任务 | 首选 | 备选 | |-----|------|------| | heavy_coding | claude-sonnet-4-6 | gpt-4o | | reasoning | claude-sonnet-4-6 | deepseek-r1 | | agent_task | claude-sonnet-4-6 | gpt-4o | | long_context | gemini-2.5-flash | gemini-3-flash-preview | | chinese_writing | deepseek-v3.2 | kimi-k2 | | light_coding | deepseek-v3.2 | claude-sonnet-4-6 | | general_writing | claude-sonnet-4-6 | gpt-4o | | quick_query / heartbeat | grok-4-fast | deepseek-v3.2 | ### 经济套餐 | 任务 | 首选 | 备选 | |-----|------|------| | heavy_coding | deepseek-v3.2 | claude-haiku-4-5 | | reasoning | deepseek-v3.2 | gpt-4o-mini | | agent_task | claude-haiku-4-5 | gpt-4o-mini | | long_context | gemini-2.5-flash | gemini-2.0-flash | | chinese_writing | deepseek-v3.2 | qwen3-coder-plus | | light_coding | deepseek-v3.2 | gpt-4.1-mini | | general_writing | gpt-4o-mini | claude-haiku-4-5 | | quick_query / heartbeat | gemini-3.1-flash-lite-preview | deepseek-v3.2 | --- ## Step 5：输出路由结果 ``` 🔀 OpenClaw LLM Router 📦 当前套餐：[高质量 / 平衡 / 经济] 📌 推荐模型：[provider/model-id] 🏢 提供商：[Provider] 🎯 任务类型：[类型] 💡 选择理由：[1-2句] 💰 成本参考：[如 $3/$15 per M tokens] 🔁 备选方案：[备选模型] — [理由] 💡 说"切换高质量/平衡/经济"随时切换套餐 ``` --- ## 特殊指令 | 指令 | 动作 | |------|------| | "我配了哪些模型" | 列出已激活 provider 及三档可用模型 | | "三档对比" | 展示三档成本、模型、适用场景对比 | | "更新模型库" | 重读配置 + web search 检查新模型 | | "推荐配置" | 根据已激活 provider 推荐最优三档组合 | | "帮我省钱" | 切换经济套餐并估算节省金额 | --- ## 参考文件 - `references/model-tiers.md` — 全量模型分档明细（含定价，按 provider 二级分类） - `references/openclaw-config-format.md` — 配置文件格式说明 - `scripts/read_config.py` — 本地配置读取脚本（`python3 scripts/read_config.py`）

path: README.md
content: # 🦞 OpenClaw LLM Router

**智能多模型路由器** — 自动读取你的 OpenClaw 配置，将可用模型分为三个套餐，按任务类型路由到最合适的模型。

[![ClawHub](https://img.shields.io/badge/ClawHub-openclaw--llm--router-blue)](https://clawhub.ai/skills/openclaw-llm-router)
[![Version](https://img.shields.io/badge/version-2.0.0-green)](https://clawhub.ai/skills/openclaw-llm-router)
[![License](https://img.shields.io/badge/license-MIT--0-lightgrey)](https://clawhub.ai/skills/openclaw-llm-router)

---

## 安装

```bash
clawdhub install openclaw-llm-router
```

安装后**重启 OpenClaw** 使 skill 生效，然后验证：

```bash
openclaw skills list --eligible | grep llm-router
```

---

## 三档套餐

| 套餐 | 代表模型 | 输出价/M | 适合 |
|------|---------|---------|------|
| 🏆 高质量 | Claude Opus 4.6 | $75 | 复杂代码、Agent、重要决策 |
| ⚖️ 平衡 | Claude Sonnet 4.6 | $15 | 日常任务、内容创作（**推荐**）|
| 💰 经济 | GPT-4o mini / DeepSeek V3.2 | $0.42–0.60 | 心跳、快速问答、后台任务 |

---

## 使用方法

### 自动路由
直接提问，路由器自动选择套餐内最优模型：
```
帮我重构这个 Python 模块
→ 🏆 高质量 → claude-opus-4-6（heavy_coding 任务）
```

### 切换套餐
```
切换经济套餐
用平衡模式帮我写一份报告
最好的模型来分析这段代码
```

### 手动指定模型
```
用 DeepSeek 帮我写这篇中文文章
让 GPT-4o 来做这个分析
```

### 查看已配置模型
```
我配了哪些模型
三档套餐对比
```

---

## 支持的 Provider

| Provider | 套餐覆盖 | 检测方式 |
|---------|---------|---------|
| Anthropic (Claude) | 全三档 | `ANTHROPIC_API_KEY` |
| OpenAI (GPT) | 全三档 | `OPENAI_API_KEY` |
| OpenAI Codex | 高质量 | OAuth token |
| Google (Gemini) | 全三档 | `GEMINI_API_KEY` |
| DeepSeek | 平衡 + 经济 | `DEEPSEEK_API_KEY` |
| xAI (Grok) | 全三档 | `XAI_API_KEY` |
| Moonshot (Kimi) | 高质量 + 平衡 | `MOONSHOT_API_KEY` |
| MiniMax | 平衡 + 经济 | `MINIMAX_API_KEY` |
| Zhipu (GLM) | 平衡 + 经济 | `ZAI_API_KEY` |
| Mistral | 高质量 | `MISTRAL_API_KEY` |
| OpenRouter | 全三档（代理）| `OPENROUTER_API_KEY` |
| Kilocode | 全三档（代理）| `KILOCODE_API_KEY` |
| Ollama（本地）| 平衡 + 经济 | localhost:11434 |

---

## 本地配置诊断

```bash
python3 ~/.openclaw/skills/openclaw-llm-router/scripts/read_config.py
```

输出示例：
```
🦞 OpenClaw LLM Router — 配置读取
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ 配置文件: ~/.openclaw/openclaw.json

已激活 Providers（3）: anthropic, google, deepseek

🏆 高质量套餐（1 个可用）:
  • anthropic/claude-opus-4-6

⚖️ 平衡套餐（4 个可用）:
  • anthropic/claude-sonnet-4-6
  • google/gemini-3-flash-preview
  • deepseek/deepseek-r1
  • deepseek/deepseek-v3.2

💰 经济套餐（4 个可用）:
  • anthropic/claude-haiku-4-5
  • google/gemini-3.1-flash-lite-preview
  • google/gemini-2.5-flash
  • deepseek/deepseek-v3.2
```

---

## 文件结构

```
openclaw-llm-router/
├── SKILL.md                          # 核心路由逻辑（OpenClaw 加载此文件）
├── README.md                         # 本文档
├── scripts/
│   └── read_config.py                # 配置读取诊断脚本
└── references/
    ├── model-tiers.md                # 全量模型分档明细（含定价）
    └── openclaw-config-format.md     # 配置文件格式说明
```

---

## 更新日志

### v2.0.0
- 全新三档套餐体系（高质量 / 平衡 / 经济）
- 覆盖 13 个 provider、70+ 个模型，含 2026年3月最新定价
- 自动读取 OpenClaw 本地配置，只从已激活模型中路由
- 新增 `read_config.py` 诊断脚本
- 支持 Kilocode 免费模型（GLM-5 Free、MiniMax M2.5 Free）

### v1.0.0
- 初始版本（基础路由逻辑）

---

## 作者

**forrest** — [[REDACTED_SECRET]](mailto:[REDACTED_SECRET])

> 📄 MIT-0 License — 可自由使用、修改、商用，无需署名


path: references/model-tiers.md
content: # 全量模型分档明细 (Model Tiers Reference)

> 数据来源：各 provider 官方定价页 + OpenClaw 社区，2026年3月验证
> 价格单位：$ per million tokens（输入/输出）
> ⭐ = OpenClaw 社区高频推荐

---

## 🏆 高质量套餐 (Premium)

**特征**：顶级推理、最可靠工具调用、200k+ 上下文、抗 prompt 注入最强
**月费参考**：轻度 $80-150 / 中度 $200-400 / 重度 $500+

### Anthropic — Claude

| 模型 ID | 名称 | 输入价 | 输出价 | 上下文 | 亮点 |
|--------|------|--------|--------|--------|------|
| `anthropic/claude-opus-4-6` | Claude Opus 4.6 ⭐ | $15 | $75 | 200k | OpenClaw 首选，工具调用最可靠 |
| `opencode/claude-opus-4-6` | Claude Opus 4.6 (via OpenCode) | — | — | 200k | OpenCode Zen 订阅用户 |

### OpenAI — GPT

| 模型 ID | 名称 | 输入价 | 输出价 | 上下文 | 亮点 |
|--------|------|--------|--------|--------|------|
| `openai/gpt-5.1-codex` | GPT-5.1 Codex ⭐ | ~$10 | ~$30 | 1M+ | 最强代码能力 |
| `openai-codex/gpt-5.3-codex` | GPT-5.3 Codex (OAuth) | ChatGPT订阅 | — | 266k | OAuth 免 API Key |
| `openai/gpt-5.4` | GPT-5.4 | 待定 | 待定 | — | 2026.3 新发布 |

### Google — Gemini

| 模型 ID | 名称 | 输入价 | 输出价 | 上下文 | 亮点 |
|--------|------|--------|--------|--------|------|
| `google/gemini-3.1-pro-preview` | Gemini 3.1 Pro ⭐ | ~$3.5 | ~$10.5 | 2M | 最大上下文，适合长文档 |
| `google/gemini-3-pro-preview` | Gemini 3 Pro | ~$3.5 | ~$10.5 | 2M | 同上，旧别名 |
| `google/gemini-2.5-pro` | Gemini 2.5 Pro | $3.5 | $10.5 | 1M | 稳定可用版 |

### xAI — Grok

| 模型 ID | 名称 | 输入价 | 输出价 | 上下文 | 亮点 |
|--------|------|--------|--------|--------|------|
| `xai/grok-4.20` | Grok 4.20 | ~$5 | ~$15 | 131k | 最新旗舰 |
| `xai/grok-4` | Grok 4 | ~$3 | ~$10 | 131k | 强推理+实时信息 |

### Moonshot — Kimi

| 模型 ID | 名称 | 输入价 | 输出价 | 上下文 | 亮点 |
|--------|------|--------|--------|--------|------|
| `moonshot/kimi-k2.5` | Kimi K2.5 ⭐ | ~$0.5 | ~$1.5 | 128k | 中文最强旗舰，性价比高 |

### Mistral

| 模型 ID | 名称 | 输入价 | 输出价 | 上下文 | 亮点 |
|--------|------|--------|--------|--------|------|
| `mistral/mistral-large-2` | Mistral Large 2 | $3 | $9 | 128k | 欧洲合规，多语言 |

---

## ⚖️ 平衡套餐 (Balanced)

**特征**：能力与成本最优平衡，OpenClaw 社区最多人日常使用
**月费参考**：轻度 $15-30 / 中度 $40-80 / 重度 $100-200

### Anthropic — Claude

| 模型 ID | 名称 | 输入价 | 输出价 | 上下文 | 亮点 |
|--------|------|--------|--------|--------|------|
| `anthropic/claude-sonnet-4-6` | Claude Sonnet 4.6 ⭐⭐ | $3 | $15 | 200k | **OpenClaw 第一推荐**，工具调用最稳 |
| `anthropic/claude-sonnet-4-5` | Claude Sonnet 4.5 | $3 | $15 | 200k | 上一代稳定版 |
| `opencode/claude-sonnet-4-6` | Claude Sonnet (via OpenCode) | — | — | 200k | OpenCode Zen 订阅 |

### OpenAI — GPT

| 模型 ID | 名称 | 输入价 | 输出价 | 上下文 | 亮点 |
|--------|------|--------|--------|--------|------|
| `openai/gpt-4o` | GPT-4o ⭐ | $2.5 | $10 | 128k | 生态最成熟，工具丰富 |
| `openai/gpt-5.2` | GPT-5.2 | ~$5 | ~$15 | 200k | 新一代平衡款 |

### Google — Gemini

| 模型 ID | 名称 | 输入价 | 输出价 | 上下文 | 亮点 |
|--------|------|--------|--------|--------|------|
| `google/gemini-3-flash-preview` | Gemini 3 Flash ⭐ | ~$0.3 | ~$1.2 | 1M | 快速+大上下文，性价比高 |
| `google/gemini-2.5-pro` | Gemini 2.5 Pro | $3.5 | $10.5 | 1M | 稳定版旗舰 |
| `google/gemini-2.5-flash` | Gemini 2.5 Flash | $0.5 | $1.5 | 1M | 快速平衡款 |

### xAI — Grok

| 模型 ID | 名称 | 输入价 | 输出价 | 上下文 | 亮点 |
|--------|------|--------|--------|--------|------|
| `xai/grok-4-fast` | Grok 4 Fast ⭐ | $0.8 | $2 | 131k | 快速版，性价比好 |
| `xai/grok-4.1-fast` | Grok 4.1 Fast | $0.8 | $2 | 131k | 同上，新版 |
| `xai/grok-code-fast` | Grok Code Fast | $0.5 | $1.5 | 131k | 代码专项 |

### DeepSeek

| 模型 ID | 名称 | 输入价 | 输出价 | 上下文 | 亮点 |
|--------|------|--------|--------|--------|------|
| `deepseek/deepseek-r1` | DeepSeek R1 ⭐ | $0.55 | $2.19 | 128k | 推理+代码，极高性价比 |
| `deepseek/deepseek-v3.2` | DeepSeek V3.2 ⭐ | $0.28 | $0.42 | 128k | 日常主力，最流行预算选择 |
| `deepseek/deepseek-v3.1` | DeepSeek V3.1 | $0.28 | $0.42 | 128k | 上一版本 |

### Moonshot — Kimi

| 模型 ID | 名称 | 输入价 | 输出价 | 上下文 | 亮点 |
|--------|------|--------|--------|--------|------|
| `moonshot/kimi-k2` | Kimi K2 | ~$0.3 | ~$1 | 128k | 中文强，中档价位 |

### MiniMax

| 模型 ID | 名称 | 输入价 | 输出价 | 上下文 | 亮点 |
|--------|------|--------|--------|--------|------|
| `minimax/m2.5` | MiniMax M2.5 ⭐ | ~$0.3 | ~$1.1 | 1M | 超长上下文，中文友好 |
| `minimax/m2.1` | MiniMax M2.1 | ~$0.2 | ~$0.8 | 1M | 稳定前代 |

### Zhipu — GLM

| 模型 ID | 名称 | 输入价 | 输出价 | 上下文 | 亮点 |
|--------|------|--------|--------|--------|------|
| `zai/glm-5` | GLM-5 ⭐ | ~$0.5 | ~$1.5 | 128k | 最新旗舰，中文专优 |
| `zai/glm-4.7` | GLM-4.7 | ~$0.3 | ~$0.9 | 128k | 稳定主力 |

### Qwen（阿里）

| 模型 ID | 名称 | 输入价 | 输出价 | 上下文 | 亮点 |
|--------|------|--------|--------|--------|------|
| `qwen/qwen3-max` | Qwen3 Max | ~$0.5 | ~$1.5 | 128k | 综合旗舰 |
| `qwen/qwen3-coder` | Qwen3 Coder | ~$0.5 | ~$2 | 128k | 代码专项 |
| `qwen/qwen3.5-397b` | Qwen3.5 397B | ~$1 | ~$3 | 32k | 超大参数量 |

### Ollama（本地部署）

| 模型 ID | 名称 | 费用 | 上下文 | 亮点 |
|--------|------|------|--------|------|
| `ollama/llama-3.3-70b` | Llama 3.3 70B ⭐ | $0 | 128k | 本地最强，需好硬件 |
| `ollama/qwen3-coder` | Qwen3 Coder (本地) | $0 | 32k | 本地代码专用 |
| `ollama/mistral-large` | Mistral Large (本地) | $0 | 128k | 本地多语言 |

---

## 💰 经济套餐 (Economy)

**特征**：极低成本，适合高频简单任务、心跳、后台工作。质量有取舍。
**月费参考**：轻中度 $5-15 / 重度通常 <$30

### Anthropic — Claude

| 模型 ID | 名称 | 输入价 | 输出价 | 上下文 | 亮点 |
|--------|------|--------|--------|--------|------|
| `anthropic/claude-haiku-4-5` | Claude Haiku 4.5 ⭐ | $0.8 | $4 | 200k | 最快 Claude，工具调用仍可靠 |
| `anthropic/claude-haiku-3-5` | Claude Haiku 3.5 | $0.8 | $4 | 200k | 上一代，更稳定 |

### OpenAI — GPT

| 模型 ID | 名称 | 输入价 | 输出价 | 上下文 | 亮点 |
|--------|------|--------|--------|--------|------|
| `openai/gpt-4o-mini` | GPT-4o mini ⭐⭐ | $0.15 | $0.60 | 128k | **经济首选**，100条消息/天约$2-4/月 |
| `openai/gpt-4.1-mini` | GPT-4.1 mini | ~$0.15 | ~$0.60 | 1M | 超长上下文经济款 |

### Google — Gemini

| 模型 ID | 名称 | 输入价 | 输出价 | 上下文 | 亮点 |
|--------|------|--------|--------|--------|------|
| `google/gemini-3.1-flash-lite-preview` | Gemini 3.1 Flash-Lite ⭐ | $0.05 | $0.20 | 1M | **最便宜可靠云端模型之一** |
| `google/gemini-2.5-flash` | Gemini 2.5 Flash | $0.5 | $1.5 | 1M | 快速，大上下文 |
| `google/gemini-2.0-flash` | Gemini 2.0 Flash | ~$0.1 | ~$0.4 | 1M | 最快响应，<200ms TTFT |

### xAI — Grok

| 模型 ID | 名称 | 输入价 | 输出价 | 上下文 | 亮点 |
|--------|------|--------|--------|--------|------|
| `xai/grok-4.1-mini` | Grok 4.1 mini | $0.20 | $0.50 | 131k | 75x 便宜于 Opus |
| `xai/grok-3-mini` | Grok 3 Mini | ~$0.15 | ~$0.60 | 131k | 上一代经济款 |
| `xai/grok-3-mini-fast` | Grok 3 Mini Fast | ~$0.1 | ~$0.4 | 131k | 最快轻量版 |

### DeepSeek

| 模型 ID | 名称 | 输入价 | 输出价 | 上下文 | 亮点 |
|--------|------|--------|--------|--------|------|
| `deepseek/deepseek-v3.2` | DeepSeek V3.2 ⭐⭐ | $0.28 | $0.42 | 128k | **云端最便宜主力**，心跳仅$0.14/月 |
| `deepseek/deepseek-v3` | DeepSeek V3 | $0.27 | $1.10 | 64k | 老版本，仍可用 |

### MiniMax

| 模型 ID | 名称 | 输入价 | 输出价 | 上下文 | 亮点 |
|--------|------|--------|--------|--------|------|
| `minimax/m2.5-lightning` | M2.5 Lightning ⭐ | ~$0.1 | ~$0.3 | 1M | 极速，超长上下文 |
| `minimax/m2.1-lightning` | M2.1 Lightning | ~$0.08 | ~$0.2 | 1M | 最便宜长上下文 |

### Zhipu — GLM（含免费）

| 模型 ID | 名称 | 输入价 | 输出价 | 上下文 | 亮点 |
|--------|------|--------|--------|--------|------|
| `zai/glm-4.7-flash` | GLM-4.7 Flash | ~$0.05 | ~$0.15 | 128k | 极低成本中文模型 |
| `kilocode/glm-5-free` | GLM-5 Free ⭐ | $0 | $0 | 128k | 通过 Kilocode 免费使用 |
| `kilocode/minimax-m2.5-free` | M2.5 Free ⭐ | $0 | $0 | 1M | 通过 Kilocode 免费使用 |

### Qwen

| 模型 ID | 名称 | 输入价 | 输出价 | 上下文 | 亮点 |
|--------|------|--------|--------|--------|------|
| `qwen/qwen3-coder-plus` | Qwen3 Coder Plus | ~$0.2 | ~$0.6 | 128k | 经济代码款 |
| `qwen/qwen2.5-coder-32b` | Qwen2.5 Coder 32B | ~$0.15 | ~$0.4 | 128k | 开源部署或API |

### Ollama（本地，零成本）

| 模型 ID | 名称 | 费用 | 上下文 | 亮点 |
|--------|------|------|--------|------|
| `ollama/llama-3.2-3b` | Llama 3.2 3B | $0 | 128k | 最轻量，CPU 可跑 |
| `ollama/llama-3.1-8b` | Llama 3.1 8B | $0 | 128k | 轻量通用 |
| `ollama/qwen2.5-coder-7b` | Qwen2.5 Coder 7B | $0 | 32k | 本地代码小模型 |
| `ollama/deepseek-coder-v2` | DeepSeek Coder V2 (本地) | $0 | 64k | 本地代码专用 |
| `ollama/mistral-small` | Mistral Small (本地) | $0 | 32k | 轻量本地通用 |

---

## 价格速查对比

| 档位 | 代表模型 | 输出价（/M） | 心跳月费 | 日常任务月费 |
|------|---------|------------|---------|------------|
| 高质量 | Claude Opus 4.6 | $75 | ~$130 | $200-400 |
| 高质量 | GPT-5.1 Codex | ~$30 | ~$50 | $80-200 |
| 平衡 | Claude Sonnet 4.6 | $15 | $4.32 | $15-80 |
| 平衡 | DeepSeek R1 | $2.19 | $0.63 | $2-15 |
| 经济 | GPT-4o mini | $0.60 | $0.17 | $2-4 |
| 经济 | DeepSeek V3.2 | $0.42 | $0.14 | $0.80-2 |
| 经济 | Gemini Flash-Lite | $0.20 | $0.06 | $0.40-1 |
| 免费 | GLM-5 Free（Kilocode）| $0 | $0 | $0 |
| 免费 | Ollama 本地模型 | $0 | $0 | $0 |

---

## OpenClaw 配置片段参考

```json
// 三档混合配置示例（openclaw.json）
{
  "agents": {
    "defaults": {
      "model": {
        "primary": "anthropic/claude-sonnet-4-6",
        "fallback": "openai/gpt-4o",
        "economy": "google/gemini-3.1-flash-lite-preview"
      }
    }
  }
}
```


path: references/openclaw-config-format.md
content: # OpenClaw 配置文件格式说明

## 主配置文件位置
- 新版：`~/.openclaw/openclaw.json`
- 旧版（Clawdbot 迁移）：`~/.clawdbot/clawdbot.json`
- 模型专项：`~/.openclaw/models.json`

## 已激活模型检测

路由器通过以下方式判断用户是否激活了某个 provider：

```json
{
  "env": {
    "ANTHROPIC_API_KEY": "sk-ant-...",   // 有值 = Anthropic 已激活
    "OPENAI_API_KEY": "sk-...",          // 有值 = OpenAI 已激活
    "GEMINI_API_KEY": "AIza...",         // 有值 = Google 已激活
    "DEEPSEEK_API_KEY": "sk-...",        // 有值 = DeepSeek 已激活
    "XAI_API_KEY": "xai-...",            // 有值 = xAI/Grok 已激活
    "MOONSHOT_API_KEY": "sk-...",        // 有值 = Kimi 已激活
    "MINIMAX_API_KEY": "...",            // 有值 = MiniMax 已激活
    "ZAI_API_KEY": "...",               // 有值 = Zhipu/GLM 已激活
    "OPENROUTER_API_KEY": "sk-or-...",  // 有值 = OpenRouter 已激活
    "KILOCODE_API_KEY": "..."           // 有值 = Kilocode 已激活
  }
}
```

## 模型 allowlist（限制可用模型）

```json
{
  "agents": {
    "defaults": {
      "models": {
        "anthropic/claude-sonnet-4-6": {},
        "openai/gpt-4o": {},
        "google/gemini-2.5-flash": {}
      }
    }
  }
}
```

若存在 `agents.defaults.models`，路由器只在这个 allowlist 内选择模型。

## Ollama 检测

路由器向 `http://localhost:11434/api/tags` 发请求，成功响应说明 Ollama 在运行，
返回的模型列表即为本地可用模型。

## 自定义 provider

```json
{
  "models": {
    "providers": {
      "my-provider": {
        "baseUrl": "https://api.example.com/v1",
        "apiKey": "${MY_API_KEY}",
        "api": "openai-completions",
        "models": [
          { "id": "my-model-v1", "name": "My Custom Model" }
        ]
      }
    }
  }
}
```


path: scripts/read_config.py
content: #!/usr/bin/env python3
"""
read_config.py — 读取 OpenClaw 本地配置，输出已激活模型及三档套餐归类
用法：python scripts/read_config.py
"""
import json, os, urllib.request
from pathlib import Path

CONFIG_PATHS = [
    Path.home() / ".openclaw" / "openclaw.json",
    Path.home() / ".openclaw" / "models.json",
    Path.home() / ".clawdbot" / "clawdbot.json",
    Path.cwd() / "openclaw.json",
]

PROVIDER_KEYS = {
    "anthropic": ["ANTHROPIC_API_KEY", "ANTHROPIC_API_KEYS"],
    "openai": ["OPENAI_API_KEY"],
    "openai-codex": [],   # OAuth，检测 token 文件
    "google": ["GEMINI_API_KEY", "GOOGLE_API_KEY"],
    "deepseek": ["DEEPSEEK_API_KEY"],
    "xai": ["XAI_API_KEY"],
    "moonshot": ["MOONSHOT_API_KEY"],
    "minimax": ["MINIMAX_API_KEY"],
    "zai": ["ZAI_API_KEY"],
    "openrouter": ["OPENROUTER_API_KEY"],
    "kilocode": ["KILOCODE_API_KEY"],
    "mistral": ["MISTRAL_API_KEY"],
}

# 三档套餐映射（按 provider 细分）
TIER_MAP = {
    "premium": {
        "anthropic": ["claude-opus-4-6"],
        "openai": ["gpt-5.1-codex", "gpt-5.4"],
        "openai-codex": ["gpt-5.3-codex"],
        "google": ["gemini-3.1-pro-preview", "gemini-3-pro-preview", "gemini-2.5-pro"],
        "xai": ["grok-4.20", "grok-4"],
        "moonshot": ["kimi-k2.5"],
        "mistral": ["mistral-large-2"],
    },
    "balanced": {
        "anthropic": ["claude-sonnet-4-6", "claude-sonnet-4-5"],
        "openai": ["gpt-4o", "gpt-5.2"],
        "google": ["gemini-3-flash-preview", "gemini-2.5-pro", "gemini-2.5-flash"],
        "xai": ["grok-4-fast", "grok-4.1-fast", "grok-code-fast"],
        "deepseek": ["deepseek-r1", "deepseek-v3.2", "deepseek-v3.1"],
        "moonshot": ["kimi-k2"],
        "minimax": ["m2.5", "m2.1"],
        "zai": ["glm-5", "glm-4.7"],
        "qwen": ["qwen3-max", "qwen3-coder", "qwen3.5-397b"],
        "ollama": ["llama-3.3-70b", "qwen3-coder", "mistral-large"],
    },
    "economy": {
        "anthropic": ["claude-haiku-4-5", "claude-haiku-3-5"],
        "openai": ["gpt-4o-mini", "gpt-4.1-mini"],
        "google": ["gemini-3.1-flash-lite-preview", "gemini-2.5-flash", "gemini-2.0-flash"],
        "xai": ["grok-4.1-mini", "grok-3-mini", "grok-3-mini-fast"],
        "deepseek": ["deepseek-v3.2", "deepseek-v3"],
        "minimax": ["m2.5-lightning", "m2.1-lightning"],
        "zai": ["glm-4.7-flash"],
        "kilocode": ["glm-5-free", "minimax-m2.5-free"],
        "qwen": ["qwen3-coder-plus", "qwen2.5-coder-32b"],
        "ollama": ["llama-3.2-3b", "llama-3.1-8b", "deepseek-coder-v2", "qwen2.5-coder-7b"],
    }
}

def load_config():
    env_path = os.environ.get("OPENCLAW_CONFIG")
    if env_path:
        CONFIG_PATHS.insert(0, Path(env_path))
    for p in CONFIG_PATHS:
        if p.exists():
            try:
                return json.loads(p.read_text()), str(p)
            except Exception as e:
                print(f"  ⚠️  读取失败 {p}: {e}")
    return {}, None

def detect_active_providers(config):
    env = config.get("env", {})
    active = []
    for provider, keys in PROVIDER_KEYS.items():
        for k in keys:
            if env.get(k) or os.environ.get(k):
                active.append(provider)
                break
    # 检测 Ollama
    try:
        urllib.request.urlopen("http://localhost:11434/api/tags", timeout=2)
        active.append("ollama")
    except:
        pass
    return active

def get_allowlist(config):
    models_cfg = config.get("agents", {}).get("defaults", {}).get("models", {})
    return list(models_cfg.keys()) if models_cfg else None

def classify_to_tiers(active_providers, allowlist=None):
    result = {"premium": [], "balanced": [], "economy": []}
    for tier, providers in TIER_MAP.items():
        for provider, models in providers.items():
            if provider not in active_providers:
                continue
            for model in models:
                full_id = f"{provider}/{model}"
                if allowlist and full_id not in allowlist:
                    continue
                result[tier].append(full_id)
    return result

def main():
    print("\n🦞 OpenClaw LLM Router — 配置读取")
    print("━" * 45)
    config, path = load_config()
    if not path:
        print("❌ 未找到 OpenClaw 配置文件")
        print("   请先运行: openclaw onboard")
        return
    print(f"✅ 配置文件: {path}")
    active = detect_active_providers(config)
    allowlist = get_allowlist(config)
    tiers = classify_to_tiers(active, allowlist)
    print(f"\n已激活 Providers（{len(active)}）: {', '.join(active)}")
    if allowlist:
        print(f"模型 Allowlist 限制（{len(allowlist)} 个）")
    tier_labels = {"premium": "🏆 高质量", "balanced": "⚖️ 平衡", "economy": "💰 经济"}
    for tier, label in tier_labels.items():
        models = tiers[tier]
        print(f"\n{label} 套餐（{len(models)} 个可用）:")
        for m in models[:8]:
            print(f"  • {m}")
        if len(models) > 8:
            print(f"  ... 共 {len(models)} 个")
    print("\n" + "━" * 45)
    current = config.get("agents", {}).get("defaults", {}).get("model", {})
    if current:
        print(f"当前默认模型: {current.get('primary', '未设置')}")

if __name__ == "__main__":
    main()


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)