Skip to content

[routing] Context-aware tool shortlisting with conversation hints #116

@dgenio

Description

@dgenio

Problem

Current routing uses only the query text for beam search scoring, ignoring conversation context. Multi-turn routing quality degrades because each query is scored in isolation.

Proposal

Add optional context_hints: list[str] | None parameter to Router.route():

result = router.route(
    query="send the report",
    context_hints=["email", "spreadsheet", "quarterly revenue"],
)

Compute TF-IDF similarity between hints and node descriptions; apply a configurable boost multiplier (default 0.15) with recency weighting. Include context_boost_applied in RouteResult for debuggability.

Constraints

  • Backward-compatible: hints are optional
  • Single-turn quality must not degrade (boost is additive)
  • Deterministic behavior maintained

Acceptance Criteria

  • Router.route() accepts optional context_hints parameter
  • Context hints boost scores for matching tools
  • No regression on single-turn queries
  • RouteResult includes context boost metadata
  • Boost multiplier is configurable
  • Tests cover hint boosting and no-hint baseline

File Paths

  • src/contextweaver/routing/router.py (edit)
  • tests/test_router.py (edit)

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/routingRouting engine: catalog, graph, router, cardscomplexity/averageStandard effort, moderate familiarity neededenhancementNew feature or requestmilestone/v0.3v0.3 — Production readinesspriority/mediumMedium priority — production readiness

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions