News

Agenti AI a Lungo Termine: Guida Completa al Framework Anthropic

Punti salienti dell'articolo:
  • Gli agenti AI necessitano di memoria persistente per compiti lunghi
  • L'approccio a due fasi usa un agente inizializzatore e uno di codifica
  • Il file feature_list.json previene la chiusura prematura del progetto
  • Git e log di progresso mantengono lo stato pulito tra sessioni
  • Il testing end-to-end con Puppeteer è cruciale per la qualità
  • L'agente deve lavorare su una singola funzionalità alla volta
  • L'inizializzazione corretta riduce il carico cognitivo delle sessioni future
Agenti AI a Lungo Termine: Guida Completa al Framework Anthropic

Introduzione

Con l'aumento delle capacità dei modelli di intelligenza artificiale, gli sviluppatori richiedono sempre più spesso agli agenti di affrontare compiti complessi che si estendono per ore o addirittura giorni. Tuttavia, garantire che gli agenti AI a lungo termine mantengano un progresso costante attraverso molteplici finestre di contesto rimane una sfida aperta.

Il problema centrale risiede nel fatto che gli agenti lavorano in sessioni discrete. Ogni nuova sessione inizia senza memoria di ciò che è accaduto in precedenza, simile a un progetto software gestito da ingegneri che lavorano a turni senza comunicare tra loro. Poiché le finestre di contesto sono limitate e i progetti complessi non possono essere completati in una singola esecuzione, è necessario un sistema per colmare il divario tra le sessioni di codifica.

In questo articolo, esploreremo la soluzione sviluppata per consentire al Claude Agent SDK di operare efficacemente su lunghi orizzonti temporali, utilizzando un approccio a due fasi ispirato alle pratiche degli ingegneri umani.

Il Problema: L'Amnesia delle Sessioni

Anche con tecniche di gestione del contesto come la "compaction" (compattazione), i modelli di frontiera possono fallire nel costruire applicazioni di qualità produttiva se lasciati a se stessi con prompt di alto livello. I fallimenti si manifestano principalmente in due modi:

  • Tentativo di "One-Shot": L'agente cerca di fare troppo in una volta sola, esaurendo il contesto a metà dell'implementazione e lasciando il lavoro incompleto e non documentato per la sessione successiva.
  • Dichiarazione Prematura di Vittoria: L'agente, vedendo che è stato fatto del progresso, conclude erroneamente che il lavoro è finito, lasciando funzionalità non testate o incomplete.

Un agente AI a lungo termine è un sistema progettato per eseguire compiti complessi su più sessioni, utilizzando una memoria esterna strutturata per mantenere la coerenza e il contesto del progetto.

La Soluzione: Un Framework a Due Fasi

Per affrontare queste sfide, la soluzione si basa su una divisione dei ruoli tra due tipi di agenti:

1. Agente Inizializzatore (Initializer Agent)

La primissima sessione utilizza un prompt specializzato. Il compito di questo agente non è scrivere codice applicativo, ma preparare l'ambiente. Questo include la creazione di:

  • Uno script init.sh per avviare l'ambiente di sviluppo.
  • Un file claude-progress.txt per registrare i log delle attività.
  • Un repository git iniziale per tracciare le modifiche ai file.
  • Un file feature_list.json che dettaglia i requisiti del progetto.

2. Agente di Codifica (Coding Agent)

Ogni sessione successiva è gestita da un agente incaricato di fare progressi incrementali. Questo agente lavora su una singola funzionalità alla volta e deve lasciare l'ambiente in uno "stato pulito" alla fine della sessione, pronto per il turno successivo.

Gestione dell'Ambiente e Feature List

Per evitare che l'agente consideri il progetto finito prematuramente, l'agente inizializzatore crea un file JSON dettagliato con tutte le funzionalità richieste. Ad esempio, per un clone di claude.ai, questo file potrebbe contenere oltre 200 voci.

"È inaccettabile rimuovere o modificare i test perché ciò potrebbe portare a funzionalità mancanti o buggate."

Istruzione dal prompt di sistema

Ecco un esempio della struttura utilizzata per tracciare le funzionalità:

