Construire un chief of staff IA avec OpenClaw : l'architecture de Stella

LLMTutoriel·7 min de lecture·1 349 mots
Capture du post X de rsarver sur son chief of staff IA Stella

@rsarver gère simultanément une levée de fonds avec 100+ LP contacts, des boards et du deal flow en angel. Il a remplacé son chief of staff humain par un agent IA, et il dit que c'est meilleur que n'importe qui qu'il a recruté. Il a publié l'architecture complète.

▸ Post · @rsarver
Voir
How I built a chief of staff on OpenClaw that's better than any human I've hired, architecture mémoire double couche + boucle kaizen hebdomadaire

Ce que Stella fait concrètement

La plupart des builds "assistant IA" tombent pour la même raison : la mémoire de session traitée comme contexte de travail. L'assistant tient sur une conversation, puis lâche exactement quand le contexte s'accumule.

Stella fait cinq choses que les autres builds ne maintiennent pas dans la durée :

  • Elle filtre le bruit et ne remonte que ce qui mérite ton attention
  • Elle prépare chaque réunion automatiquement et suit ce qui a été engagé après
  • Elle maintient une vue complète de tout ce qui est en cours et signale ce qui glisse
  • Elle trace les relations et l'état de chaque contact important
  • Elle crée le rythme quotidien et hebdomadaire qui maintient tout en mouvement

Ce qui distingue ce build : la couche mémoire persistante en dessous de tout ça, et une boucle d'amélioration continue qui fait évoluer le système chaque semaine.


L'architecture mémoire en deux couches

Couche 1 : les daily notes

Un fichier markdown par jour, dans memory/YYYY-MM-DD.md. C'est le log brut de tout ce qui s'est passé : réunions, décisions, tâches ajoutées et complétées, contexte apparu en conversation. Un script tire automatiquement des sessions tout au long de la journée et écrit ces fichiers.

Structure minimale d'un daily note :

# 2025-07-14

## Réunions
- Call LP [Nom], intéressé, veut deck + modèle financier avant fin semaine
- Board [Portfolio Co], décision recrutement CTO reportée à août

## Décisions prises
- On passe à 15M hard cap sur ce tour

## Tâches ajoutées
- [ ] Envoyer deck à [LP] avant vendredi
- [ ] Préparer brief CTO search pour board août

## Contexte notable
- [Nom contact] a mentionné qu'il cherche à co-investir sur des deals B2B SaaS

Couche 2 : MEMORY.md

C'est le fichier que Stella lit au démarrage pour s'orienter. Elle le synthétise elle-même à partir des daily notes. Personnes clés, projets actifs, décisions prises, leçons apprises.

Structure de base :

# MEMORY.md, État au [date]

## Personnes clés
- [Nom LP] : ticket 500K, focus deep tech, décision attendue avant Q3
- [Nom fondateur] : portfolio, cherche intro Series B, warm intro via [Nom]

## Projets actifs
- Fundraise Fund III : 23/100+ LP contactés, 4 soft commits, closing cible sept
- Board [Co] : prochain board 15 août, point CTO search critique

## Décisions récentes
- Hard cap 15M confirmé le 14 juillet

## Leçons apprises
- Les LPs qui demandent le modèle financier dans les 48h ont 3x plus de chances de convertir

@rsarver est précis là-dessus : tu peux ouvrir n'importe quel fichier, le lire, le corriger si quelque chose est faux, et comprendre exactement ce que l'assistant sait. Tout tient dans un repo que tu peux cloner, diff et rebase, sans couche d'abstraction entre toi et la compréhension que l'agent a de ton monde. C'est exactement ce qu'on avait développé dans notre analyse de la mémoire IA explicite.


