This commit is contained in:
OpenClaw-User 2026-03-14 17:10:38 +08:00
commit 5d57b1a8d5
2 changed files with 54 additions and 2 deletions

View file

@ -68,7 +68,6 @@ type processOptions struct {
const ( const (
defaultResponse = "I've completed processing but have no response to give. Increase `max_tool_iterations` in config.json." defaultResponse = "I've completed processing but have no response to give. Increase `max_tool_iterations` in config.json."
sessionKeyAgentPrefix = "agent:"
metadataKeyAccountID = "account_id" metadataKeyAccountID = "account_id"
metadataKeyGuildID = "guild_id" metadataKeyGuildID = "guild_id"
metadataKeyTeamID = "team_id" metadataKeyTeamID = "team_id"
@ -774,7 +773,7 @@ func (al *AgentLoop) resolveMessageRoute(msg bus.InboundMessage) (routing.Resolv
} }
func resolveScopeKey(route routing.ResolvedRoute, msgSessionKey string) string { func resolveScopeKey(route routing.ResolvedRoute, msgSessionKey string) string {
if msgSessionKey != "" && strings.HasPrefix(msgSessionKey, sessionKeyAgentPrefix) { if msgSessionKey != "" {
return msgSessionKey return msgSessionKey
} }
return route.SessionKey return route.SessionKey

View file

@ -439,6 +439,59 @@ func TestProcessMessage_UsesRouteSessionKey(t *testing.T) {
} }
} }
func TestProcessDirectWithChannel_PreservesExplicitSessionKey(t *testing.T) {
tmpDir, err := os.MkdirTemp("", "agent-test-*")
if err != nil {
t.Fatalf("Failed to create temp dir: %v", err)
}
defer os.RemoveAll(tmpDir)
cfg := &config.Config{
Agents: config.AgentsConfig{
Defaults: config.AgentDefaults{
Workspace: tmpDir,
Model: "test-model",
MaxTokens: 4096,
MaxToolIterations: 10,
},
},
}
msgBus := bus.NewMessageBus()
provider := &simpleMockProvider{response: "ok"}
al := NewAgentLoop(cfg, msgBus, provider)
const sessionKey = "custom-session"
response, err := al.ProcessDirectWithChannel(
context.Background(),
"hello",
sessionKey,
"cli",
"direct",
)
if err != nil {
t.Fatalf("ProcessDirectWithChannel() error = %v", err)
}
if response != "ok" {
t.Fatalf("response = %q, want %q", response, "ok")
}
defaultAgent := al.registry.GetDefaultAgent()
if defaultAgent == nil {
t.Fatal("No default agent found")
}
history := defaultAgent.Sessions.GetHistory(sessionKey)
if len(history) != 2 {
t.Fatalf("history len = %d, want 2", len(history))
}
if history[0].Role != "user" || history[0].Content != "hello" {
t.Fatalf("unexpected user message: %+v", history[0])
}
if history[1].Role != "assistant" || history[1].Content != "ok" {
t.Fatalf("unexpected assistant message: %+v", history[1])
}
}
func TestProcessMessage_CommandOutcomes(t *testing.T) { func TestProcessMessage_CommandOutcomes(t *testing.T) {
tmpDir, err := os.MkdirTemp("", "agent-test-*") tmpDir, err := os.MkdirTemp("", "agent-test-*")
if err != nil { if err != nil {