[M2] AgentDetector : identifier les bots et agents IA Matrix #11

Closed
opened 2026-04-06 01:34:02 +00:00 by charles · 0 comments
Owner

Contexte

Composant central de M2 : détermine si un utilisateur Matrix est un agent IA (OpenClaw, bot générique, etc.) pour activer les fonctionnalités spécifiques.

Critères d'acceptation

  • Struct AgentDetector : known_agents: HashSet<OwnedUserId>, patterns: Vec<Regex>, cache: DashMap<OwnedUserId, AgentInfo>
  • Struct AgentInfo : user_id, agent_type: AgentType (OpenClaw/Generic/Custom), display_name, capabilities: Vec<String>, model: Option<String>
  • Détection via : flag m.bot du profil Matrix, patterns de localpart configurables (*-bot, *-agent), liste manuelle dans config
  • AgentType::OpenClaw détecté via user agent ou champ de profil spécifique
  • Cache invalidé si le profil de l'utilisateur change
  • Configurable dans config.toml : [ai] default_agent, patterns, liste known_agents

Notes techniques

  • Dépend de : #2 (fractal-ext), #1 (workspace)
  • DashMap pour accès concurrent sans lock global
  • La détection est best-effort : un faux positif est inoffensif, un faux négatif prive de features
## Contexte Composant central de M2 : détermine si un utilisateur Matrix est un agent IA (OpenClaw, bot générique, etc.) pour activer les fonctionnalités spécifiques. ## Critères d'acceptation - [ ] Struct `AgentDetector` : `known_agents: HashSet<OwnedUserId>`, `patterns: Vec<Regex>`, `cache: DashMap<OwnedUserId, AgentInfo>` - [ ] Struct `AgentInfo` : `user_id`, `agent_type: AgentType` (OpenClaw/Generic/Custom), `display_name`, `capabilities: Vec<String>`, `model: Option<String>` - [ ] Détection via : flag `m.bot` du profil Matrix, patterns de localpart configurables (`*-bot`, `*-agent`), liste manuelle dans config - [ ] `AgentType::OpenClaw` détecté via user agent ou champ de profil spécifique - [ ] Cache invalidé si le profil de l'utilisateur change - [ ] Configurable dans `config.toml` : `[ai] default_agent`, patterns, liste `known_agents` ## Notes techniques - Dépend de : #2 (fractal-ext), #1 (workspace) - `DashMap` pour accès concurrent sans lock global - La détection est best-effort : un faux positif est inoffensif, un faux négatif prive de features
Sign in to join this conversation.
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
charles/my-fractal#11
No description provided.