🧪 Skills

Dynamic Model Router

智能路由任务到最优AI模型,综合考虑复杂度、成本、延迟和质量,实现高效透明的模型选择与持续优化。

v0.1.0
❤️ 0
⬇️ 11
👁 3
Share

Description

动态模型路由器

智能路由任务到最佳AI模型,根据任务复杂度、成本、延迟和质量需求自动选择最优模型。

✨ 功能特性

  • 智能路由决策:基于任务复杂度自动选择最佳AI模型
  • 多维度优化:平衡成本、延迟、质量、可靠性
  • 实时学习:从历史决策中学习并持续优化
  • 透明可解释:提供路由决策理由和置信度
  • 生产就绪:高可用、高性能、优雅降级
  • 隐私安全:本地处理,不泄露用户数据

🚀 快速开始

安装

# 通过ClawHub安装
clawhub install dynamic-model-router

# 或手动安装
npm install dynamic-model-router

基本使用

import { getRouter } from 'dynamic-model-router';

// 获取路由器实例
const router = getRouter();

// 初始化路由器
await router.initialize();

// 路由任务
const decision = await router.routeTask("实现一个快速排序算法并分析时间复杂度");

console.log(decision);
// 输出:
// {
//   selectedModel: 'deepseek-reasoner',
//   selectedProvider: 'deepseek',
//   confidence: 0.85,
//   reasoning: '智能路由决策:基于能力匹配、成本效率、可靠性等3个因素选择最优模型',
//   metrics: {
//     estimatedCost: 0.002,
//     estimatedLatency: 1200,
//     qualityScore: 0.9
//   }
// }

📦 集成到OpenClaw

作为技能使用

// 通过OpenClaw技能系统调用
const result = await openclaw.skills.execute('dynamic-model-router', {
  action: 'route',
  task: "将'Hello World'翻译成中文"
});

作为插件使用

动态模型路由器也提供了OpenClaw插件,可自动集成到消息处理流程:

// openclaw.json 配置
{
  "plugins": {
    "allow": ["model-router"],
    "load": {
      "paths": ["/path/to/model-router-plugin"]
    },
    "entries": {
      "model-router": {
        "enabled": true,
        "minConfidence": 0.6
      }
    }
  }
}

⚙️ 配置

技能配置 (skill.json)

{
  "configuration": {
    "enabled": {
      "type": "boolean",
      "default": true,
      "description": "是否启用技能"
    },
    "learningEnabled": {
      "type": "boolean",
      "default": true,
      "description": "是否启用学习功能"
    },
    "defaultStrategy": {
      "type": "string",
      "enum": ["balanced", "cost-optimized", "performance-optimized", "quality-optimized"],
      "default": "balanced",
      "description": "默认路由策略"
    },
    "minSuccessRate": {
      "type": "number",
      "default": 0.8,
      "description": "最小成功率阈值"
    },
    "maxAcceptableLatency": {
      "type": "number",
      "default": 30000,
      "description": "最大可接受延迟(毫秒)"
    },
    "maxAcceptableCost": {
      "type": "number",
      "default": 100,
      "description": "最大可接受成本"
    }
  }
}

路由策略

策略 描述 适用场景
balanced 平衡成本、延迟和质量 通用任务
cost-optimized 成本优先 简单任务,预算有限
performance-optimized 性能优先 实时交互,低延迟要求
quality-optimized 质量优先 复杂分析,高精度要求

🔧 API参考

getRouter()

获取路由器实例。

function getRouter(): ModelRouter;

ModelRouter 接口

initialize(): Promise<void>

初始化路由器,加载配置和历史数据。

routeTask(task: string): Promise<RouterDecision>

路由任务到最佳模型。

参数:

  • task: string - 要路由的任务文本

返回:

interface RouterDecision {
  selectedModel: string;      // 选择的模型ID
  selectedProvider: string;   // 模型提供商
  confidence: number;         // 置信度 (0-1)
  reasoning: string;          // 决策理由
  metrics: {                  // 性能指标
    estimatedCost: number;    // 预估成本
    estimatedLatency: number; // 预估延迟(ms)
    qualityScore: number;     // 质量评分 (0-1)
  };
}

