Agentic OS
Traitez Claude Code comme un environnement d'exécution / système d'exploitation persistant plutôt que comme une session de chat. Cette compétence codifie l'architecture utilisée par les configurations agentiques en production : un noyau qui achemine les tâches vers des agents spécialisés, une mémoire persistante basée sur fichiers, une automatisation planifiée et une couche de données JSON/markdown.
Quand activer
- Construire un workflow multi-agents dans Claude Code
- Mettre en place une automatisation persistante avec Claude Code qui survit aux redémarrages de session
- Créer un « OS personnel » ou un « OS agentique » pour des tâches récurrentes
- L'utilisateur dit « agentic OS », « personal OS », « multi-agent », « agent coordinator », « persistent agent »
- Structurer des projets longue durée où le contexte doit survivre entre les sessions
Aperçu de l'architecture
L'Agentic OS comporte quatre couches. Chaque couche est un répertoire à la racine de votre projet.
project-root/
├── CLAUDE.md # Noyau : identité, règles d'acheminement, registre des agents
├── agents/ # Définitions des agents spécialisés (prompts markdown)
├── .claude/commands/ # Commandes slash : CLI utilisateur
├── scripts/ # Scripts démons : tâches planifiées ou événementielles
└── data/ # État : système de fichiers JSON/markdown, pas de base de données externe
Responsabilités des couches
| Couche | Objectif | Persistance |
|---|---|---|
Noyau (CLAUDE.md) | Identité, routage, politiques de modèle, registre des agents | Suivi Git |
Agents (agents/) | Identités spécialisées avec outils et mémoire dédiés | Suivi Git |
Commandes (.claude/commands/) | Commandes slash utilisateur (/daily-sync, /outreach) | Suivi Git |
Scripts (scripts/) | Démons Python/JS déclenchés par cron ou webhooks | Suivi Git |
État (data/) | Journaux en ajout seul, état du projet, enregistrements de décisions | Ignoré ou suivi Git |
Le noyau
CLAUDE.md est le noyau. Il agit comme le COO / orchestrateur. Claude le lit au démarrage de la session et l'utilise pour acheminer le travail.
Structure du noyau
# CLAUDE.md - Noyau Agentic OS
## Identité
Vous êtes le COO de [nom-du-projet]. Vous acheminez les tâches vers des agents spécialisés.
Vous n'écrivez jamais de code directement. Vous déléguez à l'agent approprié et synthétisez les résultats.
## Registre des agents
| Agent | Rôle | Déclencheur |
|---|---|---|
| @dev | Code, architecture, débogage | L'utilisateur dit « build », « fix », « refactor » |
| @writer | Documentation, contenu, emails | L'utilisateur dit « write », « draft », « blog » |
| @researcher | Recherche, analyse, vérification | L'utilisateur dit « research », « analyze », « compare » |
| @ops | DevOps, déploiement, infrastructure | L'utilisateur dit « deploy », « CI », « server » |
## Règles d'acheminement
1. Analyser la requête utilisateur pour les mots-clés d'intention
2. Correspondre à la colonne Déclencheur du Registre des agents
3. Charger le fichier agent correspondant depuis `agents/<nom>.md`
4. Transférer l'exécution avec le contexte complet
5. Synthétiser et présenter le résultat à l'utilisateur
## Politiques de modèle
- Modèle par défaut : utiliser la valeur par défaut du dépôt ou de l'environnement.
- Tâches @dev : privilégier un modèle à plus haut raisonnement pour l'architecture complexe.
- Tâches @researcher : utiliser le modèle configuré pour la recherche et les outils de recherche approuvés.
- Plafond de coûts : avertir avant de dépasser le seuil de dépenses configuré du projet.
Principe clé
Le noyau doit être petit et déclaratif. La logique de routage réside dans des tableaux markdown simples, pas dans du code. Cela rend le système inspectable et modifiable sans débogage.
Agents spécialisés
Chaque agent est un fichier markdown autonome dans agents/. Claude charge le fichier agent approprié lors de l'acheminement d'une tâche.
Format de définition d'agent
# @dev - Ingénieur logiciel
## Identité
Vous êtes un ingénieur logiciel senior. Vous écrivez du code propre, testé et de qualité production.
Vous préférez les solutions simples. Vous posez des questions de clarification lorsque les exigences sont ambiguës.
## Périmètre mémoire
- Lire `data/projects/<projet-actuel>.md` pour le contexte
- Lire `data/decisions/` pour les décisions architecturales
- Ajouter les journaux d'exécution à `data/logs/<date>[email protected]`
## Accès aux outils
- Accès complet au système de fichiers dans la racine du projet
- Opérations Git (status, diff, commit, branch)
- Accès à l'exécuteur de tests
- Serveurs MCP configurés dans `.claude/mcp.json`
## Contraintes
- Toujours écrire des tests pour les nouvelles fonctionnalités
- Ne jamais commiter directement sur `main` ; utiliser des branches de fonctionnalités
- Préférer modifier les fichiers existants plutôt que d'en créer de nouveaux
- Garder les fonctions sous 50 lignes si possible
Modèle de collaboration multi-agents
Lorsqu'une tâche implique plusieurs agents, le noyau les exécute séquentiellement ou en parallèle :
Utilisateur : "Crée une page d'accueil et rédige l'article de blog de lancement"
Acheminement par le noyau :
1. @dev - "Crée une page d'accueil avec [exigences]"
2. @writer - "Rédige un article de blog de lancement pour [produit] en utilisant le texte de la page d'accueil"
3. Le noyau synthétise les deux résultats en une réponse unifiée
Pour une exécution parallèle, utilisez la capacité de tâche en arrière-plan de Claude Code ou des scripts shell qui invoquent Claude Code avec des contextes d'agents spécifiques.
Commandes et workflows quotidiens
Les commandes slash sont des fichiers markdown dans .claude/commands/. Elles définissent des workflows réutilisables.
Structure de commande
# /daily-sync
Exécuter le briefing matinal :
1. Lire `data/logs/last-sync.md` pour le contexte
2. Vérifier l'état du projet : `git status`, PR en attente, santé CI
3. Examiner `data/inbox/` pour les nouvelles tâches ou décisions nécessaires
4. Générer un résumé des blocages, priorités et prochaines actions
5. Ajouter le briefing à `data/logs/daily/<date>.md`
Ensemble de commandes standard
| Commande | Objectif |
|---|---|
/daily-sync | Briefing matinal : statut, blocages, priorités |
/outreach | Exécuter le workflow de sensibilisation (email, LinkedIn, etc.) |
/research <sujet> | Recherche approfondie avec suivi des citations |
/apply-jobs | Adapter CV + lettre de motivation pour un poste cible |
/analytics | Récupérer les métriques de Stripe, GitHub ou sources personnalisées |
/interview-prep | Générer des flashcards ou des questions d'entretien simulées |
/decision <sujet> | Enregistrer une décision avec avantages/inconvénients et choix retenu |
Activation des commandes
Placez les fichiers de commande dans .claude/commands/<nom-de-la-commande>.md. Claude Code les découvre automatiquement. Les utilisateurs les invoquent avec /<nom-de-la-commande>.
Mémoire persistante
La mémoire est basée sur des fichiers. Pas de base vectorielle, pas de Redis, pas de PostgreSQL. Les fichiers JSON et markdown dans data/ sont la base de données.
Structure du répertoire mémoire
data/
├── daily-logs/ # Journaux d'activité quotidiens en ajout seul
├── projects/ # Fichiers de contexte par projet
├── decisions/ # Décisions architecturales et commerciales (format ADR)
├── inbox/ # Nouvelles tâches ou idées en attente de tri
├── contacts/ # Personnes, entreprises, notes relationnelles
└── templates/ # Prompts et formats réutilisables
Format du journal quotidien
# 2026-04-22 - Journal quotidien
## Sessions
- 09:00 - Session 1 : Refonte du module d'authentification (@dev)
- 11:30 - Session 2 : Rédaction de la mise à jour investisseurs (@writer)
## Décisions
- Passage de JWT aux cookies de session (voir `data/decisions/2026-04-22-auth.md`)
## Blocages
- En attente de la clé API du fournisseur (suivi le 2026-04-24)
## Prochaines actions
- [ ] Fusionner la PR de refonte de l'authentification
- [ ] Envoyer la mise à jour investisseurs pour relecture
Modèle d'auto-réflexion
À la fin de chaque session, le noyau ajoute une réflexion :
## Réflexion - Session 3
- Ce qui a fonctionné : l'exécution parallèle des agents a économisé 20 minutes
- Ce qui n'a pas fonctionné : @researcher a rencontré une source payante, besoin d'un meilleur classement des sources
- Ce qu'il faut changer : ajouter un champ `source-tier` aux notes de recherche (crédibilité A/B/C)
Cela crée une boucle de rétroaction qui améliore le système au fil du temps sans modification de code.
Automatisation planifiée
Les tâches de l'Agentic OS s'exécutent selon un planning en utilisant un cron externe, et non le cron intégré de Claude Code (qui se termine lorsque la session se termine).
macOS : LaunchAgent
<!-- ~/Library/LaunchAgents/com.agentic.daily-sync.plist -->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" ...>
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.agentic.daily-sync</string>
<key>ProgramArguments</key>
<array>
<string>/claude</string>
<string>--cwd</string>
<string>/path/to/project</string>
<string>--command</string>
<string>/daily-sync</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>8</integer>
<key>Minute</key>
<integer>0</integer>
</dict>
<key>StandardOutPath</key>
<string>/tmp/agentic-daily-sync.log</string>
</dict>
</plist>
Linux : systemd Timer
# ~/.config/systemd/user/agentic-daily-sync.service
[Unit]
Description=Synchronisation quotidienne Agentic OS
[Service]
Type=oneshot
ExecStart=/usr/local/bin/claude --cwd /path/to/project --command /daily-sync
# ~/.config/systemd/user/agentic-daily-sync.timer
[Unit]
Description=Exécuter la synchronisation quotidienne chaque matin
[Timer]
OnCalendar=*-*-* 8:00:00
Persistent=true
[Install]
WantedBy=timers.target
Multi-plateforme : pm2
# ecosystem.config.js
module.exports = {
apps: [{
name: 'agentic-daily-sync',
script: 'claude',
args: '--cwd /path/to/project --command /daily-sync',
cron_restart: '0 8 * * *',
autorestart: false
}]
};
Couche de données
La couche de données est votre système de fichiers. Utilisez JSON pour les données structurées et markdown pour le contenu narratif.
JSON pour l'état structuré
// data/projects/website-v2.json
{
"name": "Site Web v2",
"status": "en-cours",
"milestone": "lancement-bêta",
"agents_involved": ["@dev", "@writer"],
"files": {
"spec": "docs/website-v2-spec.md",
"design": "designs/website-v2.fig"
},
"metrics": {
"commits": 47,
"last_session": "2026-04-22T11:30:00Z"
}
}
Markdown pour le contenu narratif
Utilisez markdown pour tout ce qui est lu par un humain : décisions, journaux, notes de recherche, fiches contacts.
Évolution du schéma
Ne renommez jamais les champs existants. Ajoutez de nouveaux champs et marquez les anciens comme obsolètes :
{
"name": "Site Web v2",
"status": "en-cours",
"milestone": "lancement-bêta",
"_deprecated_priority": "haute",
"priority_v2": { "level": "haute", "rationale": "Bloque la démo investisseur" }
}
Cela permet de conserver la lisibilité des données historiques sans scripts de migration.
Anti-patrons
Agent unique monolithique
# MAUVAIS - Un seul agent fait tout
Vous êtes un développeur full-stack, rédacteur, chercheur et ingénieur DevOps.
Divisez en agents spécialisés. Le noyau gère l'acheminement.
Sessions sans état
# MAUVAIS - Aucune mémoire entre les sessions
Commencer à zéro chaque fois que Claude Code s'ouvre.
Lisez toujours data/ au démarrage de la session et écrivez à la fin de la session.
Identifiants codés en dur
# MAUVAIS - Clés API dans les fichiers agents ou CLAUDE.md
Votre clé API OpenAI est sk-xxxxxxxx
Utilisez des variables d'environnement ou un fichier .env chargé par les scripts. Les agents référencent process.env.API_KEY.
Base de données externe pour un état simple
# MAUVAIS - PostgreSQL pour l'OS agentique d'un utilisateur solo
Utilisez des fichiers JSON/markdown jusqu'à ce que vous ayez plusieurs utilisateurs simultanés ou des Go de données.
Routage trop complexe
# MAUVAIS - Logique de routage dans le code au lieu de tableaux markdown
if (intent.includes('deploy')) { agent = opsAgent; }
Gardez le routage déclaratif dans les tableaux markdown CLAUDE.md. C'est inspectable, modifiable et débogable.
Bonnes pratiques
-
CLAUDE.mdfait moins de 200 lignes et tient dans la fenêtre de contexte - Chaque fichier agent fait moins de 100 lignes et se concentre sur un seul domaine
-
data/est dans .gitignore pour les journaux sensibles, suivi Git pour les décisions et spécifications - Les commandes utilisent des noms impératifs :
/daily-sync, pas/run-daily-sync - Les journaux sont en ajout seul ; ne modifiez jamais les journaux quotidiens passés
- Chaque agent a une section
Périmètre mémoiredéfinissant les fichiers qu'il lit - Les réflexions sont écrites à la fin de chaque session
- Les tâches planifiées utilisent un cron externe (LaunchAgent, systemd, pm2), pas le cron de session de Claude Code
- Suivi des coûts : enregistrer les dépenses API par session dans
data/logs/<date>-costs.json - Un projet = un Agentic OS. Ne partagez pas un seul
CLAUDE.mdentre des projets sans rapport.