Skip to content

Dynamic agent selection — capability and confidence-based activation beyond key existence #82

@mdproctor

Description

@mdproctor

Overview

Extend Binding entry conditions beyond key existence to include capability matching, confidence thresholds, worker load, and quality-of-match scoring for dynamic agent selection.

Part of epic #77 (Blackboard Architecture Evolution).

Background

Recent LLM blackboard research demonstrates that dynamic agent selection — choosing which agent activates based on current context and agent fit — significantly improves solution quality and reduces wasted computation.

Current Binding conditions: a JQ expression that evaluates to true/false against CaseContext. This is binary — condition matches or it doesn't. No notion of quality-of-match, confidence, or capability fit.

What to build

  • Confidence-weighted activation: Workers can optionally return a confidence score (0–1) given current CaseContext state. `WorkerSelectionStrategy` uses scores to prefer higher-confidence candidates.
  • Capability-based criteria: Binding conditions can include capability tags (e.g. `capability:nlp`, `capability:code-review`) resolved against registered Worker capabilities.
  • Load-aware selection: `WorkerSelectionStrategy` can deprioritise Workers currently executing on other cases (worker load signal, already partially supported via `LeastLoadedStrategy`).
  • Fit scoring API: `Worker.score(CaseContext)` — optional method returning activation fitness. The Binding evaluator calls it when present; returns 1.0 by default (current behaviour).

Relationship to existing work

Extends the expression-based Binding evaluation and `WorkerSelectionStrategy` SPI (issue #76). Binding conditions remain expression-based; this adds a scoring layer on top of eligibility evaluation.

Note: `WorkerSelectionStrategy` in the `WorkBroker` subsystem addresses a related but separate concern (worker selection for request-response tasks, not CaseContext-driven Binding activation).

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestfuturePlanned work for future releases.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions