内容
# 技能路由器
适用于Claude Code技能的惰性路由器:与其让每个已安装的技能每次都消耗上下文,不如通过三个小型MCP工具——搜索、加载、重新索引——来公开整个库。弱模型或廉价模型也可以很好地导航它,这就是目的。
单个文件Node MCP服务器(stdio)。一个依赖项(`@modelcontextprotocol/sdk`)。无需数据库,无需嵌入,无需后台服务。索引约185个技能在启动时需要约25毫秒。
## 工作原理
在启动时(以及在`skill_reindex`命令下),服务器会遍历三个根目录下的`SKILL.md`文件:
| 根目录 | 标签 | 备注 |
|---|---|---|
| `~/.claude/skills/` | 活动 | 跟随符号链接(有循环保护) |
| `~/.claude/plugins/` | 插件 | 排除`plugins/cache/`和`plugins/marketplaces/` |
| `~/.claude/skill-vault/` | 仓库 | 参见下方 |
解析前置信息`name:`/`description:`(包括YAML块标量,如`description: >-`);重复项根据优先级`active > plugin > vault`进行去重。
### 工具
- **`skill_search`** `{query, limit?}` — 返回排名结果 `{id, name, description, source, path, score}`。
使用查询侧停止词过滤的令牌重叠评分(因此“make my website load faster”仍能找到`web-perf`),整个查询子字符串提升和部分名称片段信用(“website”与名称`web-perf`匹配)。
- **`skill_load`** `{id}` — 返回完整的`SKILL.md`内容和兄弟文件(`references/`、`scripts/`等)。接受ID或名称(不区分大小写);未知ID返回5个最接近的匹配结果,而不是错误。
- **`skill_reindex`** — 重新扫描,返回每个源的计数。
### 仓库
真正的上下文胜利:将很少使用的技能从`~/.claude/skills/`移动到`~/.claude/skill-vault/`。这样,技能管理程序就不会在每次调用时列出它们,但它们仍然可以通过路由器完全可发现和可加载。
## 安装
```bash
npm install
claude mcp add --scope user skill-router node /absolute/path/to/server.mjs
```
## 测试
```bash
node test.mjs
```
自包含:在临时`HOME`中构建一个固定技能树(包括符号链接技能、块标量描述、排除的插件缓存条目和影子仓库副本),并在真正的stdio JSON-RPC上进行断言。
## 安全注意
索引器跟随符号链接退出技能根目录,并将索引任何`SKILL.md`文件——因此不要将技能根目录指向(或安装包含符号链接到)不受信任或敏感的位置。加载的技能内容作为数据返回,永远不会被执行。
## 致谢
评分方法移植自Hermes lazy-router插件,来自[agency-agents](https://github.com/msitarzewski/agency-agents)(MIT,AgentLand Contributors)——这种模式通过几个搜索工具公开大量注册表,而不是预加载所有内容。
## 许可证
MIT