Se añade detección de preguntas dirigidas al grupo en los prompts de routing
y quality. Cuando el usuario usa plural o se dirige colectivamente a los
agentes ("¿qué opinan?", "chicos", "hey everyone", etc.), el routing baja
la confianza a 0.2 y el evaluador de calidad mantiene continue=true hasta
que todos los agentes hayan participado.
Esto garantiza que preguntas con intención grupal reciban respuestas de
todos los agentes disponibles, no solo del más relevante.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Se reescriben los tres prompts del orquestador (routing, quality, refinement)
para fomentar la interacción entre agentes en lugar de respuestas individuales.
- Routing: instruye al LLM a mantener confianza baja (0.3-0.6) en preguntas
generales para disparar contribuciones de múltiples agentes.
- Quality: nuevo sistema de scoring que favorece la colaboración. Un solo agente
respondiendo nunca supera 0.5, forzando que otros participen.
- Refinement: cambia el enfoque de "mejorar" a "enriquecer con perspectiva única",
priorizando agentes con expertise diferente al anterior.
- Config: max_iterations 3→6, quality_threshold 0.8→0.85, nuevo campo
repetition_threshold: 0.6 para detección de bucles.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Implementa el sistema de orquestación para salas Matrix con múltiples bots.
El orquestador es un "special agent" sin identidad Matrix que coordina qué bot
responde y cuándo, usando LLM (Claude) para routing y evaluación de calidad.
Cambios principales:
- pkg/orchestration/task.go: tipos puros (TaskEvent, BotResponse, QualityScore, RoutingDecision)
- shell/orchestration/: runtime del orquestador (orchestrator.go, router.go, evaluator.go)
- agents/specials/orchestrator/: config + prompts (routing, quality, refinement)
- internal/config/: SpecialConfig, OrchestrationCfg, LoadSpecial()
- shell/bus/bus.go: protocolo request-reply (SendAndWait, Reply) para delegación
- shell/matrix/listener.go: InterceptFunc para interceptar eventos en salas orquestadas
- agents/runtime.go: SetBus, listenBus, handleTaskEvent para recibir tareas del orquestador
- cmd/launcher/main.go: creación de bus compartido, arranque del orquestador antes de bots
Incluye deduplicación para evitar que múltiples listeners en la misma sala
disparen el orquestador más de una vez por mensaje.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>