L'Aggiornamento di Hermes Agent

Nous Research ha rilasciato un'importante innovazione su Hermes Agent: i subagenti ora eseguono compiti in modo asincrono, il che significa che il chat principale non si blocca durante l'esecuzione delle attività delegate. Fino ad ora, la delega richiedeva un tempo d'attesa che bloccava ogni interazione nel percorso principale del dialogo.

Hermes Agent è un agente personale open source sviluppato da Nous Research. Questo sistema permette a un agente principale di avviare agenti figli, chiamati subagenti, per svolgere attività parallele. Dopo il lancio di questa novità, gli utenti esistenti potranno aggiornare il sistema semplicemente eseguendo la rispettiva command:

hermes update

Gli sviluppatori hanno annunciato la modifica su X con il co-fondatore, Teknium, assicurando chiarezza e immediatezza dell'implementazione.

Che Cos'è Un Subagente

Il meccanismo di delega utilizza il tool delegate_task per generare agenti figli. Ogni subagente riceve una conversazione, una sessione terminale e un insieme di strumenti indipendenti.

Subagenti e agenti principali mantengono una forte isolamento: solo la sintesi finale torna all'agente principale. Questa struttura mantiene piccolo il contesto dell'agente principale, migliorando l'elasticità e la gestione complessiva.

I subagenti non hanno accesso alle informazioni storiche dell'agente principale; quest'ultimo deve fornire dettagli completi tramite i campi goal e context. Questi agenti figli possono condividere l'API e le configurazioni con l'agente padre, supportando strategie di rotazione chiave e ottimizzazione del costo con modelli alternativi configurabili.

Come Funzionava Precedentemente e Cosa Cambia

Prima dell'aggiornamento, il processo di delega era sincrono. Il chat restava bloccato mentre i subagenti svolgevano le loro attività. Questo ostacolava flussi di lavoro multitask e impediva di supervisionare il progresso di compiti in corso.

L’implementazione asincrona si avvia dal problema esistente e propone una soluzione completa. L’aggiornamento asyncdelegation, descritto nell'issue #5586, introduce un nuovo toolkit che genera agenti in background, restituisce un identificativo taskid immediatamente e permette a tutti i compiti di proseguire senza interrompere l'interazione principale del chat.

I nuovi strumenti coprono l'intero ciclo vita:

    • delegatetaskasync – genera un background-agent e restituisce task_id
    • check_task – controlla lo stato con output non bloccante
    • steer_task – inietta un messaggio in un task in atto
    • collect_task – blocca fino al completamento e fornisce risultati pieni
    • cancel_task – ferma un compito in esecuzione
    • list_tasks – mostra tutti i task asincroni in corso durante la sessione

I background-agent vengono eseguiti all'interno del processo come thread e condividono la stessa macchina AIAgent, credenziali e strumenti del delegate_task.

Confronto Tra Delega Sincrona e Asincrona

Questo raffronto mostra chiaramente le differenze:

    • Durante una delega sincrona, il padre si blocca aspettando tutti i figli; con la delega asincrona, il task_id viene immediatamente rilasciato e il chat rimane libero.
    • Nella sincrona è impossibile monitorare o dirigere il compito in esecuzione; asincrona offre strumenti per verificare, dirigere e annullare singoli task.
    • La sincrona ha il padre bloccato all’interno del tool call; asincrona permette di eseguire task in thread background.
    • Entrambi mantengono solo una sintesi finale, evitando di ingrandire il contesto inutilmente.

La scelta tra i due approcci dipende chiaramente dal periodo necessario al compito; la sincrona è ideale per un fan-out veloce, mentre l’asincrona si presta per task paralleli su più fronti.

Esempi di Codice

Un esempio di delega sincronica mostra come i task vengano generati in parallelo, ma limitati al numero definito da delegation.maxconcurrentchildren, che di default è 3.

delegate_task(tasks=[{"goal": "Ricerca argomento A", "toolsets": ["web"]}, {"goal": "Risolvere il problema", "toolsets": ["terminal", "file"]}],)

L’approccio asincronico con issue #5586 consente invece di riprendere il controllo immediatamente e gestire task diversi in contemporanea:

t1 = delegatetaskasync(goal="Ricerca argomento A") t2 = delegatetaskasync(goal="Ricerca argomento B")

Usi Con Esempi Pratici

    • Ricerca lunga durante lavoro: Avvia un subagente per una scansione di mercato; continua a sviluppare contenuti nel principale.
    • Evaluazione parallela: Lancia tre subagenti per analizzare tre modelli di ricerca; la valutazione è isolata per evitare contaminazioni.
    • Codifica in background: Delega un refactor multiplo a un subagente; rivedi altri files autonomamente.
    • Monitoraggio: L’overlay TUI mostra in tempo reale un albero di task.

Questi esempi dimostrano come Hermes Agent offra oggi una soluzione flessibile e performante.

Conclusione e Risorse

Hermes Agent è ora in grado di supportare una delega di subagenti asincrona, permettendo compiti in background. Questo cambio apre nuove opportunità di multitasking e interazione con il programma open source.

Per saperne di più e per accedere al codice visitate: