omo-jevlike-router
Jev-style skill router for OmO: frozen Qwen2.5-0.5B plus a small head scores the skill catalog and trims the system prompt to top-K.
Overview
omo-jevlike-router is a one-pass skill router for OmO. On each agent start, a small local model, a frozen Qwen2.5-0.5B plus a tiny option-attention head from the jevlike project, scores the entire skill catalog against the user's prompt in a single forward pass. An OmO extension then shrinks the skills block of the system prompt to the top-K skills before the main model sees it. It runs as a CPU Docker service and fails open if unreachable.
From the deployment it was extracted from (1,414 labelled turns, 141 skills, 132 held-out turns), the README reports 27.3% top-1, 47.0% top-3, 84.1% recall@24, ECE about 0.10, and 50-70 ms warm latency. It openly corrects an earlier evaluation bug that inflated numbers. Because routing is weak on short prompts, the design is lossless: cut skills keep their names in an index, and flat-confidence turns skip filtering. You train it on your own session data.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Choice | Which skills from the catalog are relevant to this prompt? | — |
How it works
- Extract a training set from your own OmO sessions.
- Train the head and run the router in Docker.
- On agent start, score all skills and keep the top-K (default 12).
- Skip filtering on flat-confidence turns; list cut skill names.
Strengths
- Smaller system prompts with sub-100 ms warm routing.
- Fails open and never fully hides a skill.
- Honest, corrected evaluation.
Caveats
- Modest top-1 accuracy; best used as a recall filter.
- Needs your own labelled session data.
- First full-catalog call takes about 9 s.
Getting started
git clone https://github.com/islee23520/omo-jevlike-router && cd omo-jevlike-router && python3 extract/extract_dataset.py, then follow the setup guide to train and start the router.At a glance
- Type
- Model
- Status
- prototype
- Language
- Python
- Runtime
- Docker service, OmO extension
- Has code
- yes
Use cases and integrations
How curated lists describe it
Skill routing: shrinks the skill catalog in a system prompt with one forward pass over a frozen Qwen, routing each request Jev-style.
yibie/awesome-jev
Frequently asked questions
What does the router decide?
Which skills from the catalog to keep in the system prompt for this request.
Can it hide a needed skill?
Not completely; cut skills remain listed by name, and uncertain turns skip filtering.
Does it need TypeSafe?
No, it uses a local Qwen2.5-0.5B with a trained head.
Related projects
Middleware for LangChain deepagents where Jev ranks and verifies which SKILL.md skills each turn needs, keeping the rest out of the prompt.
Agent skillbetaPythonMCP router that catalogs and deduplicates tools and exposes each agent only a relevant, authorised subset using typed decisions.
MCP serverbetaPythonLocal Python MCP service that keeps the skill catalog out of the agent's context and lets Jev pick which SKILL.md files to load.
MCP serverbetaPythonToolkit where Jev condenses large MCP responses for Claude Code and maps Codex requests to reviewed, fixed repository operations.
ProjectbetaTypeScriptClaude Code plugin with three Jev tools: verbatim context compaction, per-edit model routing and per-prompt skill selection.
ProjectbetaPythonPi extension that strips the inlined skill list and asks Jev which single skill, if any, to load per turn.
Agent skillbetaTypeScript