Back to "Il flusso di lavoro del StyloAgent: Come costruire e gestire sistemi grandi (and HUGEM SK2 usando code LLMs"

This is a viewer only at the moment see the article on how this works.

To update the preview hit Ctrl-Alt-R (or ⌘-Alt-R on Mac) or Enter to refresh. The Save icon lets you save the markdown file to disk

This is a preview from the server running through my markdig pipeline

Agents AI Architecture LLM Patterns StyloAgent

Il flusso di lavoro del StyloAgent: Come costruire e gestire sistemi grandi (and HUGEM SK2 usando code LLMs

Saturday, 18 July 2026

La generazione di codici si è fermata un po' fa. I modelli scrivono un buon codice. segueno le convenzioni del file che stanno modificando, e se li puntate ad un test fallito lo riparano di solitoM SK2 Quella parte funziona .

La parte che non funziona è la memoria.

Il problema di bottleneck non è più "il modello può scrivere il codice?" È "la cosa che scrive il codice ricorda perché il sistema è così come è

Ogni nuova sessione inizia a non sapere nulla del sistema che sta per cambiare. Ri scopre che Stylo.Bot sono due repositori, che la banda di rischio sul pannello è derivata al momento della lettura e non è mai archiviata, che c'è esattamente una sola fabbricha di connessione database e un negozio SQLite non deve mai nascondersiM SK2 scrivere insieme a PostgresMSC3 Niente di questo è nel file che viene modificatoMST4 Vive nell'architetturaM ST5 e l'architettura vive nella mia testaM st6

Si tratta del flusso di lavoro che ho costruito per smettere di pagare quel costo.

Ultima versione


Il problema principale: la dériva architettonica

Stylo.BotM SK1 il motore di rilevamento non è un semplice ASP.NET CRUD appMSC3 Funziona su un Ephemeral*, segnali+- e+M SK6architettura degli atomi MST7 gli atomi hanno lo stato+MST8 i segnali annunciano+Mst9 uno scoped SignalSink per ogni richiesta è il blackboard, un singolo ScheduleCoordinator emette segnali di cadenza tick invece di un mucchio di servizi di fondo, la classificazione è più vicinaM SK1 centroide con drift piuttosto che regole, e i vertici vengono derivati fresh at read instead of cachedMNK3 Quella forma è l'intero punto del prodottoMMK4 E' ciò che gli permette di imparare dal comportamento osservato invece della corrispondenza ad una lista statica

Un codice LLM non vuole costruire quello. Vuole costruire la cosa che ha visto un milione di volte nei suoi dati di allenamento : CRUD sempliceM SK2 Chiedete ad un agente nuovo di aggiungere una funzione e raggiunge ogni voltaMSC3 , per l'ASP

Il riflesso ASPM SK1NET (plain CRUD) Stylo+.Bot+'il modello intenzionale.
A BackgroundService per lavoro periodico Uno ScheduleCoordinator che emette segnali di tick
A ConcurrentDictionary usata come magazzino Gli atomi hanno lo stato di conservazione ; non c'è in- persistenza della memoria
A switch mappare una sequenza in una categoria più vicinaM SK1 classificazione centroide, driftMSC3 Leiden
Calcolare il valore calcolato per la località Lo derivare fresco a leggere
A bare DbContext nel middleware State lives in the engine, read over a seam
An ILogger per esaminare quello che è successo I segnali annunciano; il SignalSink è la lavagna

Ogni cellula a sinistra è un libro di testo ASP.NET e corrisponde ad una normale applicazione. Ogni cellulare a sinistra non funziona per StyloM SK2Bot CLAUDE.md che dice così, esplicitamente M SK1 centroidi non regole, nessun servizio di sfondo usa il ScheduleCoordinator , nessun archivio di memoriaMSC5 nessun cache favorisce la frescozza rispetto alla localitàMST6 segnali e atomi non ASPMSST7Norme NETMSV8

Non conteneva. CLAUDE.md Si carica fresco in ogni sessione, e ogni sessioni compete con il modello'si precede e perdeM SK2 Il modello regressisce alla media dei suoi dati di allenamento , che è CRUDMSC4

Questo costa settimane di riprogettazione. Non c'è una sola scomparsa drammatica, un sanguinamento lento : a BackgroundService tornato a un coordinatore tick, a ConcurrentDictionary che era diventato silenziosamente un magazzino parassitico cancellato, a switch statement swapped back for a centroid lookup, session after session after sessions. Il bug non era mai il puntoM SK2 Il drift è stato il punto. Un file per le istruzioni per l'e-repo è la retrieval\ , e la retrival non era sufficiente MSC6 l'agente aveva le regole davanti ad esso , non capiva perché la forma Ephemerale aveva importanzaMNK8 e l'erarodò comunque\ MNK9

Non " l'agente può't codificarloM SK2 ma " l’agente è in grado~' non tenere l'architetturaMSC5 Nessun file di istruzioni più grande l'ha riparatoMST6 Dargli l' architettura un proprietario ha fatto~MST7


La scala della cosa.

La scala non ha causato la deriva. L'ha moltiplicata.

Stylo.Il bot non è un giocattolo. È una piattaforma di rilevamento M SK2un motore di rilevazione FOSS che fa fronte alle app web attraverso una passerella YARP , più un strato commerciale con la gestione della flottaMSC5 un editore di configurazione dal vivoMST6 la persistenza dei Postgres e del pgvectorMSSK7 i fornitori commerciali di LLMMSL8 un motore reportingMSM9 la presenza di membri e di licenze per MSM10 la concessione delle domineMMS11 e un operatore KubernetesMSS12

Contato onestamente:

  • Due repositori principali per Stylo.Bot : il motore di rilevamento FOSS e la strata commercialeM SK2
  • Circa vent'anni-cinque progetti all'interno della sola ripresa commerciale.
  • Un gruppo di i miei pacchetti NuGet di prodotti condivisi : Mostlylucid.Ephemeral (il substrato), StyloExtract, StyloFlow, StyloIssues, lucidVIEW.
  • Infrastruttura : Diagrammi di cascoM SK1 un microk 8 un cluster, un magazzino segretoMNK4 un registro dei contenitoriMMK5
  • Un sito di marketing che gestisce il checkout e inserisce il vero dashboard.

Ognuno di questi è una superficie in cui il flusso può sfuggire, e un agente fresco deve mantenere la stessa disciplina temporale su tutti gli altri. Un cambiamento per un singolo ripulsione di fili di rilevamento nel portoneM SK2 il plugin commerciale , la proiezione del pannello di controlloMSC4 e il tubo di deploiamentoMNK5 Scrivere il cambiamento non è mai stata la parte difficileMMK6 Tenere l'architettura stabile mentre la si realizzaMEK7 ovunque si atterraMZK8 sessione dopo sessioneMRK9 eraMBK10


Il mito del singolo Super-Agent

L'industria continua a cercare la stessa risposta : dare più contesto all'agente. finestre più grandiM SK2 milione - prompt di tokenMSC4 RAG per spostare i file giustiMST5 MCP per raggiungere i sistemi in direttaMSM6 strati di memoria che riassumono le sessioni passate e le riproduconoMSSK7

Tutto questo migliora la ricerca. Niente di ciò migliora la comprensione.

La ricerca trova il file rilevante. La comprensione sa perché il file è così come è, cosa protegge l'invarianteM SK2 e cosa spezza via due ripositori se lo cambiate . Una finestra più grande permette ad un agente di leggere di più alla voltaMSC4 Non permette all'agente di ricordare quello che ha concluso il martedì scorsoMNK5

Quella re-derivazione è il costo reale. Guardate un agente freddo che inizia su StyloM SK2Bot MSC3

  1. Per il tubo di rilevamento..
  2. Legge l'orchestratore.
  3. Si scopre che il verdetto ha tre assi e è composto da:, non immagazzinato.
  4. Nota che il plugin commerciale sostituisce i fili FOSS attraverso l'injezione di dipendenza.

Trenta minuti dopo sa abbastanza per fare un cambio di linea-. Poi la sessione finisce e tutto evaporaM SK2 La sessione successiva paga le stesse trent'anni . Una finestra contextuale più grande rende ogni riscoperto più economicoMSC4 Non rende la riscoperta inutileMNK5

Una ricerca più intelligente è la soluzione sbagliata. La ricerca stessa deve smettere di accadere.


Come gli esseri umani costruiscono software

Nessun ingegnere capisce un intero sistema di impresa. Nessuno in una vera azienda possiede i pagamentiM SK1 auth , il tubo di dati, e la frontend nella sua testa ad una risoluzione completa all'unisonoMSC4 Questo non è un fallimentoMNK5 È come si costruiscono grandi sistemiMMK6

Le squadre decompongono il sistema in domenze e metteranno un specialista su ciascuno di essi. La persona responsabile dei pagamenti possiede i pagamenti. Loro conoscono l' storiaM SK2 le strisce marginali , la decisione di due anni fa che sembra sbagliata finché non vi ricordate la migrazione che stava proteggendo

La proprietà è più importante del sapere enciclopedico. Il specialista non ha bisogno di sapere tutto. Ha bisogno di conoscere profondamente il proprio dominio, e di sapere chi chiedersi del restoM SK2

Quello che mantiene un sistema decomposo coerente è la comunicazione. La persona che paga parla con l'auth persona prima di cambiare il formato del token. Una richiesta di sollevamento attraversa una frontiera e il proprietario di quella frontiera pesa in. L'architettura rimane coerente non perché una persona ne possieda tuttoM SK3 ma perché le persone che ne possiedono pezzi parlano tra loro .

Questo funziona. È come funziona ogni vera squadra. Gli agenti di programmazione vengono gestiti in modo opposto , in un modo che nessun team di ingegneria avrebbe mai fattoM SK3


Il mio problema era diverso.

Il drift sarebbe un problema in una piccola app. In tutti i sistemi che possiedo è corrosivo, perché non sono un solo sistemaM SK2 Sono prodotti separati , in depositi separati, che si nutrono l'un l'altro attraverso pacchetti che io possiedo anche.

Il substrato è Mostlylucid.Ephemeral, il mio paquet NuGet : i primitivi di esecuzione e il flusso dei dati il motore di rilevamento è costruito su . Stylo StyloExtract per layout-marcatura corrispondente, StyloFlow per i flussi di lavoro guidati dal segnale- e per la concessione di licenze, StyloIssues per il feedback UX sul sito di marketing. StyloAgent , la flotta in questo articolo, è costruita anche dai miei pacchetti M SK3 lucidVIEW rende i suoi documentiMSC4 e Mostlylucid.Avalonia.UITesting genera le sue schermate. Costruisco i prodotti con l'outil, e costruisci l'Outil dai prodottiM SK2

Questo è il cibo per cani reale, e questo è ciò che rende pericoloso la deriva. Un agente fresco che riporta un primitivo ephemerale a una BackgroundService o una ConcurrentDictionary non sta tagliando una sola app. Sta erosionando un pacchetto ognuno di quei prodotti si trova su. Le navi a deriva in un magazzino e le superfici in un prodotto si trovano a due magazzini di distanza , dove l'agente che lo ha scritto non appare maiM SK3

Un primitivo a derivare. Ogni prodotto costruito su di esso.

La programmazione non è mai stata la parte più difficile su questa scala.


proprietà, Non contesto

Il contesto è l'asse sbagliata. La scala dei costi con il numero di sessioni, non la dimensione della finestraM SK2 quindi una finestra più grande perde per un progetto più lungo - continua a vivere ogni voltaMST4 L'asse che funziona è la proprietà MSV5

Il problema non è "come dare ad un agente più contesto?" Ma " come dare a molti specialisti la proprietà persistenteM SK3

caricare il sapere in una finestra e sparisce con la finestra. Darlo a un specialista e lo porta avantiM SK1 Il specialista della rilevazione non riloada l'architettura di rilevamento ogni sessione. Lo possiede già , e inizia da quello che è stato realizzato l'ultima voltaMSC4 perché l'altra volta l'ha scritto come se stessa, e non come un riassunto per qualcun altro

Una sessione poi paga per estendere il sistema.


Il modello StyloAgent

StyloAgent trasforma quella struttura in processi in corso. Le parti :

  • Apertura : l'architetto e il coordinatore (overview-). Contiene i tre documenti viventi (spec, architetturaM SK3 rosterMSC4 arbitra i diffusi di portataMNK5 e i percorsi dei lavori arrivatiMRK6 Non fa il lavoro del dominio stessoMMK7
  • I specialisti : proprietari di domen. foss- possiede il motore di rilevamento. deploy- possiede la costruzione-toM SK1staging-to+-prodotto di produzione . mae- possiede il सदस्यता e l'ecommerce. dash- e edit- possedere i percorsi di lettura e di scrittura del dashboard. prod- possiede la sicurezza della piattaforma. test- possiede la suite. Ognuno possiede i file, non i compitiM SK2
  • Il bus del messaggio : un file di gitM SK1backed, -drop channel con inbox, outbox, archive, e saved-context. I messaggi hanno una priorità e una superficie all'agenteM SK1 al limite di giro.
  • Rihydratazione e dehydratazione : ogni agente mantiene un documento di contesto viventeM SK1 Si dehydrata quando si ferma e si rihydrata mentre si sveglia.
  • Spazi di lavoro : il repo FOSS e il registro del repo commerciale come uno spazio di lavoroM SK1 L'architettura esiste sopra entrambi.
  • La comunicazione : una regola difficileM SK1 stare nella vostra corsia. colpire un bloccatore in un file che non possiedete , e fermarvi e mandare il messaggio overview- piuttosto che collidere con il proprietario.

Il cockpit StyloAgent: gli agenti e il bus di segnali in basso a sinistra, terminali dell'agente a docking nel centroM SK2 e un cronogramma MSC3 Documenti / Issues / Git S/ Panele di router sulla destraMST7

Che cos'è in realtà?

StyloAgent è un cockpit da scrivania, costruito in .NET 10 e AvaloniaM SK3 Ogni specialista è un vero. claude processo che gira su un PTY, con il suo terminale nel cockpit, il suo albero di lavoro gitM SK2 e il suo stesso documento di contesto . Il cockpit ospita il server MCP l'agente che chiama e la socket che riporta lo stato del loro operatoreMSC4 Il prodotto stesso è costruito da quattro proprietariMST5 e l'architettura si raddoppia come mappa di proprietà Mst6

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 è il nucleo. Il cockpit ospita un server MCP, e tutto quello che un specialista fa per coordinare è una chiamata di strumento MCP contro di lui, non una convenzione o un file che spera un altro agente di leggereMSC2 Il set del verbo è la strata di coordinamento M SK3

  • send_message / check_inbox : lavoriamo sul percorso e lo tiramo fuori, prioritàM SK2 risolveto .
  • spawn_agent : un proprietario divide sotto di lui un nuovo specialista
  • claim / heartbeat / release : serializzare l'accesso ad un ambiente condiviso (un ospite SSHM SK2 un obiettivo di deploiamento) così che due agenti non si contrappiano
  • dehydrate_agent / rehydrate_agent : parcheggiare un specialista e ricostruirlo.
  • wrap_up : testM SK1 fusione, e ripulire una sezione finitaMSC3
  • report_issue, architecture_impact, agent_color, list_fleet : file a blocker, preview a design change before it lands

Il file-drop channel sotto è la traccia durevole di quello che è stato dettoMSC1 non il meccanismo. Il meccanismo è il server MCP che consegna ad un agente in diretta alla sua limite di turnoM SK3 Gli alberi di lavoro Git danno a ogni specialista un albero isolato per impegnarsi inMSP4 ma la strata MCP è ciò che li rende una flotta invece di un insieme di processi che condividono un folderMST5

La Timeline di Attività: la più recente-la prima carica di ogni agenteM SK2 le operazioni dell'outil con il file che ha toccato , il ciclo di vita e lo stato d'attenzioneMSC4 e i messaggi che mandano via l'autobus

Come l'autobus in realtà consegna?

send_message Scrive un archivio di marcamento durevole nel canale e fornisce anche in-processo. A ChannelDeliveryCoordinator Osserva i nuovi file, mantiene un set visivo così che ogni messaggio viene consegnato esattamente una volta, lo trasmette ai destinatari in diretta , e dà il reale impulso a un servizio di consegnaM SK3

Quanto dura è l'interruzione di un messaggio non è un free-per-tollM SK2 Un messaggio ha una priorità , e il runtime risolve quella priorità in un modo di consegnaMSC4 Questo è il vero DeliveryMode enum, una scala di interruzione :

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 consegna è inattiva-inviata e a-la più bassa frequenzaM SK2una voltaMST3e l'accettazione è un lato osservatoMSV4effettoM SV5 non una promessaM Sv6 Un messaggio di emergenza si rompe nella rotazione attualeMsv7 Un normale aspetta il prossimo prompt inattivo così da non corrompere un agente a metàMVS8pensareMSS9

Come si applica la proprietà?

Essere nella vostra corsia non è un sistema di onore. L'architettura ha una macchinaM SK1proiezione leggibile, ownership.yaml, e un OwnershipMap risolve qualsiasi percorso relazionale a un predisposto dell'agente che lo possiede, la maggior parte- vincitore di un globo specifico M SK3

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

Una porta PreToolUse consuma quel risolvente e impedisce ad un agente di scrivere un file che un altro agente possiede, con delle eccezioni sensate : overview- Può attraversare i confini perché arbitra, file non posseduti sono condivisi, output di costruzione e test sono esemplariM SK2 La mappa è la stessa informazione che colora il diagramma CMSC3 . L'immagine di chi possiede cosa e l'applicazione di chi possede cosa sono una sola fonte

Il circuito vivente-docs

overview- Non è freelance. Il suo prompt del sistema lo mette sulle rotte : lavora in cimaM SK2 scende in tre strati , e non salta avantiMSC4

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

Specchi prima : cos'è il sistema, è stato concordato con l'uomo prima di qualsiasi altra cosaM SK2 Poi modella : un singolo diagramma di componenti CMSC4 in cui ogni componente viene colorato dal proprietario intenzionaleMNK5 Poi una flotta ♫: uno degli agenti propuestos per cimaMMK7 un componente a livello di livello, condividere il suo componente\MNK9 la sua colore\MZK10 Mentre gli specialisti imparano il sistema reale e riportano sull'autobus\M SK11 overview- Rallenta le loro scoperte nel spettro, ri- produce la formaM SK2 e regola la flotta . I tre documenti restano una proiezione dal design in diretta invece di crollare in fantascienzaMSC4


Specializzati invece dei compiti

La maggior parte degli strumenti agenti crea lavoratori. Descrivere un compito, un lavoratore si spinge verso l'altoM SK2 lo fa?, sparisceMST4 Il prossimo compito riceve un nuovo lavoratore senza la memoria dell'ultimoMSC5 L'expertise non si accumula mai perché non c'è niente da accumulare in MST6

StyloAgent crea esperti. foss- non è un operaio che ha toccato il motore di rilevamento una volta. È il motori di rilevazione'il proprietarioM SK2 e rimane il proprietario per ogni sessioneMSC3 Quella differenza non è cosmetica . E' per questo che la flotta ha preso un errore un compitoMST5un operaio basato sulla flotta avrebbe persoM ST6

Il roster della flotta: ogni colore specialista - codificato con il prefisso, possedendo un sottosistemaM SK3 con gli agenti propuestos che l'uomo può generare con un solo clicMSC4

I robot conosciuti venivano mostrati sul pannello, classificati come ad alto rischio. Il passo ovvio, quello che fa un nuovo operaioM SK2 è riprogettare la proiezione che deriva dalla fascia di rischio e assumere che il riscontro prendeMSC3 foss- non lo ha fatto, perché foss- Sapeva che la proiezione già esisteva e sapeva dove guardare sotto di essa. Ha scoperto che la fascia di rischio è amichevole solo quando si conserva un'impronta digitale con un status di claim verificato, e che il metodo che determina quel statusM SK2 UpdateClaimVerificationAsync, aveva Zero callers in production.. Scritto e mai collegato. Ogni impronta digitale rimaneva inesaminata per sempre , così ogni robot conosciuto leggeva come un rischio molto altoM SK3 e riprogettare la proiezione non l'avrebbe mai risolto.

Quella diagnosi proveniva dalla proprietà accumulata. foss- Aveva già mappato l'orchestratore, il compositore del verdetto, e la latch claim in sessioni precedenti . Il bug era invisibile per una ricerca e ovvio per un proprietarioM SK3

StyloAgent lo dimostra da solo. L'outil è costruito dalla propria flotta : cockpit- possiede l'Avalonia shell, bus- possiede la coordinazione e la consegna, session- possiede i PTY e la macchina dello stato di parto, repo- possiede git e la biblioteca dei documenti. I proprietari permanenti, non unoM SK2tasse di tiroMSC3 Le lezioni difficili che imparano vengono scritte nel loro contesto così che non li riaccolgono mai . Un vero frammento da session-Il proprio documento di contesto '

## 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 operaio basato su un compito, -, colpisce quella collisione,,, e l'altro operaio lo colpisca di nuovo,,, perché niente porta avanti la lezione. session- lo colpisce una volta, capisce perché, e codifica il riparatore come parte di chi siaM SK2 Questa è la differenza tra fare un compito e essere un esperto .


Rehydratazione invece di Ri scoperte

Una sessione fredda inizia con un rituale : cercare la base di codici , riassumere ciò che trovate, ricostruire l'architetturaM SK3 provare a ricordare quello che è successo l'ultima voltaMSC4 Può mangiare la prima metà della sessione

La rihydratazione elimina il rituale. La sequenza diventa : svegliare l'espertoM SK2 ripristinare lo stato , continuareMSC4

Lo stato vive in un file per ogni specialista. Questo è il contesto reale salvato. foss-, leggermente tagliato :

# 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 nuovo. foss- lo legge e è immediatamente attuale. Conosce l'ultimo atto di impegno, perché esisteM SK2 quello che è ancora aperto , e quali ostacoli impediscono il prossimo passoMSC4 Nessuna riscopertaMST5 perché lo specialista l'ha scritto per il suo futuro personaleMSP6 Una regola è rigorosa MSV7 non contiene mai un valore segretoM SV8 solo un indizio dove vive una credenzaleMsv9

Questa è una macchina dello stato reale, non una metaforaM SK1 Una sessione di agente si muove attraverso quattro stati : Unspawned, Live, Dehydrated, Exited.

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

Dehydratazione scrive il documento di contesto e rilascia la PTY, così un specialista parcheggiato non costa nulla mentre dormie. Rehydratazione lo ristabilisce ed è Live AgainM SK2 corrente dal primo giramento . Scrivere è l'uscita pulita MSC4 il cockpit fa funzionare il progettoMST5 gli esamiM ST6 fonde l'albero di lavoro al principaleM st7 lo rimuoveMst8 o in caso di fallimento mantiene l'arbre di lavoro e archivia una questione per la triageMS ST9 Niente di tutto questo dipende da una finestra di contesto che rimane caldaMs ST10 La memoria vive sul discoMSS ST11 e la macchina dello stato la legge indietroMTS ST12


Capire i sistemi esistenti

Lasciate la flotta su un sistema che non ha mai visto, e guardate cosa succede. È così che StyloAgent ha iniziato su StyloM SK2Bot : il motoreMSC4 la logica centrale viveva nel riposito FOSS fratellinoMST5 e nessuno nella flotta l'ha ancora capitoMst6

overview- E' andato a esplorare. È andata a leggere- solo l'esplorazione passa attraverso il nocciolo FOSS e ha tracciato la vera catena M SK2 un orchestratore a scopi che possiede un'entrata di segnali per i>-request signal sink , alimentando un motore di rilevamento a un singolo tono che fa funzionare le ondeMSC5 ordinando atomi di rilevatoreMST6 producendo un ledgerMSV7 poi una firma e un giudizio di rischio con tre assi derivate al momento di letturaMSS8

Poi scrisse la comprensione in questo modo. architecture.md : un codiceM SK1 un diagramma C grounded 4 di componenti dove ogni componente è colorato dal suo agente proprietario. Il diagramma si raddoppia come una mappa di proprietàMSC4 Grey significa ancora nessun proprietario., e grigio è un segnale : ha mostrato che alcuni servizi commerciali non avevano nessun specialista, e che il backend commerciale era gestito da overview- solo.

Questo è il riporto della parte-outils sommatici mancano. Il risultato non è un sommativo di una sola parte - che va in gamba dal momento in cui viene scrittoM SK3 È un documento mantenutoMSC4 Come lo riportano gli specialisti overview- La mappa è viva perché la gente che possiede il territorio continua a correggerla.


Lavorare attraverso diversi repositori

Repo-l'outilamento centralizzato tratta il riposito come l'unità del mondo. StyloAgent lo tratta come un dettaglio di implementazione I specialisti hanno i propri domeni, non i folder, e un dominio trascende repos.

I due repos di Stylo.Bot si registrano come uno spazio di lavoro. foss- possiede la rilevazione ovunque vive, e vive in entrambi, connessi da un filamento M SK2 che il motore FOSS definisce IFingerprintStore, i strati commerciali si scambiano in una implementazione Postgres attraverso DI. I robot che sono conosciuti - hanno risolto quel filamento МSK3 Era un commito FOSS , ma le navi di rilevamento erano all'interno dell'immagine della porta commerciale. deploy- ricostruì il gateway, l'installazione ha confermato che il bot ora leggeva basso, e è rimasto corretto rispetto al negozio commerciale Postgres perché quel negozio si trova dietro lo stesso filamento della prova FOSS praticata su SQLite . Un cambiamentoM SK3 due repositoriMST4 tre specialistiM ST5 tenuto insieme da chiunque possieda il filamentoM st6 I miei pacchetti funzionano nello stesso modo Mst7 toccare Mostlylucid.Ephemeral e avete cambiato un contratto ogni prodotto dipende da.

Questa è la parte che mi piace di più. Ho quattro riserve in volo alla volta, ciascuna con uno specialista che ha solo il proprio contesto . Chiedete ad un agente di tenere quattro righe nello stesso momento e si randomizza il suo contesto M SK3 i dettagli dell'auth si riversano nel ragionamento della rilevazioneMSC4 le restrizioni di deploitamento sfogliano le regole di persistenzaMST5 e ogni risposta diventa un po' peggioreM ST6 Gli specialisti separati mantengono i contesti a distanzaM st7 quindi quattro ripeti attivi sono quattro agenti focalizzatiMSt8 non uno confusoMst9 Nessun codice LLM che ho usato lo fa da soloMSS10


L'architettura non dorme mai

Il beneficio silenzioso si manifesta quando nessuno sta programmando. In un flusso di lavoro normale, il momento in cui chiudete la sessione l'intelligenza è andata M SK2 è vissuta in una finestra di contesto e la finestra è chiusa .

Qui persiste sul disco. Ogni specialista' il suo sapere si trova nel suo contesto salvato . L'architetturaM SK3 lo spettroMSC4 e la lista si trova in overview-' i documenti viventi . Questi file sono la forma duratura, e sopravvivono a ogni ricominciamentoM SK3 Non c'è stato di detezione del daemon nella memoria che un crollo cancellarebbeMSC4

Ciò significa che l'intenzione architettonica supera ogni singola attività. overview- ritorna dopo un evento di compactazione, legge un punto di controllo che inizia con lo stato attuale e le lezioni difficili della ultima sessione, ed è orientato in una sola letturaM SK2 Quando foss- torna indietro, sa commettere 9b849629 e che una faccia della questione di rischio è ancora aperta. Long-la memoria a lungo termine non è una caratteristica bollata sul lato. E' intrinseca., perché il gesto di fermare il lavoro è l'atto di scrivere qual era il lavoro.


Ogni decisione ha prove.

L'autobus di messaggi ha più che un lavoro di itinerario. Poiché gli specialisti ci coordonano attraverso, e ogni messaggio atterra nel canaleM SK2 il ragionamento dietro ogni decisione viene catturato mentre succede . Non è scritto dopo in un doc nessuno lo aggiornaMSC4 Catturato nel momentoMST5 nelle parole usate dai specialisti in realtàMst6

La conversazione è la documentation.

L'attenzione- primo bus di segnaliM SK1 un pin " Ha bisogno di attenzione " gruppo di fili non rispettatiMSC4 poi RecenteMST5 poi ArchivoM ST6 ogni colore di filaMst7 codificato da un partecipante con uno status glyphM st8

Ecco una vera sequenza di questa flotta. overview- dirigere il problema del rischio verso l'altro. foss-, segnato emergenza :

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- investigata e tornata con la causa principale : il rispetto - la catena di revendicazione non era mai collegata. overview- approvato e aggiunto due condizioni, entrambe le decisioni di ingegneria che vale la pena mantenere 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.

Entrambe le note sono prove. La prima registra che un precedente test ha falsificato il flusso e ha nascosto l'errore, quindi questa volta l'esperimento deve guidare la strada veraM SK2 La seconda registra un rischio transfrontaliero - e lo consegna a deploy-. foss- spedito mandato 9b849629, poi ha sostituito l'esperimento superficiale con un'estremità reale. 883a1277, e overview- chiudere il circuito :

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.

Sei mesi dopo, quando qualcuno chiede perché il lattice della prestazione è collegato dove si trova, la risposta non è perdutaM SK2 È sull'autobus , in ordine+, con i SHA dell'assegnamento attaccati+. La decisione ha la provenienza perché la decisione era una conversazione=, e la conversazione è stata salvata=.


Perché questo ha ridotto il mio carico di lavoro

Questo non mi ha fatto scrivere il codice più in fretta. I modelli erano già veloci. Ha tagliato il carico cognitivoM SK2 che era il costo reale .

Ho smesso di essere il bus dell'integrazione. Prima del StyloAgent, ero l'unico componente che capiva come il motore di rilevamento, la costruzione delle porteMSC2 il negozio PostgresM SK3 e il tubo di deploiamento si mettessero insieme , così ogni croceM Sk5 tagliare il cambiamento trascinato dalla mia testaM sk6 tenevo le restrizioniMtk7 mi ricordavo dei sessiMk8 ho ripensatoMdk9 spiegato l'architettura a qualunque agente stavo parlando conMZK10 Quel lavoro sembrava sapere solo il mio sistemaMmk11 ed era un tributo tutto il tempoMlk12

Ora la ricostruzione avviene una volta e viene scritta :

Prima Dopo
RiM SK1 spiegare l'uno-DB segare ogni sessione Encodificato come invariante, i specialisti lo onorano.
Contexto-switch across four domains to land one change Route the change
Ricordate quello che è stato spedito la sessione successiva Il contesto salvato mi ricorda.

Quello che rimane è la parte che vale la pena fare : decidere cosa costruire , e lasciare che i proprietari lo costruiscano


Dove potrebbe andare tutto questo?

Queste sono idee, non promettenti. Il flusso di lavoro funziona oggi per un ingegnere e una flottaM SK2 Le direzioni che indicano sono più speculative :

  • Cross-speziali di macchine. Una flotta potrebbe espandere le macchine, con un specialista che gestisce ovunque il suo dominio' il sistema gestisceM SK2
  • Collaborazione di squadra. Diversi ingegneri condividono una flotta, ogni routing lavora con gli stessi specialisti persistenti, così che la memoria architettonica sia condivisa piuttosto che intrappolata in una sola personaM SK2 l'installazione .
  • Expertise remota. Un specialista che possiede un dominio accessibile da persone che non lo possiedono, il modo in cui si fa una domanda alla persona che paga senza diventare la persona che paghe.
  • Pacchetti speciali condivisi. Un esperto di rilevamento o un esperto Kubernetes consegnato ad un'altra squadra come punto di partenza piuttosto che costruito dal nulla.
  • Organizzazione- memoria architettonica globale. Comprensione accumulata di specialisti che persistono tra le persone che se ne vanno e si uniscono, così che il sapere non usci dalla porta quando l'ingegnere che lo ha tenuto lo fa.

Quello ultimo è lontano, e non lo sto sostenendo.


Un caso strano di uso, senza contributi

Il mio caso di uso è strano. Sono una sola persona che gestisce un'organizzazione ingegneristica di agenti attraverso una constellazione dei miei prodotti e dei miei pacchetti, così posso tenere quattro rifornimenti in volo senza che la mia testa sia il bottigliaioM SK2 La maggior parte delle persone non ha quel problema . Non lo sto presentando come un flusso di lavoro che tutti dovrebbero adottareMSC4 Ha risolto quello che ho fatto.

Per la stessa ragione, Non accetto contributi. Fork itM SK2 Make it your own , Take it somewhere I would never think toMSC4 Le versioni sono qui se volete cominciare da una costruzione piuttosto che da una fonte Mスク5

Ultima versione


Conclusione

La soluzione non era un agente di programmazione con una memoria più grande. Era un cambiamento di forma : da un agente che cerca di sapere tuttoM SK2 a molti specialisti che possedevano qualcosa e parlavano tra loro . La proprietà è persistenteMSC4 il ragionamento vive sull'autobusMST5 e l'architettura non vive più solo nella mia testaM ST6

Questo è l'intero trucco. Non un modello più intelligente , un team : specialisti che mantengono i loro domeniM SK3 un architetto che li mantiene coerentiMSC4 e un archivio di ogni decisione che supera la sessione che è stata fatta in. Tene l'architettura così non devo farlo.


Appendice : Il flusso di lavoro nella pratica

Qui c'è il noto-risico di ricambio dei robotM SK1 inizio a fine , mentre si muoveva davvero attraverso la flotta. Ogni committed e messaggio sotto è realeMSC4

  1. Overview riceve la richiesta. Ho detto alla flotta che la cosa peggiore sul pannello di controllo era il display del rischio. overview- l'ha definita come un'indagine con due aspetti : il rischio di non essere mostrata , e il rischio sbagliato quando è mostrata
  2. Apertura delle rotte verso il specialista. Un messaggio urgente. foss-, il proprietario del motore di rilevamento, con la cornice di sicurezza che ogni impronta digitale produttiva -DB reM SK3 il derivato ha bisogno di essere messo in scena prima e di un passaggio umano esplicitoMSC4
  3. Il specialista investiga. foss- L'ha tracciata fino alla catena di claim e ha trovato la vera causa : UpdateClaimVerificationAsync Aveva zero chiamatori in produzione. Ha notato anche che l'esistante test ha falsificato il call, ecco perché la differenza è rimasta nascostaM SK2
  4. Si discute. overview- approvato in TDD e ha aggiunto due condizioni sull'autobus : aggiungere un'estremità realeM SK1a-test di fine , e confermare l'avvertimento IP del CF realMST4clienteMSC5 deploy-.
  5. L'agente di codice implementa. foss- collegato il soffitto al filamento dell'orchestratore. Commit 9b849629. Non c'è bisogno di un'operazione DB per la produzione; si cura da soloM SK2 si guarisce come i robot reMSC3crawlMST4
  6. I test sono in corso. Il primo test ha dimostrato che il negozio si chiamava. foss- Poi abbiamo aggiunto un'estremità vera-aM SK1test di guida dell'orchestratore reale,store reale , e proiezione reale 883a1277.
  7. Actualità della documentation. Nessuno separatamente. La causa principale, le due condizioniM SK2 e i SHA commit sono tutti sull'autobus in ordine
  8. Il specialista dehydrata. foss- scrive il suo contesto salvato : 9b849629 spedito, 883a1277 atterrato, una faccia ancora aperta, le guardie portate avantiM SK2
  9. Le conoscenze sono conservate. La soluzione è andata in un corridoio ricostruito posseduto da deploy-, è stato verificato durante la fase di montaggioM SK1 e è diventato qualificato per un trapianto protetto, digestione - taglia di produzione spintaMSC4 Quando arriva la domanda successiva sull'asse di claimMST5 si atterra su foss-, che già possiede la risposta

Il circuito intero, mentre si muoveva attraverso il bus :

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

Nessuno ha scritto quella sequenza dopo il fatto. È l'ordine effettivo dei messaggi sul bus, ed è la documentationM SK2


Article connessi

logo

© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.