pub struct RuleBasedRouter;Expand description
Rule-based agent router with a 3-step fallback chain:
task.agent_hintexact match against available agent names.- Tool requirement matching: keywords in task description matched against agent tool policies (last-resort heuristic — see limitations note).
- First available agent (fallback).
§Limitations
The keyword-to-tool matching (step 2) is intentionally basic. Common English words
(“read”, “build”, “review”, “edit”) frequently appear in task descriptions unrelated
to specific tool requirements. For reliable routing, the planner should always set
task.agent_hint explicitly. Step 2 is a fallback for when no hint is provided and
no exact match is found — treat it as a best-effort heuristic, not authoritative routing.
The ultimate fallback (step 3) returns the first available agent unconditionally.
Step 2 only matches English keywords. Non-English task descriptions will always fall through to step 3.
Trait Implementations§
Source§impl AgentRouter for RuleBasedRouter
impl AgentRouter for RuleBasedRouter
Auto Trait Implementations§
impl Freeze for RuleBasedRouter
impl RefUnwindSafe for RuleBasedRouter
impl Send for RuleBasedRouter
impl Sync for RuleBasedRouter
impl Unpin for RuleBasedRouter
impl UnsafeUnpin for RuleBasedRouter
impl UnwindSafe for RuleBasedRouter
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request