mirror of
https://github.com/aljazceru/opencode.git
synced 2025-12-24 03:04:21 +01:00
add option to allow agent switches to not change model (#3356)
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user