# Model Router Hook

> 智能模型路由系统，根据任务复杂度自动切换 AI 模型（fast/thinking）。 当需要： - 自动选择最优 AI 模型（简单任务用 k2p5，复杂任务用 thinking） - 根据用户意图智能路由（代码/分析/查询等） - 控制 API 成本（预算管理） - 学习用户偏好并自适应调整 使用场景： - 开发助手需要根据问题复杂度切换模型 - 客服系统需要平衡成本与回答质量 - 任何需要模型智能路由的场景

- Skill: `dvcrn/model-router-hook` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add dvcrn/model-router-hook`
- Raw SKILL.md: https://api.skillmd.com/api/skills/dvcrn/model-router-hook/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: dvcrn (https://skillmd.com/u/dvcrn)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/dvcrn/model-router-hook

---


# Model Router Hook V4

智能模型路由系统 - 自动根据任务复杂度选择最优 AI 模型。

## 快速开始

```python
from model_router_hook import create_router

# 创建路由器
router = create_router(
    user_id="user_001",
    daily_budget=5.0  # 每日预算 5 美元
)

# 处理用户输入 - 自动路由并切换模型
result = router.on_user_input("帮我写个快排算法")
# 返回: {'mode': 'thinking', 'model': 'kimi-coding/kimi-k2-thinking', ...}

# 回复完成后 - 自动反思学习
router.on_response_complete(
    user_input="帮我写个快排",
    response=generated_response,
    user_next_input=user_next_message
)

# 记录实际成本
router.record_actual_cost(tokens_in=1500, tokens_out=800, 
                         actual_cost=0.005, latency_ms=1200)
```

## 系统架构

### P0-P5 核心层

| 层级 | 功能 | 说明 |
|------|------|------|
| P0 | 意图识别V2 | 14种深度信号（为什么/分析一下/总结一下...） |
| P1 | 动态阈值 | 自适应调整（用户偏好+时间+话题成功率） |
| P2 | 会话记忆 | 上下文感知 + 全局用户画像（跨会话学习） |
| P3 | 事后反思 | 质量评估 + 自动学习 |
| P4 | 自动切换 | OpenClaw 集成，真正执行切换 |
| P5 | 成本控制 | 预算管理 + 实际成本追踪 |

### 优化A-G

- **A**: OpenClaw 集成 - 真正调用 session_status
- **B**: 实际成本追踪 - 支持 API 实际成本
- **C**: P3 质量评估增强 - 自动检测回复质量
- **D**: A/B 测试框架 - 策略效果量化
- **E**: 并发安全 - 线程锁+原子操作
- **F**: 降级容错 - 错误时自动 fallback
- **G**: 实时仪表板 - 监控与学习进度

## 详细使用指南

### 基础使用

```python
from model_router_hook import create_router

router = create_router(
    user_id="my_user",           # 用户ID，用于全局画像
    daily_budget=10.0,           # 每日预算（美元）
    enable_ab_test=False         # 是否开启 A/B 测试
)

# 处理输入
result = router.on_user_input("帮我分析这个架构")
print(result['mode'])          # 'thinking' 或 'fast'
print(result['switched'])      # 是否发生了切换
print(result['decision_log'])  # 决策原因

# 结束会话（保存学习成果）
router.end_session()
```

### 在 OpenClaw 中集成

```python
class SmartAgent:
    def __init__(self):
        self.router = create_router(
            user_id="agent_main",
            daily_budget=10.0
        )
    
    async def on_message(self, user_input: str):
        # 1. 自动路由决策
        result = self.router.on_user_input(user_input)
        
        # 2. 使用当前模型生成回复
        response = await self.generate_response(user_input)
        
        # 3. 等待下一条消息，然后反思
        next_input = await self.wait_for_next_message()
        self.router.on_response_complete(
            user_input, response, next_input
        )
        
        return response
```

## API 参考

详见 [scripts/model_router.py](scripts/model_router.py) 完整代码。

主要类：
- `ModelRouterHook`: 主路由器类
- `SessionMemory`: 会话记忆
- `GlobalUserMemory`: 全局用户画像
- `CostControllerV2`: 成本控制器
- `ResponseQualityEvaluator`: 质量评估器
- `Dashboard`: 实时仪表板

## 文件结构

```
model-router-hook/
├── SKILL.md                    # 本文件
└── scripts/
    └── model_router.py         # 主代码 (894行)
```

## 存储位置

数据自动存储在：
- `~/.openclaw/workspace/memory/model-router/`
  - `user_{id}_profile.json` - 全局用户画像
  - `session_{id}_memory.json` - 会话记忆
  - `cost_{user}_{month}.jsonl` - 成本记录

## 测试状态

✅ 全部测试通过 (10/10)
- 意图识别: 14/14 (100%)
- 复杂度分析: 5/5 (100%)
- 成本控制器: ✅
- 质量评估: ✅
- OpenClaw 集成: ✅
- 路由器流程: 4/4 (100%)
- 降级容错: ✅
- 并发安全: ✅

**生产就绪！**

---
*Version: V4.0*  
*Code: 894 lines, 33.9KB*  
*Date: 2026-03-04*

