description: "Model selection for the Web GUI: the /model popup and the composer model seat over one per-session provider-grouped directory; for users and maintainers of model routing."
English | 中文
The Web GUI lets users switch the model and reasoning effort for an existing session through either the /model popup or the composer's model control. Both surfaces present the same provider-grouped choices, and the selected model determines the available effort names and default. A complete selection applies to the next request; a running step keeps the model and effort it started with. If no adapter can serve the session's route, the composer remains disabled until routing becomes available.
Mount this plugin alongside ui-conversation and the commands package; the composer then shows the model seat next to the pending indicator, and /model opens the same directory as a popup. Both surfaces show the host-reported current selection when the exact provider/model pair remains in the advertised groups; a missing catalog row leaves the routable selection intact while the trigger prompts Select model.
Models stay grouped by provider. The menu shows model and effort names only; catalog descriptions remain available to other consumers. The /model popup applies the selected model's default effort; the composer can then choose any advertised effort. An adapter without reasoning metadata leaves the Effort row absent; there is no arbitrary effort input.
When the Host reports that no adapter serves the session's route, this plugin raises a composer block and the input goes inert with its own copy; recovering clears it without a reload. A null before the first load or after one failed never blocks, and catalog membership never blocks either — a route serving a model it does not advertise is missing from the groups yet usable.
Read these pages when the model surface is not enough. They move from the browser surfaces to the command popup shell and the selection contract.
/model contribution registers into.conversation.input.model seat and the composer block.Indirectly, through the session.selectModel selection both entries submit: the Host snapshots the complete ModelSelection at the next prompt-assembly boundary and owns the model-visible effect, while a running step keeps its assembled selection.
Switching the route can reduce or invalidate provider-side cache reuse for subsequent requests; the prompt prefix itself is untouched.
These limits define the current model surface. They are current package constraints, not a general model-router comparison or a task backlog.
Runtime invariant: No companion is published. A single command contribution registration whose disposal is proven by the HMR-safety spec — it emits no cordis events and owns no cross-plugin mutable state.