From c5cf134b793511d78821fa7fc010a1e455df0653 Mon Sep 17 00:00:00 2001 From: DBT Date: Sat, 28 Feb 2026 17:36:37 +0000 Subject: [PATCH] autonomy notify: fallback to first enabled allow_from channel/chat when notify target unset --- cmd/clawgo/cmd_gateway.go | 39 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/cmd/clawgo/cmd_gateway.go b/cmd/clawgo/cmd_gateway.go index 6e62448..0e653f4 100644 --- a/cmd/clawgo/cmd_gateway.go +++ b/cmd/clawgo/cmd_gateway.go @@ -938,8 +938,16 @@ func buildHeartbeatService(cfg *config.Config, msgBus *bus.MessageBus) *heartbea func buildAutonomyEngine(cfg *config.Config, msgBus *bus.MessageBus) *autonomy.Engine { a := cfg.Agents.Defaults.Autonomy + notifyChannel := strings.ToLower(strings.TrimSpace(a.NotifyChannel)) + notifyChatID := strings.TrimSpace(a.NotifyChatID) + if notifyChannel == "" || notifyChatID == "" { + if ch, chat := inferAutonomyNotifyTarget(cfg); ch != "" && chat != "" { + notifyChannel = ch + notifyChatID = chat + } + } notifyAllowFrom := []string{} - switch strings.ToLower(a.NotifyChannel) { + switch notifyChannel { case "telegram": notifyAllowFrom = append(notifyAllowFrom, cfg.Channels.Telegram.AllowFrom...) case "feishu": @@ -972,8 +980,33 @@ func buildAutonomyEngine(cfg *config.Config, msgBus *bus.MessageBus) *autonomy.E CompletionTemplate: cfg.Agents.Defaults.Texts.AutonomyCompletionTemplate, BlockedTemplate: cfg.Agents.Defaults.Texts.AutonomyBlockedTemplate, Workspace: cfg.WorkspacePath(), - DefaultNotifyChannel: a.NotifyChannel, - DefaultNotifyChatID: a.NotifyChatID, + DefaultNotifyChannel: notifyChannel, + DefaultNotifyChatID: notifyChatID, NotifyAllowFrom: notifyAllowFrom, }, msgBus) } + +func inferAutonomyNotifyTarget(cfg *config.Config) (string, string) { + if cfg == nil { + return "", "" + } + if cfg.Channels.Telegram.Enabled && len(cfg.Channels.Telegram.AllowFrom) > 0 { + return "telegram", strings.TrimSpace(cfg.Channels.Telegram.AllowFrom[0]) + } + if cfg.Channels.Feishu.Enabled && len(cfg.Channels.Feishu.AllowFrom) > 0 { + return "feishu", strings.TrimSpace(cfg.Channels.Feishu.AllowFrom[0]) + } + if cfg.Channels.WhatsApp.Enabled && len(cfg.Channels.WhatsApp.AllowFrom) > 0 { + return "whatsapp", strings.TrimSpace(cfg.Channels.WhatsApp.AllowFrom[0]) + } + if cfg.Channels.Discord.Enabled && len(cfg.Channels.Discord.AllowFrom) > 0 { + return "discord", strings.TrimSpace(cfg.Channels.Discord.AllowFrom[0]) + } + if cfg.Channels.QQ.Enabled && len(cfg.Channels.QQ.AllowFrom) > 0 { + return "qq", strings.TrimSpace(cfg.Channels.QQ.AllowFrom[0]) + } + if cfg.Channels.DingTalk.Enabled && len(cfg.Channels.DingTalk.AllowFrom) > 0 { + return "dingtalk", strings.TrimSpace(cfg.Channels.DingTalk.AllowFrom[0]) + } + return "", "" +}