{
  "category": "functional",
  "description": "Il pulsante Nuova Chat crea una nuova conversazione",
  "steps": [
    "Naviga all'interfaccia principale",
    "Clicca sul pulsante 'Nuova Chat'",
    "Verifica che venga creata una nuova conversazione",
    "Controlla che l'area di chat mostri lo stato di benvenuto",
    "Verifica che la conversazione appaia nella barra laterale"
  ],
  "passes": false
}

L'uso del formato JSON si è rivelato superiore al Markdown, in quanto i modelli sono meno propensi a modificare o sovrascrivere accidentalmente la struttura dei dati.

Progresso Incrementale e Testing

Una volta stabilita l'impalcatura iniziale, l'agente di codifica viene istruito a lavorare su una sola funzionalità alla volta. Al termine di ogni modifica, l'agente deve:

  1. Eseguire i test per verificare la funzionalità.
  2. Aggiornare il file di progresso.
  3. Effettuare un commit git con un messaggio descrittivo.

Questo approccio permette di usare git per revertire modifiche errate e recuperare uno stato funzionante del codice, eliminando la necessità per l'agente successivo di "indovinare" cosa è successo.

Automazione Browser con Puppeteer

Un punto critico è la tendenza degli agenti a segnare una funzionalità come completa senza un vero testing end-to-end. Per mitigare questo, agli agenti vengono forniti strumenti di automazione browser (come Puppeteer MCP) per testare l'applicazione come farebbe un utente umano. Questo ha migliorato drasticamente la capacità di identificare e correggere bug non evidenti dal solo codice.

Workflow Tipico di una Sessione

Con questo sistema in atto, una sessione tipica di un agente inizia con una serie di passaggi standard per orientarsi:

  • Eseguire pwd per confermare la directory di lavoro.
  • Leggere i log di git e i file di progresso per capire lo stato attuale.
  • Leggere il file feature_list.json e scegliere la funzionalità prioritaria non ancora completata.
  • Eseguire init.sh per avviare il server di sviluppo e verificare le funzionalità di base.

Conclusione

La ricerca dimostra che strutturare il lavoro degli agenti AI a lungo termine attraverso un'inizializzazione rigorosa e un progresso incrementale è fondamentale per il successo. Sebbene rimangano sfide aperte, come l'efficacia di architetture multi-agente specializzate (es. agenti dedicati al QA o alla pulizia del codice), questo approccio fornisce una base solida per lo sviluppo software autonomo.

Per approfondire i dettagli tecnici e vedere esempi di codice, consulta l'articolo originale: Effective harnesses for long-running agents.

FAQ

Domande frequenti sulla gestione degli agenti AI a lungo termine.

Cos'è un agente AI a lungo termine?

Un agente AI a lungo termine è un sistema capace di lavorare su compiti complessi che richiedono più sessioni, mantenendo il contesto e la memoria del lavoro svolto attraverso file di log e version control.

Perché è necessario un "harness" per gli agenti AI?

Senza un harness (struttura di supporto), gli agenti tendono a dimenticare il contesto tra le sessioni o a tentare di completare tutto il lavoro in una volta sola, portando a errori e codice incompleto.

Qual è il ruolo del file feature_list.json?

Il file feature_list.json serve a definire chiaramente tutti i requisiti del progetto e a tracciare lo stato di ogni funzionalità (pass/fail), impedendo all'agente di dichiarare il lavoro finito prematuramente.

Come viene gestito il testing negli agenti autonomi?

Gli agenti utilizzano strumenti di automazione browser come Puppeteer per eseguire test end-to-end, simulando le azioni di un utente reale per verificare che le funzionalità siano effettivamente operative.

A cosa serve l'agente inizializzatore?

L'agente inizializzatore prepara l'ambiente di lavoro creando script di avvio, repository git e file di log, gettando le basi affinché gli agenti successivi possano lavorare in modo incrementale.

Introduzione Con l'aumento delle capacità dei modelli di intelligenza artificiale, gli sviluppatori richiedono sempre più spesso agli agenti di affrontare Evol Magazine