Boucle de réflexion — auto-amélioration d'agent
La boucle de réflexion : un worker produit un brouillon, un critique l'évalue au regard du mandat et l'orchestrateur n'approuve que lorsque la révision comble tous les écarts.
La boucle d'évolution : un optimiseur compare des agents candidats à la référence de production, conserve le meilleur score et confirme la persistance avant promotion.
Copiez et collez le code FlowZap suivant dans un projet de votre compte FlowZap pour voir ce diagramme.
product { # Product Team
n1: circle label:"Start benchmark run"
n2: rectangle label:"Submit eval set"
n3: rectangle label:"Receive run acknowledgement"
n4: rectangle label:"Receive upgraded prompt pack"
n1.handle(right) -> n2.handle(left)
n2.handle(bottom) -> optimizer.n5.handle(top) [label="Eval set"]
}
optimizer { # Optimizer
n5: rectangle label:"Acknowledge benchmark"
n6: rectangle label:"Create prompt candidate"
n7: rectangle label:"Receive run traces"
n8: rectangle label:"Request scoring"
n9: rectangle label:"Receive score"
n10: diamond label:"Score high enough?"
n11: rectangle label:"Mutate prompt"
n12: rectangle label:"Log winning config"
n13: rectangle label:"Receive log confirmation"
n14: rectangle label:"Publish winner"
n5.handle(top) -> product.n3.handle(bottom) [label="Ack"]
n5.handle(right) -> n6.handle(left)
n6.handle(bottom) -> candidate.n15.handle(top) [label="Prompt candidate"]
n7.handle(right) -> n8.handle(left)
n8.handle(bottom) -> evaluator.n19.handle(top) [label="Score traces"]
n9.handle(right) -> n10.handle(left)
n10.handle(bottom) -> n11.handle(top) [label="No"]
n11.handle(bottom) -> candidate.n17.handle(top) [label="New candidate"]
n10.handle(right) -> n12.handle(left) [label="Yes"]
n12.handle(bottom) -> metrics.n23.handle(top) [label="Log winner"]
n13.handle(right) -> n14.handle(left)
n14.handle(top) -> product.n4.handle(bottom) [label="Winning pack"]
}
candidate { # Candidate Agent
n15: rectangle label:"Run benchmark tasks"
n16: rectangle label:"Return execution traces"
n17: rectangle label:"Run mutated candidate"
n18: rectangle label:"Return new traces"
n15.handle(right) -> n16.handle(left)
n16.handle(top) -> optimizer.n7.handle(bottom) [label="Traces"]
n17.handle(right) -> n18.handle(left)
n18.handle(top) -> evaluator.n21.handle(bottom) [label="New traces"]
}
evaluator { # Eval Harness
n19: rectangle label:"Score first candidate"
n20: rectangle label:"Return score"
n21: rectangle label:"Score mutated candidate"
n22: rectangle label:"Return improved score"
n19.handle(right) -> n20.handle(left)
n20.handle(top) -> optimizer.n9.handle(bottom) [label="Score"]
n21.handle(right) -> n22.handle(left)
n22.handle(top) -> optimizer.n12.handle(bottom) [label="Best score"]
}
metrics { # Metrics Store
n23: rectangle label:"Persist winning config"
n24: rectangle label:"Confirm persistence"
n23.handle(right) -> n24.handle(left)
n24.handle(top) -> optimizer.n13.handle(bottom) [label="Logged"]
}
Installer le paquet MCPnpm install -g flowzap-mcpDocumentation MCP
La boucle de réflexion : un worker produit un brouillon, un critique l'évalue au regard du mandat et l'orchestrateur n'approuve que lorsque la révision comble tous les écarts.
La boucle de mémoire : avant de planifier, le planificateur interroge la mémoire pour des leçons similaires, puis y réécrit la nouvelle leçon une fois la tâche close.
Exécutant historique, évaluateur LLM-as-judge et consommateur de nouvelle génération : l'évaluateur note la trajectoire complète, rejette le travail structurellement bâclé et ne transmet que les charges validées.
Hôte partagé, profils par client et frontières d'outils : comment chaque client externe atteint son propre espace Hermes sans voir les outils ni les données d'un autre locataire.
Option 1 du montage multi-tenant Hermes : un acteur externe, une passerelle, un espace de travail isolé dans un bac à sable d'exécution et un seul profil client.
Option 2 : un client avec plusieurs points d'entrée, un routeur par préfixe qui associe /eng ou /support à un mode, et un profil Hermes unifié derrière la passerelle.