agentscope-ai / agentscope-ai/QwenPaw

feat: Semantic skill routing for large skill pools

Open
#3,091 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
34.9k
Forks
3.1k
Avg merge
1d 15h
Merged PRs (30d)
225

Description

```markdown
## Problem

When users install 50+ skills and connect multiple MCP servers, CoPaw injects
all skill metadata into the LLM context. This causes:
- Context overflow with large skill pools
- Poor skill selection accuracy due to information overload
- Unnecessary token consumption

As the skill ecosystem grows (Skills Hub, community skills, MCP servers),
this problem will become increasingly severe.

## Proposed Solution

Add an optional semantic routing layer that uses embedding-based retrieval
(sentence-transformers + FAISS) to filter skills before injecting them into
the agent context. Only the top-k most relevant skills are registered per query.

Key design principles:
- **Zero-invasive**: Disabled by default, optional dependency (`copaw[semantic]`)
- **Fail-open**: Falls back to existing behavior on any error
- **No interface changes**: All existing public APIs remain unchanged

### Background

I'm 燕衡 from Alibaba Private Cloud. We've been working on compositional skill
routing for LLM agents and have a paper in preparation on this topic.
Key findings from our experiments:

- Embedding-based skill retrieval reduces context consumption by 99%+
while maintaining selection accuracy
- A lightweight encoder (all-MiniLM-L6-v2, ~80MB) is sufficient for
skill-level routing — no GPU required
- Metadata-only retrieval (name + description) matches full-body retrieval

This PR adapts the core algorithms natively into CoPaw's codebase
(no external dependency). Happy to share more details about the research
privately if helpful.

## Scope

I plan to contribute this in 3 focused PRs:
- **PR1**: Semantic skill filtering (this issue) — smallest change, highest value
- **PR2**: MCP tool filtering — reuses PR1 infrastructure
- **PR3**: Multi-skill composition — task decomposition + DAG planning

## Implementation Plan

- New module: `src/copaw/routing/`
- Config: `semantic_routing` section in config.json (disabled by default)
- Optional deps: `sentence-transformers`, `faiss-cpu` (declared as extras)
- Integration point: `CoPawAgent._register_skills()`
- Full test coverage with auto-skip when optional deps not installed

Happy to discuss the approach before submitting code. Looking forward to
contributing to CoPaw!
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.