For a long time Atlarix had exactly one way to make a model think harder: a Deep-thinking toggle, on or off. The problem was never that a boolean is crude — it's that deep thinking means something different to every model, and a single switch couldn't say any of those things. The toggle is now an effort dial. This is why.
What the toggle couldn't say
A boolean can only ask for more or less, but reasoning models don't all speak more-or-less. Some expose a list of named effort levels — none, low, medium, high, xhigh, max. Others expose a thinking-token budget. Some only have an on/off switch of their own. A few reason natively and accept no control at all. A single Deep-thinking toggle had to pretend all of those were the same dial — and on some models it silently did nothing, sending a value the model ignored or would have rejected.
What /effort is
/effort is a level you pick for a chat, and the levels are the model's own, exactly as it lists them. Pick max on a model that lists max; pick xhigh on a model that lists xhigh. We don't translate one model's levels into another's. Higher means the model thinks longer and costs more — that's the whole trade, stated on the control itself.
Every model lists its own levels
The same control means something different on each model, and that's the point:
| Model | Its effort control |
|---|---|
| OpenAI GPT-5.x | none / low / medium / high / xhigh |
| Atlarix Auto | none — it picks the model per turn |
| A budget-only model | low / medium / high (thinking-token budget) |
| A toggle-only model | off / on |
| A model with no control | no Effort section — it reasons natively |
A model that reasons natively with no parameter gets no Effort control at all. Showing a control that does nothing would be worse than showing none.
Per chat, not a global switch
The old toggle was one setting for the whole app. Effort is per chat: one conversation can run a model at high while the next runs at low. Change models and a level the new model also lists carries over; a level it doesn't have is dropped, and it falls back to its own default. The default is what the model ran before /effort existed — leave it unset and you get exactly the old behaviour.
Where it lives
In the desktop app it's the Effort section of the composer's config menu; in the CLI it's /effort; in an editor that speaks the Agent Client Protocol it's the thinking config option. All three write the same per-chat level.
The toggle wasn't wrong — it was the smallest possible version of the idea. Effort keeps the same intent, a knob for how hard the model thinks, and lets each model describe what harder actually means. One control, honest about the model it's attached to.
Top comments (0)