Mise en place étape par étape

  1. 01

    Structure des fichiers

    Crée l'arborescence de base dans ton projet OpenClaw :

    mkdir -p memory
    touch MEMORY.md
    touch STELLA_SYSTEM_PROMPT.md
    

    Le dossier memory/ contiendra tes daily notes. MEMORY.md est à la racine, lu au démarrage.

  2. 02

    Le script de daily notes

    Ce script tire le contexte de tes sessions et écrit le fichier du jour. Lance-le en fin de journée ou configure-le en cron :

    #!/usr/bin/env python3
    # pull_daily_notes.py
    
    import datetime
    import os
    
    today = datetime.date.today().strftime("%Y-%m-%d")
    filepath = f"memory/{today}.md"
    
    # Récupère les sessions OpenClaw du jour via l'API
    # et formate en markdown structuré
    template = f"""# {today}
    
    ## Réunions
    
    ## Décisions prises
    
    ## Tâches ajoutées
    
    ## Contexte notable
    """
    
    if not os.path.exists(filepath):
        with open(filepath, "w") as f:
            f.write(template)
        print(f"Daily note créé : {filepath}")
    else:
        print(f"Daily note existe déjà : {filepath}")
    
  3. 03

    Le system prompt de Stella

    C'est le cœur. Stella lit MEMORY.md au démarrage et maintient les deux couches activement.

    # Stella, System Prompt
    
    Tu es Stella, chief of staff de [Prénom]. Au démarrage de chaque session, tu lis MEMORY.md pour t'orienter sur ce qui est en cours.
    
    ## Tes responsabilités
    
    **Mémoire active**
    - Tu maintiens memory/YYYY-MM-DD.md pour la session en cours
    - Tu synthétises MEMORY.md chaque vendredi à partir des daily notes de la semaine
    - Tu signales quand quelque chose dans MEMORY.md semble obsolète ou contradictoire
    
    **Gestion du pipeline**
    - Tu maintiens l'état de chaque LP contact (statut, dernière interaction, prochaine action)
    - Tu prépares un brief avant chaque réunion : contexte, historique, ce qu'on veut obtenir
    - Tu logs les commitments pris en fin de réunion et les ajoutes aux tâches
    
    **Rythme opérationnel**
    - Chaque matin : résumé des 3 priorités du jour
    - Chaque vendredi : synthèse semaine + mise à jour MEMORY.md + scan améliorations système
    
    ## Format de réponse
    Sois directe. Pas de formules de politesse. Si quelque chose glisse, dis-le.
    
  4. 04

    La boucle kaizen hebdomadaire

    C'est ce qui différencie un build qui stagne d'un build qui s'améliore chaque semaine. Un cron job chaque vendredi déclenche une session où Stella scanne les frictions de la semaine et propose des améliorations au système.

    # crontab -e
    # Chaque vendredi à 17h
    0 17 * * 5 /usr/bin/python3 /path/to/weekly_kaizen.py
    
    #!/usr/bin/env python3
    # weekly_kaizen.py
    
    import datetime
    import glob
    
    week_notes = glob.glob("memory/2025-*.md")
    week_notes.sort()
    last_7 = week_notes[-7:]
    
    # Construit le prompt de revue hebdomadaire
    kaizen_prompt = """
    À partir des daily notes de cette semaine, identifie :
    1. Les frictions récurrentes (tâches oubliées, contexte manquant, briefs insuffisants)
    2. Les patterns qui méritent d'être codifiés dans MEMORY.md
    3. Une modification concrète au system prompt qui aurait évité un problème cette semaine
    
    Propose les changements directement, je valide ou j'ajuste.
    """
    
    print("Kaizen hebdomadaire déclenché")
    print(f"Notes analysées : {len(last_7)} fichiers")
    # Passe le prompt + les notes à OpenClaw via API
    
  5. 05

    Versionnement git

    Tout dans git. C'est non-négociable si tu veux pouvoir restaurer un état ou comprendre comment la mémoire a évolué.

    cd ton-projet-stella
    git init
    echo "*.env" >> .gitignore
    git add memory/ MEMORY.md STELLA_SYSTEM_PROMPT.md
    git commit -m "init: architecture Stella"
    
    # Commit automatique chaque soir
    # crontab -e
    0 22 * * * cd /path/to/stella && git add -A && git commit -m "daily: $(date +%Y-%m-%d)"
    

Deux problèmes que tu croiseras

L'autre friction : Stella prépare des briefs pré-réunion excellents pour les contacts qui ont du contexte dans MEMORY.md, et des briefs vides pour les nouveaux. La solution de @rsarver est de lui donner accès à la recherche automatique pré-meeting pour les contacts sans historique. Un agent avec accès à tes emails et ton calendrier élargit ta surface d'attaque, ce qu'on a détaillé dans notre article sur les pièges de prompt injection en production.


Ce que ça donne en conditions réelles

LP contacts trackés
100+
pipeline fundraise actif
commitments oubliés
0
depuis mise en place
pour sentir la différence
7j
vs assistant sans mémoire

Le cas d'usage fundraise est particulièrement fort parce que c'est exactement le contexte où la mémoire de session te tue : 100 contacts sur 6 mois, des conversations qui se ressemblent, des nuances par LP qui font la différence entre un soft commit et un refus. Stella maintient le fil de chaque relation sans que tu aies à te souvenir qui a demandé quoi lors du call de janvier.

@rsarver envisage d'open sourcer le système complet. Pour aller plus loin sur comment structurer les comportements d'un agent en production, notre analyse des agent skills couvre comment forcer un agent à travailler comme un senior qui connaît son contexte.

▸ Articles similaires