用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/vramrick/openclaw-skills --skill prompt-router命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
基于 SOC 职业分类
| name | prompt-router |
| version | 1.0.0 |
| description | 基于文本匹配的快速路由引擎,为简单任务提供零 LLM 决策的快速路径。支持中英文混合输入,自动匹配技能/工具,低置信度时降级到 LLM 语义路由。 |
| triggers | 路由,快速路径,文本匹配,技能选择,自动调用 |
| keywords | router, routing, prompt, 路由,匹配,技能,快速 |
🚀 基于文本匹配的快速路由引擎,为简单任务提供 零 LLM 决策 的快速路径。
from skills.prompt_router.scripts.router import PromptRouter
# 创建路由器
router = PromptRouter(
skills_dir='skills/',
confidence_threshold=0.6 # 置信度阈值
)
# 加载技能元数据
router.load_skills()
# 路由用户输入
result = router.route("搜索 Python 教程")
if result.match:
print(f"匹配技能:{result.match['name']}")
print(f"置信度:{result.confidence:.2f} ({result.confidence_level})")
else:
print("未找到匹配,降级到 LLM")
if router.should_invoke_skill(result):
# 高置信度:直接调用技能
skill_name = result.match['name']
invoke_skill(skill_name)
else:
# 低置信度:降级到 LLM
fallback_to_llm()
用户 Prompt
↓
分词处理(Tokenizer)
↓
评分匹配(Scorer)
↓
排序选择(Router)
↓
{
高置信度 (≥0.8) → 直接调用技能
中置信度 (0.6-0.8) → 建议用户确认
低置信度 (<0.6) → 降级到 LLM
}
# 多字段加权匹配
总分 = Σ(字段匹配分 × 权重)
字段权重:
- name: 3.0(名称匹配最重要)
- triggers: 2.5(触发词权重高)
- keywords: 2.0(关键词)
- description: 1.5(描述)
| 阈值 | 默认值 | 说明 |
|---|---|---|
confidence_threshold | 0.6 | 低于此值降级到 LLM |
high_confidence_threshold | 0.8 | 高于此值直接调用 |
调整建议:
# 默认:当前 skills/ 目录
router = PromptRouter()
# 自定义目录
router = PromptRouter(skills_dir='/path/to/skills')
prompt = "北京今天天气怎么样"
result = router.route(prompt)
# 输出:
# 匹配:weather
# 分数:8.50
# 置信度:0.85 (high)
# 调用技能:True
prompt = "读取 config.json 文件"
result = router.route(prompt)
# 输出:
# 匹配:read
# 分数:7.20
# 置信度:0.72 (medium)
# 调用技能:True
prompt = "帮我搭建一个完整的自动化工作流"
result = router.route(prompt)
# 输出:
# 匹配:None
# 分数:2.10
# 置信度:0.21 (low)
# 调用技能:False
# 降级到 LLM:True
| 指标 | 目标值 | 实测值 |
|---|---|---|
| 路由延迟 | <10ms | ~3ms |
| 分词速度 | <1ms | ~0.5ms |
| 评分速度 | <5ms | ~2ms |
| 内存占用 | <10MB | ~5MB |
| 启动时间 | <100ms | ~50ms |
| 场景 | 示例 | 收益 |
|---|---|---|
| 简单查询 | "天气"、"搜索"、"读取" | 延迟 -80%,成本 -50% |
| 工具调用 | "打开浏览器"、"执行命令" | 确定性行为 |
| 高频操作 | 自动化脚本、语音助手 | 实时响应 |
| LLM 故障 | API 限流、网络中断 | 降级方案 |
| 场景 | 原因 |
|---|---|
| 复杂任务规划 | 需要 LLM 语义理解 |
| 创意写作 | 需要 LLM 创造力 |
| 多步骤推理 | 需要 LLM 逻辑能力 |
| 模糊意图 | 需要 LLM 澄清 |
# 添加同义词映射
synonyms = {
'搜索': ['查找', 'search', 'find'],
'天气': ['气温', 'weather', 'temperature'],
'读取': ['打开', '查看', 'read'],
}
# 在分词时扩展
tokens = tokenizer.tokenize(prompt)
expanded_tokens = set()
for token in tokens:
expanded_tokens.add(token)
if token in synonyms:
expanded_tokens.update(synonyms[token])
result = router.route(prompt)
# 记录路由决策
log = {
'prompt': prompt,
'matched': result.match['name'] if result.match else None,
'score': result.score,
'confidence': result.confidence,
'level': result.confidence_level,
'invoke': router.should_invoke_skill(result),
}
import time
start = time.time()
result = router.route(prompt)
elapsed = time.time() - start
print(f"路由耗时:{elapsed*1000:.2f}ms")
class PromptRouter:
def __init__(
self,
skills_dir: str = None,
confidence_threshold: float = 0.6,
high_confidence_threshold: float = 0.8,
)
def load_skills(self, skills_dir: str = None) -> int
def route(self, prompt: str, limit: int = 3) -> RouteResult
def should_invoke_skill(self, result: RouteResult) -> bool
def should_fallback_to_llm(self, result: RouteResult) -> bool
def get_stats(self) -> Dict
@dataclass
class RouteResult:
match: Optional[Dict] # 匹配的技能
score: float # 匹配分数
confidence: float # 置信度 (0-1)
confidence_level: str # high/medium/low/none
all_matches: List[Dict] # 所有匹配
# 单元测试
cd skills/prompt-router
python -m pytest tests/
# 性能测试
python tests/benchmark.py
# 初始使用默认值
router = PromptRouter(confidence_threshold=0.6)
# 收集路由日志
# 分析误匹配和漏匹配
# 调整阈值
router.confidence_threshold = 0.7 # 提高准确率
# 在技能 SKILL.md 中添加明确触发词
---
name: weather
triggers: 天气,气温,weather, 温度,forecast
keywords: 天气,气象,预报,weather, forecast
---
# 监控路由成功率
stats = {
'total': 0,
'matched': 0,
'high_confidence': 0,
'fallback': 0,
}
# 告警:如果降级率突然升高
if stats['fallback'] / stats['total'] > 0.5:
alert("路由降级率异常")
最后更新:2026-04-05 00:30