Skip to content

Support phase-specific model selection #79

Description

@maxBRT

Goal

Ship should support selecting different models for different Phases of a Run.

The blog post calls out selecting different models for different phases. Today Ship has a single model setting, and that same model is passed to every Agent invocation.

Why

Implement, Review, and Final have different cost and quality tradeoffs.

Examples:

  • Implement might use a strong coding model.
  • Review might use a stronger reasoning model.
  • Final might use a slower or more careful model for integration review and PR creation.
  • Some users may want cheaper models for low-risk tickets and stronger models for Final.

Initial scope

Allow model selection at Phase granularity:

  • Implement model
  • Review model
  • Final model

The current global model setting should probably remain as a default or fallback.

Questions to answer during planning

  • What config shape is easiest to understand?
  • How should flags override phase-specific YAML config?
  • Should --model continue to set all Phases for a single invocation?
  • Should there be flags like --implement-model, --review-model, and --final-model?
  • How should this interact with different Agent kinds, since model names are provider-specific?

Possible implementation direction

Add config like:

model: "" # default for all phases when phase-specific model is absent
models:
  implement: ""
  review: ""
  final: ""

Then resolve the model in runPhase based on the Phase name.

Acceptance sketch

  • A user can configure a different model for Implement, Review, and Final.
  • The existing model config keeps working as a fallback.
  • CLI flags can override the config in a predictable way.
  • Tests verify each Agent request receives the expected model for each Phase.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestideaNot fleshed out, simple note

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions