# Le processus de travail du StyloAgent: Comment construire et gérer des systèmes de grande taille (et HUGEM SK2 à l'aide de code LLM

<!-- category -- AI,Architecture,LLM,Agents,StyloAgent,Patterns -->
<datetime class="hidden">2026-07-18T16:00</datetime>

**La génération de code a cessé d'être un problème il y a quelque temps.** Les modèles écrivent un bon code. Ils suivent les conventions dans le fichier qu'ils éditent, et si vous les pointez sur une erreur d'essai, ils la règle généralement corrigent.

La partie qui ne fonctionne pas est la mémoire.

> Le problème n’est plus : "le modèle peut-il écrire le code?

Chaque nouvelle session commence à ne savoir rien au sujet du système qu’elle est sur le point de changer. Elle redécouverte que [Stylo.Bot](https://stylo.bot) est deux répertoires, que la bande de risque sur le tableau de bord est dérivée au moment du lecture et n’est jamais cachée , qu’il y a exactement une seule usine de connexion à la base de données et qu’un magasin SQLite ne doit jamais faire l’ombre

Il s’agit du flux de travail que j’ai construit pour cesser de payer le coût.

[![Mise à jour](https://img.shields.io/github/v/release/scottgal/styloagent)](https://github.com/scottgal/styloagent/releases)

[TOC]

---


## Le problème principal: La dérive architecturale

Stylo.BotM SK1s moteur de détection n'est pas un simple ASP.NET CRUD appMSC3 Il fonctionne sur une architecture éphémère , signauxMNK5etMRK6atoms MMK7 atomes détenaient l'état MNK8 les signaux annonçaientMZK9 a scoped `SignalSink` pour chaque demande, le panneau blackboard, est un seul `ScheduleCoordinator` Ã©met des signaux de cadence tick au lieu d'une pile de services de fond, la classification est la plus proche - centroid avec drift plutôt que les règlesM SK2 et les verdicts sont dérivés fresh at read instead of cached. Cette forme est l'ensemble du point du produitMSC4 C'est ce qui lui permet d'apprendre à partir d'un comportement observé au lieu de correspondre Ã une liste statique

Un code LLM ne veut pas construire ce qu’il a vu un million de fois dans ses données de formation : plain CRUD. Demandez à un agent frais d’ajouter une fonctionnalité et il atteint chaque foisM SK3 , pour l’ASPMSC5 Réflexe NET \:

| Le réflexe ASPM SK1NET (plain CRUD) | StyloMska5BotM Ska6s modèle prévu
|---|---|
| A `BackgroundService` par emploi périodique | Un `ScheduleCoordinator` émettre des signaux de tick |
| A `ConcurrentDictionary` utilisé comme entrepôt | Les atomes ont un état de conservation ; il n'y a pas d'actuelle persistance dans la mémoire
| A `switch` la cartographie d'une chaîne à une catégorie | La plus procheM SK1 Classification centroïde, dériveMSC3 Leiden |
| Cachez la valeur calculée pour la localité | La dériver à lecture
| A bare `DbContext` dans l’ordinateur | L’État vit dans le moteur , lire sur un fil M SK2
| An `ILogger` pour vérifier ce qui s’est passé | Les signaux annoncent ; le signalSink est la plaque d’affichage.

Chaque cellule à gauche est un manuel ASP.NET et corrigée dans une application normale. `CLAUDE.md` ce qui dit ainsi, explicitement : centroids non règles, aucun service de fond ne fait appel au Coordonnateur des horairesM SK3 aucun entrepôt de mémoireMSC4 aucun cache ne favorise la fraîcheur sur la localitéMNK6 signaux et atomes pas ASPMMK7 normes NETMRK8

Il n’a pas retenu. `CLAUDE.md` Le modèle régresse à la moyenne de ses données de formation, qui est CRUD.

**Cela coûte des semaines de réaménagement.** Aucun déclin dramatique n’a été observé. `BackgroundService` renvoyé à un coordonnateur tick, a `ConcurrentDictionary` qui avait quietement été un magasin parasitaire supprimé, a `switch` la déclaration est remplacée par une recherche centroïde, session après session après séance. Le bogue n'a jamais été le point . La dérive a été le puntoM SK3 Un fichier d'instructions perMSC4repo est la récupérationMST5 et la recupération n'était pas suffisante Mst6 l'agent avait les règles devant luiM st7 ne comprenait pas pourquoi la forme éphémère était importanteMstr8 et l'a érodée en tout état de causeMtr9

Ce n'est pas "l'agent peut't coderM SK2 mais "il est possible pour l'agent de tenir la architectureMSC4il n'y a pas de fichier d'instruction plus grand qui l'ait corrigéeMNK6 Il s'agissait de donner l'architecture à un propriétaire.

---


## L'ampleur de la question

L’échelle n’a pas provoqué la dérive. Elle l’a multipliéeM SK1

Stylo.Bot n'est pas un jouet . Il s'agit d'un bot-plate-forme de détection M SK3 moteur de détection FOSS qui fait face aux applications Web par l'intermédiaire d'une passerelle YARPMSC4 plus une couche commerciale avec gestion de la flotteMNK5 un rédacteur de configuration en direct MNK6 persistance Postgres et pgvectorMMK7 fournisseurs commerciaux de LLMMRK8 un moteur de rapportsMBK9 membres et parMDK10 licence de domaineMGK11 et un exploitant KubernetesMdk12

Counted honestly:

- Deux dépôts principaux pour Stylo.Bot M SK1 le moteur de détection FOSS et la couche commerciale.
- Environ vingt projets dans le seul cadre de la repo commerciale1
- Un grand nombre de mon propre NuGet paquets les produits partage : [`Mostlylucid.Ephemeral`](https://github.com/scottgal/mostlylucid.ephemeral) (le substratM SK1 [`StyloExtract`](https://github.com/scottgal/styloextract), [`StyloFlow`](https://github.com/scottgal/styloflow), [`StyloIssues`](https://github.com/scottgal/styloissues), [lucidVIEW](https://github.com/scottgal/lucidview).
- Infrastructure : Cartes d'helmM SK1 microk 8 grappe de groupement, entrepôt secretMSC4 registre des conteneursMNK5
- Un site de marketing qui effectue la vérification et intègre le tableau de bord réel.

Chacune d’entre elles est une surface dont le débordement peut s’écouler à l’intérieur, et un agent frais doit tenir la même discipline éphémère sur chacune de celles-ci . Un changement à un seul élan de séparation détectable dans la passerelleM SK2 le plug-in commercial, la projection du tableaux de bordMSC4 et le pipeline de déploiementMNK5 Écrire le changement n’a jamais été la partie difficileMMK6 Maintenir l’architecture stable tout en la rendant stableMRK7 partout où elle atterre~, session après sessionMST9 étaitMSS10

---


## The Myth of the Single Super-Agent

L’industrie continue de rechercher la même réponse : donner à l’agent un plus grand contexte . fenêtres plus grandes MSC2 millions - promptstoken M SK4 RAG pour extraire les fichiers appropriés MST5 MCP pour atteindre les systèmes en direct MSM6 couches de mémoire qui résument les séances passées et les répètent

**Tout cela améliore la récupération.**

Retrieval finds the relevant file. Understanding knows why the file is the way it is , what invariant it protects, and what breaks two repositories away if you change itM SK3 A bigger window lets an agent read more at onceMSC4 It does not let the agent remember what it concluded last TuesdayMNK5

Que la re-derivation est le coût réel . Regardez un agent de refroidissement démarrer sur StyloM SK2Bot :

1. Il greppe pour le pipeline de détection.
2. Il lit l’orchestre.
3. Il s’avère que le verdict a trois axes et qu’il est composé de:, non stockéM SK1
4. Il constate que le plugin commercial remplace les couches FOSS par injection de dépendance.

Trente minutes plus tard, il sait assez pour faire un changement de ligne.

Une recherche plus intelligente est la mauvaise solution. La recherche elle-même doit cesser de se produire.

---


## Comment les humains construisent réellement des logiciels

Aucun ingénieur ne comprend l’ensemble du système d’entreprise. Personne dans une entreprise réelle n’a les paiements en sa possession, auth , le pipeline de donnéesM SK3 et la frontend dans leur tête à pleine résolution dès lorsMSC4 Ce n’est pas un échecMNK5 C’est comment sont construites les grands systèmesMRK6

Les équipes décomposent le système en domaines et mettent sur chacun un spécialiste.

**La propriété est plus importante que le savoir encyclopédique.** Le spécialiste n’a pas besoin de connaître tout. Il faut connaître son domaine profondément, et savoir qui demander le resteM SK2

Ce qui maintient un système décomposé cohérent est la communication. La personne chargée des paiements parle à l’auth avant de changer le format du tokenM SK1 Une demande de retrait traverse une frontière et le propriétaire de cette frontière pesa dans . L’architecture demeure cohérente non pas parce qu’une personne en détient tout, mais parce que les personnes qui en détentent des morceaux parlent entre elles.

Cela fonctionne. C’est la façon dont fonctionne chaque équipe réelle . Les agents de codage sont conduits d’une manière opposée

---


## Mon problème était différent

La dérive serait un nuisance dans une petite application. Dans tous les systèmes que je possède, il est corrosif , parce qu’ils ne sont pas un seul système. Il s’agit de produits distinctsM SK3 dans des dépôts séparés

Le substrat est `Mostlylucid.Ephemeral`, mon propre paquet NuGet : les primitives d'exécution et le flux de données le moteur de détection est construit surM SK2 Stylo. le Bot tire plus de mes paquets en haut de celui-ci `StyloExtract` pour l'emplacement-détermination des empreintes digitales, `StyloFlow` pour les flux de travail et la délivrance des licences conduites par le signal- `StyloIssues` pour la rétroaction UX sur le site de commercialisation. StyloAgent, la flotte dans cet articleM SK2 est construite à partir des paquets moi aussi : lucidVIEW rend ses documentsMSC4 et [`Mostlylucid.Avalonia.UITesting`](https://github.com/scottgal/lucidRESUME) génére ses screenshots. Je crée les produits avec l’outil, et je crée l’instrument à partir des produitsM SK2

Il s’agit là d’un véritable aliment pour chiens, et c’est ce qui fait de la dérive dangereuse. `BackgroundService` ou un `ConcurrentDictionary` n’est pas en train de détruire une seule application. Il est en train d’éroder un paquet chacun de ces produits se trouvant sur. Les navires à dérive dans un dépôt et les surfaces d’un produit deux dépôts à l’extérieur , où l’agent qui l’a écrit ne semble jamais

**Un primitive dérivé. Tous les produits construits sur lui.**

Le codage n’a jamais été le plus difficile à cette échelle.

---


## Ownership, Non Contexte

Contexte est l’axe erroné. Les échelles de coût sont calculées en fonction du nombre de sessions, et non de la taille de la fenêtre.

> Le problème n’est pas : "comment donner plus de contexte à un agent?

Load knowledge into a window and it dies with the window. Give it to a specialist and it carries forward . The detection specialist does not reload the detection architecture each sessionM SK2 It already owns it, and it starts from what it worked out last timeMNK4 because last time it wrote that down as itself and not as a summary for someone elseMRK5

Une session paie ensuite pour prolonger le système, mais non pour le réaménager.

---


## Le modèle StyloAgent

StyloAgent transforme cette structure en processus courants. Les parties :

- **Vue d'ensemble** : l’architecte et le coordonnateur`overview-`). Il détient les trois documents vivants (spec, architectureM SK3 liste de travailMSC4 arbitrait les différends d’étendueMNK5 et détermine les routes des travaux arrivantsMMK6 Il ne fait pas le travail du domaine lui-mêmeMRK7
- **Spécialistes** : propriétaires de domaine. `foss-` possède le moteur de détection. `deploy-` a la propriété de l’ouvrage-toM SK1staging-~-production pipeline . `mae-` a des membres et du commerce électronique. `dash-` et `edit-` détenir les voies de lecture et d’écriture du tableaux de bord. `prod-` détient la sécurité de la plate-forme. `test-` possède la suite. Chacun possède les fichiers, non les tâches .
- **L'autobus de message** : un fichier git -backed, fileM SK3drop channel avec `inbox`, `outbox`, `archive`, et `saved-context`. Les messages portent une priorité et une surface à l’agentM SK1à la limite de tournement de .
- **Réhydratation et déshydratation** : chaque agent conserve un document contextuel vivant . Il déshydrate lorsqu’il s’arrête et réhydrate quand il se réveille
- **Les espaces de travail** : le répertoire FOSS et le registre commercial comme un espace de travail
- **Communications** : une règle stricte . Restez dans votre lane. Hit a blocker in a file you donn't ownM SK3 and you stop and message `overview-` plutôt que de collider avec le propriétaire.

![Le cockpit StyloAgent: agents et l’autobus de signalisation en bas à gauche , terminaux d’agents dockables au centreM SK2 et une ligne horaire / Documents / Questions ≥/ Git M/ panneau routier à droiteMSC7](/articleimages/styloagent-cockpit.png)

### Qu'est-ce qu'il en fait?

StyloAgent est un cockpit de bureau , construit en .NET 10 et Avalonia. Chaque spécialiste est un vrai `claude` Processus exécuté sur un PTY, avec son propre terminal dans la cabine de pilotage, son propre noyau de travail git , et son propre document contextuelM SK3 La cabine d’ pilotage héberge le serveur MCP que les agents appelent et le socket hook qui signale leur étatMSC4 Le produit lui-même est construit par quatre propriétairesMST5 et l’architecture se double en tant que carte de propriété Mst6

```mermaid
flowchart TD
    operator([Human operator])
    subgraph SA["Styloagent cockpit"]
        cockpit[Cockpit Shell<br/>Avalonia + Dock]
        bus[Coordination and Fleet<br/>Channel, Mcp, Diagrams]
        session[Session and Terminal Runtime<br/>Sessions, Hooks, PTY]
        repo[Git and Document Library<br/>worktrees, Lucene search]
    end
    agents[Agent fleet<br/>claude specialists]
    fs[(Filesystem and Git<br/>durable trace + worktrees)]

    operator --> cockpit
    cockpit --> bus
    cockpit --> session
    cockpit --> repo
    bus --> session
    session -->|runs claude over a PTY| agents
    agents -->|MCP verbs| bus
    bus -->|reads and writes channel files| fs
    session -->|writes context doc on dehydrate| fs
    agents -->|commit in own worktree| fs

    style SA fill:none,stroke:#6b7280,stroke-width:1px
    style cockpit fill:none,stroke:#7c3aed,stroke-width:2px
    style bus fill:none,stroke:#d97706,stroke-width:2px
    style session fill:none,stroke:#2563eb,stroke-width:2px
    style repo fill:none,stroke:#16a34a,stroke-width:2px
    style agents fill:none,stroke:#6b7280,stroke-width:2px
    style fs fill:none,stroke:#16a34a,stroke-width:3px
    style operator fill:none,stroke:#6b7280,stroke-width:2px
```

**MCP est le noyau.** Le cockpit héberge un serveur MCP, et tout ce que le spécialiste fait pour coordonner est un appel d’outils MCP contre lui, non une convention ou un fichier il espère qu’un autre agent litM SK2 L’ensemble des verbes est la couche de coordination MSC3

- `send_message` / `check_inbox` : Travailler sur le trajet et l’en retirer , PrioritéM SK2 Résolue.
- `spawn_agent` : un propriétaire partage un nouveau spécialiste sous son régime
- `claim` / `heartbeat` / `release` : serialiser l'accès à un environnement partagé (un hôte SSHM SK2 une cible de déploiement) afin que les deux agents ne se collident pas
- `dehydrate_agent` / `rehydrate_agent` : réserver un spécialiste et le restaurer
- `wrap_up` : essaiM SK1 fusionner , et nettoyer une branche finie.
- `report_issue`, `architecture_impact`, `agent_color`, `list_fleet` : déposer un blocage , visualiser le changement de conception avant qu’il ne pénètre

Le fichier-le canal de déversement sous-jacent est la trace durable de ce qui a été dit ,et non le mécanisme.Le mécanisme est le serveur MCP livrant à un agent vivant à sa limite d’arrivéeM SK3Les arbres de travail Git donnent à chaque spécialiste une arbre isolé pour s’engager dansMSC4 mais la couche MCP est ce qui les rend une flotte au lieu d’un ensemble de processus qui partagent un dossierMNK5

![L'échéancier d'activité: le plus récent -le premier signalement de chaque agent'les opérations des outils avec les fichiers qu'il a touchésMSC3la durée du cycle de vie et l'état d'attentionM SK4 ainsi que les messages qu'ils envoient sur l'autobus](/articleimages/styloagent-timeline.png)

### Comment le bus livre-t-il

`send_message` écrive un fichier de marquage durable dans le canal et fournit également dans `ChannelDeliveryCoordinator` surveille les nouveaux fichiers, garde un ensemble visible de façon à ce que chaque message soit livré exactement une fois , l’achemine aux destinataires en direct

La difficulté de l’interruption d’un message n’est pas un frein. `DeliveryMode` enum, une ladder d'interruption M SK1

```csharp
public enum DeliveryMode
{
    Interrupt,       // send ESC to break the current turn, inject immediately
    NextPrompt,      // queue; inject when the agent next reaches idle
    Poll,            // not pushed; the agent checks on its own cadence
    Convenient,      // surfaced in the Bus HUD only
    Informational,   // never actioned or injected; shown as info
}
```

La livraison est inactive-gated and atM SK1least-onceMSC3and the acknowledgement is a observed sideMST4effectM ST5not a promiseM st6 An urgent message breaks into the current turnM St7 A normal one waits for the next idle prompt so it does not corrupt an agent midMst8thoughtMSt9

### Comment la propriété est exercée

Le fait de rester dans votre lane n’est pas un système d’honneur. `ownership.yaml`, et un `OwnershipMap` réglemente tout chemin de repo-relatif au préfixe d'agent qui en est propriétaireM SK1 la plupart-la victoire mondiale spécifique :

```csharp
// most-specific glob wins, so a session- carve-out inside cockpit-'s
// src/Styloagent.App/** beats the broad glob
public string? OwnerOf(string? path) { /* ... */ }
```

Une passerelle PreToolUse consomme ce résoluteur et empêche un agent d'écrire un fichier appartenant à un autre agent, avec des exemptions sensibles : `overview-` peut traverser les frontières parce qu’il arbitrait, les fichiers non appartenant à la propriété sont partagés , les sorties de construction et les essais sont exonérésM SK2 La carte est les mêmes données qui colorent le diagramme CMSC3 . L’image de qui possède ce que et l’exécution de qui détient ce que sont une source

### Le cycle de docs vivant-

`overview-` n’est pas indépendant. Son prompt de système le place sur les rails : travaille en haut de la machine- descend dans trois couchesM SK3 et ne passe pas à l’avantMSC4

```mermaid
flowchart LR
    spec["spec.md<br/>what the system is"]
    shape["architecture.md<br/>C4 shape, owner-coloured"]
    fleet["proposed-agents.yaml<br/>who owns each component"]
    spec --> shape --> fleet
    fleet -.->|specialists report on the bus| spec

    style spec fill:none,stroke:#2563eb,stroke-width:2px
    style shape fill:none,stroke:#d97706,stroke-width:2px
    style fleet fill:none,stroke:#16a34a,stroke-width:2px
```

Préciser tout d’abord : ce que le système est , convenu avec l’être humain avant tout autre M SK2 Puis former : un seul diagramme de composants C MSC4 où chaque composant est coloré par son propriétaire visé MST5 Ensuite, la flotte МST6 un agent proposé par tête M ST7 une composante à niveau M st8 partager sa composante M St9 sa couleur M T10 Comme les spécialistes apprennent le système réel et font rapport sur l’autobus Mst11 `overview-` folds their findings back into the spec, reM SK1derives the shape , and adjusts the fleet. The three documents stay a live projection of the design instead of decaying into fictionMSC4

---


## Spécialistes au lieu de tâches

La plupart des outils d’agent créent des travailleurs. Décrivez une tâche, un travailleur tourne vers l’avantM SK2 le fait-il , il disparaîtMSC4 la prochaine tâche reçoit un nouveau travailleur sans mémoire de celui qui l’a été jusqu’à présentMST5 L’expertise ne s’accumule jamais parce qu’il n’y a rien pour elle à accumuler dans la dernière

StyloAgent crée des experts. `foss-` n’est pas un travailleur qui a touché le moteur de détection une fois. Il s’agit du moteur de détection ' son propriétaire M SK2 et il demeure le propriétaire pendant toutes les sessions . Cette différence n’était pas cosmétique MSC4 C’est pourquoi la flotte a capté un erreur d’une tâche MST5 le travailleur basé sur MST6 aurait manqué

![La liste de la flotte: chaque couleur spécialiséeM SK1 codé par préfixe , possédant un sous-système, avec des agents proposés que l’humain peut donner naissance à partir d’un seul clic](/articleimages/styloagent-roster.png)

Les robots connus apparaissent sur le tableau de bord et sont considérés comme présentant un risque très élevé. `foss-` ne l’a pas fait, car `foss-` sachant que la projection existait déjà et qu’il savait où regarder sous-elle. Il a constaté que les bandes de risque n’apparaissent à l’amiable que lorsqu’une empreinte digitale est conservée avec un statut de réclamation vérifié , et que la méthode qui établit ce statut , `UpdateClaimVerificationAsync`, avait **Nombre d'appels en production nul**. Written and never wiredM SK1 Every fingerprint stayed unverified forever, so every known bot read as very high riskMSC3 and redeploying the projection could never have fixed itMST4

Ce diagnostic provient de la propriété accumulée. `foss-` a déjà mapped l’orchestre, le compositeur du verdict, et la grille de revendications dans les sessions antérieures . Le bug était invisible pour une recherche et évident pour un propriétaireM SK3

StyloAgent prouve ceci sur lui-même. L'outil est construit par sa propre flotte : `cockpit-` appartenant à l’Avalonia shell, `bus-` détient la coordination et la prestation, `session-` est propriétaire des PTYs et de la machine d’état de fraie, `repo-` propriétaire de git et de la bibliothèque des documents. Les propriétaires permanents, pas un seulM SK2 tâches prises à l’égard d’un objet . Les leçons difficiles qu’ils apprennent sont écrites dans leur contexte, ce qui les ne permet jamais de les répéter. `session-`' son propre document de contexte :

```
## HARD-WON DISCIPLINE (enforced this session, confirmed by overview-)
- Commit by explicit pathspec, atomically, in ONE command. The shared tree has ONE git
  index. A bare `git commit` after `git add` lets ANOTHER agent's concurrent commit sweep
  your staged files (it happened: my clipboard work landed mis-attributed in cockpit-'s 5e54207).
```

Un travailleur basé sur une tâche, -, frappe cette collision et le travailleur suivant la frappe de nouveau,,, car rien ne permet d’avancer la leçon. `session-` , comprenait pourquoi , et codait la correction comme faisant partie de qui elle est. C'est la différence entre effectuer une tâche et être un expertM SK3

---


## Réhydratation au lieu de redécouverte

Une séance froide débute par un ritual : rechercher la base de codeM SK1 résumer ce que vous trouvez , reconstruire l’architecture, tenter de se rappeler ce qui s’est passé la dernière foisMNK4 Il peut manger la première moitié d’une sessionMRK5

Rehydratation élimine le ritual. La séquence devient : réveille l’expertM SK2 rétablit son état , poursuivre

L’État vit dans un fichier par spécialiste. C’est le contexte actualisé pour `foss-`, légèrement trimmée :

```
# foss- saved context

## Repo state
- Branch: main. My fix commit: 9b849629 (NOT pushed) - the known-bots-VeryHigh fix.

## DONE this session
- known-bots-VeryHigh fix (9b849629) - overview APPROVED, shipped:
  ROOT: UpdateClaimVerificationAsync had ZERO prod callers (never wired). Every fp
  stayed 'unverified' -> known bots read VeryHigh. Redeploying #115 could never fix it.

## NEXT (open, in priority order)
1. overview follow-up: add a REAL end-to-end test through the REAL store, not a double.
2. RISK display Face 1 (still OPEN): risk band missing from dashboard LIST rows.

## Guardrails
- ANY prod fingerprint-DB op = staging-first + express human go.
- CF-IP caveat: if the gateway verifies the bot against CF egress not the real client IP,
  the latch never sets -> still VeryHigh.
```

Un nouveau `foss-` affiche ce qui suit et est immédiatement en vigueur. Il sait le dernier engagement, pourquoi il existeM SK2 ce qui reste ouvert , et les voies de garde qui restreignent le prochain mouvementMSC4 Aucune nouvelle découverteMST5 parce que le spécialiste l’a écrit pour son propre avenir personnelMSP6 Une règle est stricte MSV7 elle ne contient jamais un valeur secreteM SV8 qu’un indicateur vers où une personne crédible vitM Sv9

Il s’agit d’une machine à état réel, pas de métaphoreM SK1 Une session d’agent se déplace par quatre états : `Unspawned`, `Live`, `Dehydrated`, `Exited`.

```mermaid
flowchart LR
    Unspawned[Unspawned] -->|spawn: PTY + launch prompt| Live[Live]
    Live -->|write context doc, stop PTY| Dehydrated[Dehydrated]
    Dehydrated -->|rehydrate: restore from context| Live
    Live -->|wrap up: test, merge, cleanup| Exited[Exited]

    style Unspawned fill:none,stroke:#6b7280,stroke-width:2px
    style Live fill:none,stroke:#16a34a,stroke-width:2px
    style Dehydrated fill:none,stroke:#d97706,stroke-width:2px
    style Exited fill:none,stroke:#6b7280,stroke-width:2px
```

Dehydratation écrit le document de contexte et libère la PTY, pour qu’un spécialiste statiqué ne coûte rien pendant son sommeil . Rehydratation le rétablit et il est en mode de vie de nouveau M SK2 courant depuis la première tournage . Établissement est l’extrémité propre

---


## Comprendre les systèmes existants

Mettre la flottille sur un système qu’elle n’a jamais vu, et voir ce qui se passe. C’est ainsi que StyloAgent a commencé à fonctionner sur StyloM SK2Bot : le moteur

`overview-` a fait l’exploration. Il s’est livré à la lecture - seule l’ Exploration passe au-dessus du noyau de FOSS et a suivi le pipeline réel : un orchestrateur à portée large qui possède un réservoir de signalisation par demandeM SK3 , alimentant un moteur de détection d’une tonne unique qui détecte les ondesMSC5 commandant des atomes de détecteurMNK6 produisant un livretMRK7 puis une signature et un verdict sur le risque avec trois axes dérivées en temps de lectureMMK8

Ensuite, il a écrit cette compréhension comme suit : `architecture.md` : un code - un diagramme de composants fondé sur le CM SK2 où chaque composant est coloré par son agent-propriétaire. Le diagramme se double en tant que carte de propriété **Grey signifie qu'il n'y a pas encore de propriétaire.**, et gris est un signal : il a montré que plusieurs services commerciaux n’avaient pas de spécialistes M SK2 et que le backend commercial était détenu par `overview-` seuls.

Il s’agit de la partie repo-outils sommaires manquants. Le résultat n’est pas un seul sommaire- qui disparaît le moment où il est écritM SK3 Il s'agit d’un document maintenu . Comme les spécialistes l’ont signalé(e). `overview-` folds their findings into the spec, then the architecture , then The rosterM SK2 Understanding emerges, ownership emerges–, and both keep getting more accurate instead of decayingMSC5 La carte est vivante parce que les gens qui possèdent le territoire continuent à la corriger.

---


## Travailler à travers plusieurs répertoires

Repo-les outils centraux traitent le répertoire comme l’unité du monde . StyloAgent le traite comme un détail de mise en œuvre. **Les spécialistes possèdent leurs propres domaines, et non des dossiers**, et un domaine croise repos.

Les deux Stylo.Bot repos sont enregistrés comme un espace de travail. `foss-` a la capacité de détection où qu’il se trouve, , et il vit dans les deux , liés par un fil, \: que définit le moteur FOSS `IFingerprintStore`, les layers commerciaux échangent dans une mise en œuvre Postgres par DI . Les robots fixes connus - ont roulé sur ce filet M SK3 Il s’agissait d’un commit FOSS MSC4 mais des navires de détection se trouvaient à l’intérieur de l’image de la passerelle commerciale MST5 donc `deploy-` rebuilt the gateway, staging confirmed the bot now read low, and it stayed correct against the commercial Postgres store because that store sits behind the same seam the FOSS test exercised in SQLite . One changeM SK3 two repositoriesMST4 three specialistsM ST5 held together by whoever owns the seamM st6 My own packages work the same way Mst7 touch `Mostlylucid.Ephemeral` et vous avez changé un contrat chaque produit dépend de.

Voici la partie qui me plaît le plus. Je garde quatre répétitions en vol à l’une et l’autre, chacune avec un spécialiste qui n’a que son propre contexteM SK2 Demandez à un agent de garder quatre répétions au même moment, ce dernier randomise son contexte : les détails exacts s’infiltrent dans le raisonnement de détectionMSC4 les contraintes de déploiement faussent apparaître les règles de persistanceMNK5 et chaque réponse devient un peu pireMMK6 Des spécialistes séparés font des distinctions entre les contextesMZK7 donc quatre répercussions actives sont quatre agents ciblés MNK8 pas une seule confondueMBK9 Aucun code LLM que j’ai utilisé ne fait cela seulMRK10

---


## L'architecture ne coule jamais

L’avantage silencieux apparaît lorsque personne ne code. Dans un flux de travail normal, le moment où vous clôturez la session, l’entente est passée : elle vit dans une fenêtre contextuelle et la fenêtre est ferméeM SK3

C’est là qu’il persiste sur le disque. `overview-`' les documents vivantsM SK1 Ces fichiers sont la forme durable, et ils survivront à chaque remarquÃ©.

Cela signifie que l’intention architecturale survivait plus longtemps qu’une seule personne. `overview-` retourne après un événement de compaction, il lit un point de contrôle qui débute avec l'état actuel et les leçons difficiles de la dernière session , et il est orienté dans une seule lecture. Quand `foss-` retourne, il sait s’engager `9b849629` Il n’y a pas d’incidents à signaler dans ce cas. **Long-mémoire à terme n’est pas une caractéristique rattachée sur le côté. Il est intrinsèque**, parce que le fait d’arrêter un travail est l’acte de rédiger ce qui était le travail.

---


## Chaque décision a sa validité

Le message-bus fait plus que le travail de la route. Puisque les spécialistes s’y coordonnent , et chaque message atterre dans le canal,, le raisonnement qui sous-tend chaque décision est capté au moment où il se produitM SK3 Non écrit ensuite dans un doc personne ne le met à jourMSC4 Capturé en l’occurrence

> La conversation est la documentation.

![L’attention-premier Bus de signalisationM SK1 un fictif "Potre être attiré" groupe de fils non répétésMSC4 puis récenteMska5 puis archivéeM Ska6 couleur de chaque ligneMSKA7 codé par le participant avec une glyphère d’étatMka8](/articleimages/styloagent-bus.png)

Voici une séquence réelle de cette flotte. `overview-` d'acheminer la question du risque vers `foss-`, marquée d'urgence :

```
From: overview-   Priority: urgent
# PRIORITY: the RISK display+correctness on the dashboard (human: this is the WORST)
Known bots showing VeryHigh ... known-good bots should latch friendly/Verified.
Report root cause + fix.
```

`foss-` : la grille de revendication vérifiéeM SK1 n’a jamais été câblée. `overview-` a approuvé et ajouté deux conditions, les deux décisions techniques valables à conserver M SK1

```
From: overview-   Priority: normal
# APPROVED - ship it (TDD). No DB op = perfect; add a REAL test of the wired flow
1. ADD A REAL TEST that exercises the ACTUAL wired flow end-to-end ... NOT one that
   manually calls UpdateClaimVerificationAsync. That's the exact false-confidence gap
   that hid this.
2. The CF / real-client-IP caveat is real ... if the gateway sees CF egress, the latch
   never fires.
```

Les deux notes sont de provenance. `deploy-`. `foss-` envoi de commandes `9b849629`, a ensuite remplacé l'épreuve peu profonde par une fin réelle `883a1277`, et `overview-` clôture de la boucle :

```
From: overview-   Priority: low
# 883a1277 real E2E test = exactly right; told deploy- to build it.
... drives the actual orchestrator + real store + real projection, no manual call ...
that fully closes the false-confidence gap that hid this.
```

Six mois à partir de maintenant, quand quelqu’un demande pourquoi le filet de revendication est connecté là où il se trouve , la réponse n’est pas perdue. Il se trouve sur l’autobusMSC3 dans l’ordreM SK4 avec les SHAs d’engagement attachésMST5 La décision a sa provenance parce que la décision était une conversation MST6 et la conversation a été enregistréeMSST7

---


## Pourquoi cela a réduit ma charge de travail

Cela ne m’a pas amené à écrire plus rapidement le code. Les modèles étaient déjà rapides. Il a réduit la charge cognitiveM SK2 ce qui était le coût réel .

**J’ai cessé d’être le bus d’intégration.** Avant StyloAgent, j’étais le seul élément qui comprenait comment le moteur de détection, ,, la construction des passerelles,,, l’entrepôt Postgres et le pipeline de déploiement s’établissaient ensemble.,, pour que tous les croisements,-, le coupage du changement se déroulent dans ma tête et ., je me soustrais aux contraintes et à ., je m’ai rappelé les couches,M SK8, j'ai réexaminé - et expliqué l’architecture à n’importe quel agent avec lequel j’avais parlé.

Maintenant, la reconstruction se produit une fois et est écrite :

| Avant | Après |
|--------|-------|
| ReM SK1 Expliquez l’un-DB souder chaque session | Encoded comme invariante les spécialistes honorent
| Contexte
| Rappelez-vous ce qui a été expédié lors de la dernière session

Ce qui reste, c’est la partie qui vaut la peine de faire : décider ce qu’il faut construire , et laisser les propriétaires le construire

---


## Où cela pourrait aller

Il s’agit d’idées, mais pas de promesses.

- **Cross-spécialistes de machines.** Une flotte pourrait étendre les machines, avec un spécialiste qui fonctionne où que ce soit dans son domaine
- **Collaboration d’équipe.** Plusieurs ingénieurs partagent une flotte, chaque routage travaille à l’intention des mêmes spécialistes persistants, de sorte que la mémoire architecturale est partagée plutôt qu’enfouie dans un seul individu ' sa configurationM SK3
- **Compétence à distance.** Un spécialiste qui possède un domaine accessible par des personnes qui ne le possèdent pas.
- **Trousses spécialisées partagées.** Un spécialiste de la détection ou un spécialiste Kubernetes remis à une autre équipe comme point de départ plutôt que d’être construit du tout.
- **Organisation-mémoire architectural à l'échelle de la région.** Compréhension accumulée des spécialistes qui persistent à travers les gens qui quittent et s’engagent dans une entreprise, afin que le savoir ne sort pas de la porte lorsque l’ingénieur qui l’a maintenu fait ce qu’il fautM SK1

Ce dernier est loin d’être, et je ne l’affirme pas.

---


## Un cas d'utilisation étrange, et aucune contribution

Mon cas d’utilisation est étrange. Je suis une seule personne qui dirige ce qui représente un organisme de génie d’agents à travers une constellation de mes propres produits et paquets , pour pouvoir tenir quatre repos en vol sans que ma propre tête ne soit le créneau d’étanchéitéM SK2 La plupart des gens n’ont pas ce problème. Je ne lance pas cela comme un flux de travail que tout le monde devrait adopter.

Pour la même raison, Je n'accepte pas les contributions . Fork it, make it your ownM SK3 take it somewhere I would never think toMSC4 Les sorties sont ici si vous voulez commencer à partir d'un build plutôt que de source ♫:

[![Mise à jour](https://img.shields.io/github/v/release/scottgal/styloagent)](https://github.com/scottgal/styloagent/releases)

---


## Conclusion

Le remède n’était pas un agent de codage avec une mémoire plus grande. Il s’agissait d’un changement de forme : d’une personne qui essaie de connaître tout–, à de nombreux spécialistes qui possèdent chacun quelque chose et qui discutent les uns avec les autres.

C’est tout le truc. Pas un modèle plus intelligent, une équipe M SK2 des spécialistes qui conservent leurs domainesMSC3 un architecte qui les maintient cohérents , et un dossier de toutes les décisions qui se poursuivent pendant la session qu’elle a été prise dansMST5 Il tient l’architecture de sorte que je n’ai pas à

---


## Annexe : Le processus de travail dans la pratique

Voici la solution connue-risque fixe des robots,démarrage à finM SK2 puisqu’il s’est en fait déplacé dans la flotte . Chaque engagement et message ci-dessous est réelMSC4

1. **Aperçu reçoit la demande.** J’ai dit à la flotte que la pire chose sur le tableau de bord était l’affichage des risques. `overview-` : risque de ne pas être montré , et risque d’être erroné lorsqu’il est montré
2. **Vue d'ensemble des routes vers le spécialiste.** Un message d'urgence à `foss-`, le propriétaire du moteur de détection , avec la passerelle de garde que toute empreinte digitale de productionM SK2DB re-derive a besoin d’un emplacement initial et un passage humain explicite
3. **Le spécialiste enquête.** `foss-` On l’a tracé jusqu’à la grille de revendication et on a trouvé la cause réelle : `UpdateClaimVerificationAsync` Il a également remarqué que le test existant avait falsifié l’appel, c’est pourquoi la lacune est demeurée cachée.
4. **Discussion se déroule.** `overview-` Approuvée en vertu de la DPT et ajoutée à deux conditions sur le bus : Ajouter une fin réelle -àM SK2essai de fin , et confirmer l’avertissement IP des FC realMSC4client- avec `deploy-`.
5. **L'agent de code met en œuvre.** `foss-` . Commit `9b849629`. Il n’est pas nécessaire d’effectuer des opérations de production par ordinateur ; il s’agit lui-même
6. **Essais effectués.** Le premier essai a démontré que le magasin était appelé. `foss-` puis on a ajouté une fin réelle-àM SK1essai de conduite de l’orchestre réel, magasin réel , et projection réelle `883a1277`.
7. **Mise à jour de la documentation.** Aucune séparément. La cause principale, les deux conditionsM SK2 et les SHA commit sont tous sur le bus dans l’ordre
8. **Le spécialiste déshydrate.** `foss-` écrive son contexte enregistré : `9b849629` expédition, `883a1277` atterrissait, une face encore ouverte , les rails de garde étaient portés en avant.
9. **La connaissance est maintenue.** L'installation s'est rendue dans une passerelle de reconstruction appartenant à `deploy-`, a été vérifié lors de la mise en place , et est devenu admissible à une séparation gardée , digest M SK3 coupe de production à l’aide d’un câblage de commandes MSC4 Lorsqu’on pose la question suivante au sujet du filet de revendications, il arrive sur `foss-`, qui possède déjà la réponse

L’ensemble de la boucle, à mesure qu’elle se déplace sur le bus M SK1

```mermaid
sequenceDiagram
    participant H as Human
    participant O as overview-
    participant F as foss-
    participant D as deploy-
    H->>O: the risk display is the WORST
    O->>F: PRIORITY (urgent), root-cause the risk verdict
    F->>F: trace projection to the claim latch
    F->>O: root cause, UpdateClaimVerificationAsync never wired
    O->>F: APPROVED, ship it plus a REAL end-to-end test
    F->>F: commit 9b849629, then 883a1277 (real e2e test)
    O->>D: rebuild the gateway from 883a1277
    D->>D: staging, known bot now reads LOW not VeryHigh
    D->>O: verified green on staging, ready for a guarded prod cut
```

Personne n’a écrit cette séquence après le fait.

---


## Articles connexes

- [Pourquoi les LLM échouent en tant que capteurs](https://www.mostlylucid.net/blog/llms-fail-as-sensors) - l'erreur de catégorie de l'utilisation d'un synthétiseur probabiliste en tant que dispositif de limite
- [MCP est un transport, Non une architecture](https://www.mostlylucid.net/blog/mcp-is-a-transport-not-an-architecture) - pourquoi l'architecture vit au-dessus du protocole, ne se trouve pas à l'intérieur de celui-ci
- [Stylo.BotM SK1 Comment les bottes sont devenues plus intelligentes (Part 2)](https://www.mostlylucid.net/blog/botdetection-part2-signature-pipeline-and-stylobot-architecture) - le moteur de détection que cette flotte construit et exploite
- [L'architecture de la Sidecar](https://www.mostlylucid.net/blog/sidecar-architecture) - comment le moteur Stylo.Bot se connecte à n'importe quelle pileM SK2