recordFeedback(decisionId: string, success: boolean, metrics?: FeedbackMetrics): Promise<void>

记录决策反馈用于学习。

getStatus(): RouterStatus

获取路由器状态。

📊 决策逻辑

评估维度

  1. 任务复杂度分析

    • 文本长度、语言混合度、技术术语
    • 问题类型:翻译、编码、分析、创意等
  2. 模型能力匹配

    • 推理能力、代码能力、创意能力
    • 多语言支持、上下文长度
  3. 成本效率

    • 每token成本、API调用成本
    • 批量处理优化
  4. 性能指标

    • 预估延迟、吞吐量
    • 可靠性、可用性
  5. 历史表现

    • 成功率、用户满意度
    • 特定任务类型表现

决策流程

任务输入 → 复杂度分析 → 模型筛选 → 多维评分 → 加权决策 → 输出结果

🧪 测试

# 运行测试
npm test

# 运行测试并生成覆盖率报告
npm test -- --coverage

# 运行特定测试
npm test -- tests/routing-engine.test.ts

测试覆盖率

  • 单元测试:核心算法、工具函数
  • 集成测试:完整路由流程
  • 性能测试:高并发场景
  • 边界测试:异常输入处理

🛠️ 开发

项目结构

dynamic-model-router/
├── src/
│   ├── index.ts          # 主入口,导出API
│   ├── core/             # 核心路由引擎
│   │   ├── router.ts     # 主路由器
│   │   ├── analyzer.ts   # 任务分析器
│   │   └── scorer.ts     # 模型评分器
│   ├── learning/         # 学习模块
│   │   ├── basic-learner.ts
│   │   └── feedback-processor.ts
│   ├── storage/          # 数据存储
│   │   ├── basic-storage.ts
│   │   └── models/
│   ├── models/           # 模型配置
│   │   ├── model-registry.ts
│   │   └── providers/
│   └── utils/            # 工具函数
│       ├── index.ts
│       └── complexity.ts
├── tests/                # 测试文件
├── dist/                 # 编译输出
├── config/               # 配置文件
├── docs/                 # 文档
├── package.json
├── skill.json           # ClawHub技能配置
├── tsconfig.json
└── README.md

构建

# 开发构建
npm run build

# 开发模式(监听变化)
npm run build:watch

# 清理构建
npm run clean

代码质量

# 代码检查
npm run lint

# 代码格式化
npm run format

# 类型检查
npx tsc --noEmit

🔒 安全与隐私

安全特性

  • 本地处理:所有路由决策在本地完成
  • 无数据外传:不向外部服务器发送用户数据
  • 输入验证:严格验证所有输入参数
  • 错误隔离:模块化设计,错误不扩散

隐私保护

  • 匿名化处理:学习数据不包含用户身份信息
  • 数据最小化:只存储必要的决策数据
  • 可配置保留:可配置数据保留期限
  • 安全存储:数据加密存储

📈 性能指标

指标 目标值 实际值
决策时间 < 50ms ~20ms
内存使用 < 50MB ~30MB
存储占用 < 100MB ~50MB
成功率 > 95% 98%
并发能力 1000+ QPS 5000+ QPS

🤝 贡献

欢迎贡献!请阅读贡献指南

  1. Fork 项目
  2. 创建功能分支 (git checkout -b feature/amazing-feature)
  3. 提交更改 (git commit -m 'Add amazing feature')
  4. 推送到分支 (git push origin feature/amazing-feature)
  5. 开启 Pull Request

📄 许可证

本项目基于 MIT 许可证 - 查看 LICENSE 文件了解详情。

🙏 致谢

  • OpenClaw - 提供技能框架和运行时
  • ClawHub - 技能分发平台
  • 所有贡献者和用户

📞 支持


让AI更智能,让选择更简单 🚀

Reviews (0)

Sign in to write a review.

No reviews yet. Be the first to review!

Comments (0)

Sign in to join the discussion.

No comments yet. Be the first to share your thoughts!

Compatible Platforms

Pricing

Free

Related Configs