🧪 Skills
Dynamic Model Router
智能路由任务到最优AI模型,综合考虑复杂度、成本、延迟和质量,实现高效透明的模型选择与持续优化。
v0.1.0
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
获取路由器状态。
📊 决策逻辑
评估维度
-
任务复杂度分析
- 文本长度、语言混合度、技术术语
- 问题类型:翻译、编码、分析、创意等
-
模型能力匹配
- 推理能力、代码能力、创意能力
- 多语言支持、上下文长度
-
成本效率
- 每token成本、API调用成本
- 批量处理优化
-
性能指标
- 预估延迟、吞吐量
- 可靠性、可用性
-
历史表现
- 成功率、用户满意度
- 特定任务类型表现
决策流程
任务输入 → 复杂度分析 → 模型筛选 → 多维评分 → 加权决策 → 输出结果
🧪 测试
# 运行测试
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 |
🤝 贡献
欢迎贡献!请阅读贡献指南。
- Fork 项目
- 创建功能分支 (
git checkout -b feature/amazing-feature) - 提交更改 (
git commit -m 'Add amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 开启 Pull Request
📄 许可证
本项目基于 MIT 许可证 - 查看 LICENSE 文件了解详情。
🙏 致谢
📞 支持
- 问题报告: GitHub Issues
- 文档: OpenClaw Docs
- 社区: Discord
让AI更智能,让选择更简单 🚀
Reviews (0)
Sign in to write a review.
No reviews yet. Be the first to review!
Comments (0)
No comments yet. Be the first to share your thoughts!