DEV Community

Amariah Kamau
Amariah Kamau

Posted on Originally published at atlarix.dev Fully Autonomous

The Deep-Thinking Toggle Was Too Blunt. It's Now an Effort Dial.

#ai

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)