Skill Router
统一检索 + 生命周期管理。BM25 离线索引,零网络依赖。
SR = ~/.agents/skills/skill-router/scripts
搜索
python3 $SR/search.py "<query>" --k 5
python3 $SR/search.py --kind skill "<query>" # 只搜 skill
python3 $SR/search.py "<query>" --source trae # 只搜 trae
python3 $SR/search.py --list-archived # 列出归档
python3 $SR/search.py --list-all # 全量资产
路由规则
| 来源 | id 格式 | 动作 |
|---|---|---|
| trae | trae:<name> |
Skill(skill="<name>") |
| claude | <ns>:<name> |
读其 SKILL.md path 字段 |
| agent | 无前缀 | 告知用户 |
| command | /<name> |
告知 slash command |
归档 skill 搜到后直接读其 SKILL.md 执行,无需移出 archive。
生命周期管理
python3 $SR/manage.py --status --days 30 # 概览
python3 $SR/manage.py --archive --days 30 --dry-run # 归档预览
python3 $SR/manage.py --archive --days 30 # 执行归档
python3 $SR/manage.py --recall --days 14 --min-hits 10 # 召回推荐
python3 $SR/manage.py --recall --days 14 --min-hits 10 --apply # 执行召回
python3 $SR/manage.py --protect name1,name2 # 永不归档
需求检测
归档 skill 不在 listing 中无法被模型看到。detect_need.py 通过 trigger_map 做关键词匹配,检测用户消息是否暗含对 archived skill 的需求:
python3 $SR/build_triggers.py # 重建 trigger_map
python3 $SR/detect_need.py "帮我做飞书日历查询" # 检测单条
echo "msg" | python3 $SR/detect_need.py --batch # 批量
匹配结果追加到 route_log.jsonl 供 --recall 读取。
索引维护
python3 $SR/build_index.py # 重建全量索引
归档/召回后需重建索引。索引文件:$SR/index.json