Summary
Introduce a lightweight selector that recommends a model per task, with default static mapping preserved. Run in "suggest" mode by default and log rationale and final choice for auditability.
Why
- Optimize cost/performance without hidden complexity
- Keep choices reproducible and reviewable
Scope
- Add selector function and logging; keep static mapping as default
- Caps for latency/cost; do not introduce multi-turn loops
Tasks
Acceptance Criteria
- No behavior change without flags
- Suggest mode logs recommendations and rationale
- All selections remain reproducible with static map unless explicitly overridden
Risks & Mitigations
- Hidden complexity -> keep suggestion-only default; explicit override required to change model
- Latency -> single call with short context keys, not full corpus
References
suggestion.md (Context-Aware Model Selection)
a2a/models.py
Summary
Introduce a lightweight selector that recommends a model per task, with default static mapping preserved. Run in "suggest" mode by default and log rationale and final choice for auditability.
Why
Scope
Tasks
a2a/models.py: select_model_with_reasoning(task, context) -> str(temp=0)--selector-suggestflag to allow suggestion displaydocs/timeline/model-selection.jsonlwith {task, context_keys, recommended, chosen, rationale, ts}.a2dev/perf.yamlAcceptance Criteria
Risks & Mitigations
References
suggestion.md(Context-Aware Model Selection)a2a/models.py