[M2] Crate fractal-ai + AgentDetector (SF-M2-01, ST-M2-01, ST-M2-02) #20

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

Contexte

Première brique de M2 : créer la crate fractal-ai qui implémente le trait Extension et fournit la détection des agents IA dans les rooms Matrix (SF-M2-01).

Critères d'acceptation

  • Crate fractal-ai créée dans le workspace, implémentant le trait Extension
  • AgentDetector avec trois sources de détection :
    • Flag m.bot dans le profil Matrix de l'utilisateur
    • Patterns de localpart configurables (ex: *-bot, *-agent, openclaw*)
    • Liste manuelle d'user IDs dans config.toml ([ai] section)
  • AgentInfo avec user_id, agent_type (OpenClaw / Generic / Custom), display_name, capabilities, model
  • Cache DashMap<OwnedUserId, AgentInfo> pour éviter les appels répétés
  • AgentType::OpenClaw détecté via user agent ou profil spécifique

Notes techniques

pub struct AgentDetector {
    known_agents: HashSet<OwnedUserId>,
    patterns: Vec<Regex>,
    cache: DashMap<OwnedUserId, AgentInfo>,
}
  • Dépend de #2 (fractal-ext)
  • Dépendances : dashmap, regex
## Contexte Première brique de M2 : créer la crate `fractal-ai` qui implémente le trait `Extension` et fournit la détection des agents IA dans les rooms Matrix (SF-M2-01). ## Critères d'acceptation - [ ] Crate `fractal-ai` créée dans le workspace, implémentant le trait `Extension` - [ ] `AgentDetector` avec trois sources de détection : - Flag `m.bot` dans le profil Matrix de l'utilisateur - Patterns de localpart configurables (ex: `*-bot`, `*-agent`, `openclaw*`) - Liste manuelle d'user IDs dans `config.toml` (`[ai]` section) - [ ] `AgentInfo` avec `user_id`, `agent_type` (OpenClaw / Generic / Custom), `display_name`, `capabilities`, `model` - [ ] Cache `DashMap<OwnedUserId, AgentInfo>` pour éviter les appels répétés - [ ] `AgentType::OpenClaw` détecté via user agent ou profil spécifique ## Notes techniques ```rust pub struct AgentDetector { known_agents: HashSet<OwnedUserId>, patterns: Vec<Regex>, cache: DashMap<OwnedUserId, AgentInfo>, } ``` - Dépend de #2 (fractal-ext) - Dépendances : `dashmap`, `regex`
Sign in to join this conversation.
No milestone
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#20
No description provided.