feat: 添加虚拟调度器聊天 ID 前缀,跳过不应发送到外部通道的消息

This commit is contained in:
oudecheng 2026-05-09 17:20:02 +08:00
parent f4758f8513
commit 83b525e442

View File

@ -12,6 +12,9 @@ pub struct OutboundDispatcher {
channels: Arc<RwLock<HashMap<String, Arc<dyn Channel + Send + Sync>>>>,
}
/// Prefix for virtual scheduler chat IDs that should not be sent to external channels.
const SCHEDULER_VIRTUAL_CHAT_ID_PREFIX: &str = "scheduler/";
impl OutboundDispatcher {
pub fn new(bus: Arc<MessageBus>) -> Self {
Self {
@ -40,6 +43,17 @@ impl OutboundDispatcher {
"OutboundDispatcher received message"
);
// Skip messages with virtual scheduler chat IDs (e.g., "scheduler/job_id")
// These are internal messages from SilentAgentTask that should not be sent externally
if msg.chat_id.starts_with(SCHEDULER_VIRTUAL_CHAT_ID_PREFIX) {
tracing::debug!(
channel = %msg.channel,
chat_id = %msg.chat_id,
"Skipping message with virtual scheduler chat_id"
);
continue;
}
let channel_name = msg.channel.clone();
let channel = self.channels.read().await.get(&channel_name).cloned();