Right now the workflow/subagent model selection is likely too coarse. For generated workflows, we probably want a way to configure tiers like:
- BIG_MODEL / strong model for planning, architecture decisions, hard reasoning
- MEDIUM_MODEL for normal edits and synthesis
- SMALL_MODEL / weak model for cheap repetitive operations, classification, scanning, formatting, etc.
The main motivation is cost/control: users may not want an expensive frontier model updating thousands of files when a cheaper model can handle many workflow steps.
Open questions:
- Should model tiers be global config, workflow-level config, or both?
- Should the JS workflow DSL expose model selection per step/subagent?
- Should defaults map to strong/medium/small aliases rather than concrete provider model names?
- Do we want aider-compatible naming like strong_model / weak_model, or our existing BIG_MODEL / MEDIUM_MODEL / SMALL_MODEL style?
Potential API shape:
await agent.task("scan files", { model: "small" })
await agent.task("design migration", { model: "big" })
await agent.task("apply changes", { model: "medium" })
This should make dynamic workflows more practical for large repos and long-running subagent tasks.
Right now the workflow/subagent model selection is likely too coarse. For generated workflows, we probably want a way to configure tiers like:
The main motivation is cost/control: users may not want an expensive frontier model updating thousands of files when a cheaper model can handle many workflow steps.
Open questions:
Potential API shape:
This should make dynamic workflows more practical for large repos and long-running subagent tasks.