add option to allow agent switches to not change model (#3356)

This commit is contained in:
geril07
2025-10-23 01:51:46 +03:00
committed by GitHub
parent 3c3d2f5a6e
commit c2ef930d2a

View File

@@ -253,22 +253,14 @@ func SetClipboard(text string) tea.Cmd {
return tea.Sequence(cmds...)
}
func (a *App) cycleMode(forward bool) (*App, tea.Cmd) {
if forward {
a.AgentIndex++
if a.AgentIndex >= len(a.Agents) {
a.AgentIndex = 0
}
} else {
a.AgentIndex--
if a.AgentIndex < 0 {
a.AgentIndex = len(a.Agents) - 1
}
}
if a.Agent().Mode == "subagent" {
return a.cycleMode(forward)
}
func (a *App) updateModelForNewAgent() {
singleModelEnv := os.Getenv("OPENCODE_AGENTS_SWITCH_SINGLE_MODEL")
isSingleModel := singleModelEnv == "1" || singleModelEnv == "true"
if isSingleModel {
return
}
// Set up model for the new agent
modelID := a.Agent().Model.ModelID
providerID := a.Agent().Model.ProviderID
if modelID == "" {
@@ -292,6 +284,25 @@ func (a *App) cycleMode(forward bool) (*App, tea.Cmd) {
}
}
}
}
func (a *App) cycleMode(forward bool) (*App, tea.Cmd) {
if forward {
a.AgentIndex++
if a.AgentIndex >= len(a.Agents) {
a.AgentIndex = 0
}
} else {
a.AgentIndex--
if a.AgentIndex < 0 {
a.AgentIndex = len(a.Agents) - 1
}
}
if a.Agent().Mode == "subagent" {
return a.cycleMode(forward)
}
a.updateModelForNewAgent()
a.State.Agent = a.Agent().Name
a.State.UpdateAgentUsage(a.Agent().Name)
@@ -380,30 +391,7 @@ func (a *App) SwitchToAgent(agentName string) (*App, tea.Cmd) {
}
}
// Set up model for the new agent
modelID := a.Agent().Model.ModelID
providerID := a.Agent().Model.ProviderID
if modelID == "" {
if model, ok := a.State.AgentModel[a.Agent().Name]; ok {
modelID = model.ModelID
providerID = model.ProviderID
}
}
if modelID != "" {
for _, provider := range a.Providers {
if provider.ID == providerID {
a.Provider = &provider
for _, model := range provider.Models {
if model.ID == modelID {
a.Model = &model
break
}
}
break
}
}
}
a.updateModelForNewAgent()
a.State.Agent = a.Agent().Name
a.State.UpdateAgentUsage(agentName)