diff --git a/pkg/tools/cron.go b/pkg/tools/cron.go index 8fd8c1d71..8fabc95bb 100644 --- a/pkg/tools/cron.go +++ b/pkg/tools/cron.go @@ -6,6 +6,7 @@ import ( "strings" "time" + "github.com/google/uuid" "github.com/sipeed/picoclaw/pkg/bus" "github.com/sipeed/picoclaw/pkg/config" "github.com/sipeed/picoclaw/pkg/constants" @@ -342,7 +343,7 @@ func (t *CronTool) ExecuteJob(ctx context.Context, job *cron.CronJob) string { return "ok" } - sessionKey := fmt.Sprintf("cron-%s-%d", job.ID, time.Now().UnixMilli()) + sessionKey := fmt.Sprintf("agent:cron-%s-%s", job.ID, uuid.New().String()) // Call agent with the job message response, err := t.executor.ProcessDirectWithChannel( diff --git a/pkg/tools/cron_test.go b/pkg/tools/cron_test.go index c699908cd..694349b60 100644 --- a/pkg/tools/cron_test.go +++ b/pkg/tools/cron_test.go @@ -271,8 +271,8 @@ func TestCronTool_ExecuteJobPublishesAgentResponse(t *testing.T) { t.Fatalf("ExecuteJob() = %q, want ok", got) } - if executor.lastKey != "cron-job-1" { - t.Fatalf("sessionKey = %q, want cron-job-1", executor.lastKey) + if !strings.HasPrefix(executor.lastKey, "agent:cron-job-1-") { + t.Fatalf("sessionKey = %q, want agent:cron-job-1-{uuid}", executor.lastKey) } if executor.lastChan != "telegram" || executor.lastChatID != "chat-1" { t.Fatalf("executor target = %s/%s, want telegram/chat-1", executor.lastChan, executor.lastChatID)