fix(agent): normalize subagent openrouter model ids
This commit is contained in:
parent
fd9914dd92
commit
d456e5a5f0
2 changed files with 51 additions and 1 deletions
|
|
@ -285,7 +285,11 @@ func registerSharedTools(
|
||||||
spawnEnabled := cfg.Tools.IsToolEnabled("spawn")
|
spawnEnabled := cfg.Tools.IsToolEnabled("spawn")
|
||||||
spawnStatusEnabled := cfg.Tools.IsToolEnabled("spawn_status")
|
spawnStatusEnabled := cfg.Tools.IsToolEnabled("spawn_status")
|
||||||
if (spawnEnabled || spawnStatusEnabled) && cfg.Tools.IsToolEnabled("subagent") {
|
if (spawnEnabled || spawnStatusEnabled) && cfg.Tools.IsToolEnabled("subagent") {
|
||||||
subagentManager := tools.NewSubagentManager(provider, agent.Model, agent.Workspace)
|
subagentManager := tools.NewSubagentManager(
|
||||||
|
provider,
|
||||||
|
resolveSubagentDefaultModel(agent),
|
||||||
|
agent.Workspace,
|
||||||
|
)
|
||||||
subagentManager.SetLLMOptions(agent.MaxTokens, agent.Temperature)
|
subagentManager.SetLLMOptions(agent.MaxTokens, agent.Temperature)
|
||||||
|
|
||||||
// Set the spawner that links into AgentLoop's turnState
|
// Set the spawner that links into AgentLoop's turnState
|
||||||
|
|
@ -377,6 +381,16 @@ func registerSharedTools(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func resolveSubagentDefaultModel(agent *AgentInstance) string {
|
||||||
|
if agent == nil {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
if len(agent.Candidates) > 0 && strings.TrimSpace(agent.Candidates[0].Model) != "" {
|
||||||
|
return strings.TrimSpace(agent.Candidates[0].Model)
|
||||||
|
}
|
||||||
|
return agent.Model
|
||||||
|
}
|
||||||
|
|
||||||
func (al *AgentLoop) Run(ctx context.Context) error {
|
func (al *AgentLoop) Run(ctx context.Context) error {
|
||||||
al.running.Store(true)
|
al.running.Store(true)
|
||||||
|
|
||||||
|
|
|
||||||
36
pkg/agent/subagent_default_model_test.go
Normal file
36
pkg/agent/subagent_default_model_test.go
Normal file
|
|
@ -0,0 +1,36 @@
|
||||||
|
package agent
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/sipeed/picoclaw/pkg/providers"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestResolveSubagentDefaultModel(t *testing.T) {
|
||||||
|
t.Run("prefers resolved candidate model", func(t *testing.T) {
|
||||||
|
agent := &AgentInstance{
|
||||||
|
Model: "openrouter/minimax/minimax-m2.5",
|
||||||
|
Candidates: []providers.FallbackCandidate{
|
||||||
|
{Provider: "openrouter", Model: "minimax/minimax-m2.5"},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
if got := resolveSubagentDefaultModel(agent); got != "minimax/minimax-m2.5" {
|
||||||
|
t.Fatalf("resolveSubagentDefaultModel() = %q, want %q", got, "minimax/minimax-m2.5")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("falls back to raw agent model when no candidates exist", func(t *testing.T) {
|
||||||
|
agent := &AgentInstance{Model: "claude-sonnet-4.6"}
|
||||||
|
|
||||||
|
if got := resolveSubagentDefaultModel(agent); got != "claude-sonnet-4.6" {
|
||||||
|
t.Fatalf("resolveSubagentDefaultModel() = %q, want %q", got, "claude-sonnet-4.6")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("returns empty string for nil agent", func(t *testing.T) {
|
||||||
|
if got := resolveSubagentDefaultModel(nil); got != "" {
|
||||||
|
t.Fatalf("resolveSubagentDefaultModel(nil) = %q, want empty string", got)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
Loading…
Add table
Reference in a new issue