opencode icon indicating copy to clipboard operation
opencode copied to clipboard

fix(tui): respect model-agent selection in the home screen

Open ucirello opened this issue 1 month ago • 21 comments

This PR restores the agent-model tuple switching behavior of pre-v1.0.

Closes https://github.com/sst/opencode/issues/4344

ucirello avatar Nov 25 '25 16:11 ucirello

Overlaps with https://github.com/sst/opencode/pull/4514 - please close this one if that one is the desired fix.

ucirello avatar Nov 25 '25 16:11 ucirello

@ucirello is this still a wip?

Also if you wanna get it into the correct state ill just close the AI one that was a one shot and a poor one

rekram1-node avatar Nov 26 '25 07:11 rekram1-node

@rekram1-node - it is good, in the sense that I think it is write. But I didn't want to crowd the AI attempt out. I am going to mark this as ready to review.

ucirello avatar Nov 26 '25 16:11 ucirello

@rekram1-node -- I will make one more set of tests, and then I'd ping you, if that's OK.

ucirello avatar Nov 26 '25 16:11 ucirello

yeah no problem ping me anytime

rekram1-node avatar Nov 26 '25 16:11 rekram1-node

ams

@rekram1-node I think it is OK now.

ucirello avatar Nov 26 '25 16:11 ucirello

This does introduce a regression, and note that none of my agents have a hardcoded model id.

Now my model selections are persisted but not used

https://github.com/user-attachments/assets/4545ae61-fe8c-4ff8-b58a-722e3d917fed

rekram1-node avatar Nov 26 '25 16:11 rekram1-node

@rekram1-node -- moving this to WIP, and digging harder for the issue.

ucirello avatar Nov 26 '25 17:11 ucirello

@rekram1-node -- I dug further - and I think I validated the behavior thoroughly.

validation

ucirello avatar Nov 26 '25 17:11 ucirello

But now if I switch agents and don't have a model set in my config, it resets the model each time.

Also it isn't a huge deal but it wipes your last used model for people so if someone upgraded and opened opencode it wouldnt start up with their actual last used model

rekram1-node avatar Nov 26 '25 18:11 rekram1-node

@rekram1-node -- thank you for working with me. Let me try it harder - thank you.

ucirello avatar Nov 26 '25 18:11 ucirello

OK - as of https://github.com/sst/opencode/pull/4741/commits/c427adaaeaa32ef2648d042ee18393be20a3e581, I think each agent remembers its own model selection independently, so switching between agents no longer causes one agent's model to leak into another. I tested this by assigning different models to Build, Plan, and Docs, then cycling through them repeatedly to confirm no cross-contamination. I also verified that agents with hard-coded models in their config files cannot be overridden through the UI. Then, I sent messages to each agent and confirmed the responses matched the expected model. At last, I check for the persistence across restarts and simulated an upgrade scenario where an existing user with only recent history (no per-agent selections) correctly falls back to their last-used model while hard-coded agents would still take precedence.

validation

ucirello avatar Nov 26 '25 19:11 ucirello

@rekram1-node I should be closer - I tried to test more scenarios, and I tried to find some more. If there is a regression, then I guess it wouldn't be an obvious one. We are getting closer - thanks for working with me.

ucirello avatar Nov 26 '25 19:11 ucirello

sounds good, want me to take another look?

rekram1-node avatar Nov 26 '25 20:11 rekram1-node

@rekram1-node -- yes please.

ucirello avatar Nov 26 '25 20:11 ucirello

Now if I hardcode a model and switch to the agent with hardcoded model the model doesnt change to the specified one

rekram1-node avatar Nov 26 '25 21:11 rekram1-node

Now if I hardcode a model and switch to the agent with hardcoded model the model doesnt change to the specified one

~Also it seems I found a bug in current release that models set in opencode.json aren't being used as default either.~

I will try and address these two additional cases.

ucirello avatar Nov 26 '25 22:11 ucirello

@rekram1-node

I covered these scenarios:

  • no model in opencode.json
  • model in opencode.json
  • seeing agents-models pairs correctly switching in home screen, and confirming that agents with hard-coded models can't be overriden.
  • seeing agents-models pairs correctly switching in chat screen, and confirming that agents with hard-coded models can't be overriden.
  • one upgrade path (when only recent model is declared)
  • corner-case: hard-coded model in agent file set after model has been chosen for the given agent.

Is there any other scenario that I should cover?

validation-20251127

ucirello avatar Nov 27 '25 20:11 ucirello

@ucirello so close this is almost perfect. Only thing now is that if I hardcode an agent model, then i have that agent selected, then try to change models. It is impossible to do now

rekram1-node avatar Nov 28 '25 20:11 rekram1-node

@rekram1-node -- thank you for checking it and for working with me. We'll get there! Ping when I am done with this round of changes.

ucirello avatar Nov 29 '25 04:11 ucirello

@rekram1-node - Please take a look at 07c448b08f4d5ed227e73f9df00d39183b2efaae ?

I had a bit of a hard time to think what the appropriate behavior would be to address this:

Only thing now is that if I hardcode an agent model, then i have that agent selected, then try to change models. It is impossible to do now

ucirello avatar Dec 01 '25 16:12 ucirello

Yeah this still has bugs:

switch model, tab through agents, 2 agents will have the new model, 3rd one wont. (None of the agents have hardcoded models and "model" isn't set in config).

The agents I am referring to are ones in this repo: build, plan, docs

rekram1-node avatar Dec 02 '25 19:12 rekram1-node

I plan to get back to this at a later date. I will close this PR and re-open it when I pick this up.

ucirello avatar Dec 16 '25 16:12 ucirello