Introduzione al progetto durable‑harness

Vercel, leader nella fornitura di piattaforme serverless per lo sviluppo front‑end, ha annunciato l’open‑source di durable‑harness, una libreria progettata per costruire agenti di codifica capaci di resistere a errori imprevisti e di riprendere l’esecuzione senza perdita di contesto.

Il nome “durable‑harness” richiama la capacità di “imbrigliare” (harness) un processo in modo da renderlo duraturo (durable) anche in presenza di crash, timeout o interruzioni di rete. Il framework si integra nativamente con Vercel Edge Functions e con le API di Vercel, ma può essere utilizzato anche in ambienti Node.js tradizionali.

Obiettivi principali

    • Garantire la continuità operativa degli agenti di codifica.
    • Automatizzare il salvataggio e il ripristino dello stato di esecuzione.
    • Fornire meccanismi di fallback configurabili.
    • Ridurre il carico di lavoro per i team di sviluppo nella gestione degli errori.

Come funziona durable‑harness

Il core del framework si basa su tre componenti chiave:

    • State Store: un layer di persistenza (ad esempio Redis, DynamoDB o Vercel KV) che registra lo stato dell’agente dopo ogni operazione critica.
    • Retry Engine: un modulo che rileva gli errori, analizza la loro natura e avvia automaticamente una procedura di retry o di fallback.
    • Orchestrator: una logica di orchestrazione che consente di definire sequenze di task, dipendenze e condizioni di terminazione.

Ogni volta che un agente completa un passo, il suo stato viene serializzato e salvato nello State Store. Se il processo si interrompe, il Orchestrator legge l’ultimo snapshot e riprende dal punto di interruzione, evitando di rifare le operazioni già concluse.

Esempio di codice

Di seguito è riportato un estratto di codice che mostra come definire un agente con durable‑harness:

import { Harness, RedisStore } from 'durable-harness';

const store = new RedisStore({ url: process.env.REDIS_URL });

const agent = new Harness({

store,

retryPolicy: { maxAttempts: 5, backoff: 'exponential' },

});

agent.step('fetchData', async (ctx) => {

const data = await fetch('https://api.example.com/data');

ctx.save(data);

});

agent.step('processData', async (ctx) => {

const { data } = ctx.state;

// elaborazione complessa

const result = heavyComputation(data);

ctx.save(result);

});

agent.run();

In caso di errore nella fase fetchData, il Retry Engine riprova fino a cinque volte con un backoff esponenziale prima di segnalare il fallimento.

Dettagli tecnici e configurazioni

Durable‑harness è stato sviluppato con TypeScript e offre tipizzazioni complete per garantire la massima affidabilità a tempo di compilazione. Le configurazioni più comuni includono:

    • Timeouts: impostazioni per limitare la durata massima di ogni step.
    • Fallback Handlers: funzioni di riserva da eseguire quando tutti i retry falliscono.
    • Metrics: integrazione con Vercel Analytics per monitorare il tasso di successo e i tempi di latenza.

Il progetto è disponibile su GitHub sotto licenza MIT, con una documentazione completa, esempi di deployment e un set di test unitari che coprono il 95% del codice.

Integrazione con Vercel Edge Functions

Grazie alla natura “stateless” delle Edge Functions, durable‑harness utilizza Vercel KV come store predefinito. Questo consente di mantenere lo stato vicino alla superficie di rete, riducendo la latenza di accesso e migliorando le performance complessive.

Un tipico deployment su Vercel può includere:

    • Un file vercel.json con la configurazione delle funzioni Edge.
    • Variabili d’ambiente per le credenziali del KV.
    • Uno script di build che compila il TypeScript in JavaScript ottimizzato.

Impatto sullo sviluppo di agenti di intelligenza artificiale

Il rilascio di durable‑harness arriva in un momento cruciale, in cui gli sviluppatori stanno costruendo agenti basati su LLM (Large Language Model) per automatizzare compiti complessi. Questi agenti, spesso eseguiti in ambienti serverless, sono soggetti a interruzioni improvvise dovute a limiti di tempo o a errori di rete.

Con durable‑harness, un agente LLM può:

    • Memorizzare il contesto di una conversazione dopo ogni risposta.
    • Riprendere la generazione di testo senza dover ricominciare da zero.
    • Gestire in modo trasparente i limiti di timeout imposti da Vercel.

Questo porta a un miglioramento della coerenza delle risposte e a una riduzione del consumo di token, poiché non è necessario ricostruire l’intero storico ad ogni tentativo.

Confronto con soluzioni concorrenti

Altre piattaforme, come AWS Step Functions o Azure Durable Functions, offrono funzionalità simili di orchestrazione e persistenza dello stato. Tuttavia, durable‑harness si distingue per:

    • Integrazione nativa con l’ecosistema Vercel.
    • Leggerezza del runtime, ideale per funzioni Edge a bassa latenza.
    • API minimalista e basata su promesse, più familiare a sviluppatori JavaScript/TypeScript.

Questa differenziazione rende il framework una scelta naturale per chi già utilizza Vercel per il deployment di frontend e API.

Policy sui cookie del sito Vercel

Il sito di Vercel utilizza un sistema di gestione dei cookie conforme alle normative internazionali. Gli utenti possono accettare o rifiutare tutti i cookie tramite un banner interattivo. Di seguito è riportata la lista completa dei cookie attivi, suddivisi per tipologia.

Cookie necessari (Always Active)

    • _cfbm – durata 1 ora. Supporta Cloudflare Bot Management.
    • pxvid – durata 1 anno. Utilizzato da PerimeterX per rilevare frodi e attività bot.
    • px3 – durata 6 minuti. Protezione da attacchi BOT impostata da Bloomberg.
    • CookieLawInfoConsent – durata 1 anno. Registra lo stato del bottone di consenso di CookieYes.
    • cookielawinfo-checkbox-necessary – durata 11 mesi. Memorizza il consenso per i cookie “Necessary”.
    • cookielawinfo-checkbox-others – durata 1 anno. Memorizza il consenso per i cookie “Others”.
    • cookielawinfo-checkbox-non-necessary – durata 11 mesi. Memorizza il consenso per i cookie “Non Necessary”.
    • cookielawinfo-checkbox-analytics – durata 1 anno. Registra il consenso per i cookie “Analytics”.
    • cookielawinfo-checkbox-performance – durata 1 anno. Registra il consenso per i cookie “Performance”.
    • cookielawinfo-checkbox-uncategorized – durata 1 anno. Registra il consenso per i cookie “Uncategorized”.
    • cookielawinfo-checkbox-functional – durata 1 anno. Registra il consenso per i cookie “Functional”.
    • cookielawinfo-checkbox-advertisement – durata 1 anno. Registra il consenso per i cookie “Advertisement”.
    • wpEmojiSettingsSupports – durata sessione. Determina la capacità del browser di visualizzare emoji.
    • VISITORPRIVACYMETADATA – durata 6 mesi. Cookie di YouTube per lo stato del consenso.
    • viewedcookiepolicy – durata 11 mesi. Indica se l’utente ha accettato la policy dei cookie.
    • PHPSESSID – sessione. Identifica la sessione utente PHP.
    • _cfduid – durata 4 settimane. Identifica client dietro IP condiviso (Cloudflare).

Cookie funzionali

I cookie funzionali abilitano funzionalità aggiuntive come la condivisione sui social o la personalizzazione dell’esperienza video.

    • yt-remote-connected-devices – durata “never”. Salva le preferenze video di YouTube.
    • ytidb::LASTRESULTENTRYKEY – durata “never”. Memorizza l’ultimo risultato di ricerca cliccato su YouTube.
    • yt-remote-device-id – durata “never”. Preferenze video di YouTube.
    • yt-remote-session-name – durata sessione. Preferenze del lettore video YouTube.
    • yt-remote-fast-check-period – durata sessione. Preferenze di controllo rapido del lettore.
    • yt-remote-session-app – durata sessione. Interfaccia del lettore YouTube incorporato.
    • yt-remote-cast-available – durata sessione. Stato della funzionalità di casting.
    • yt-remote-cast-installed – durata sessione. Stato dell’app di casting.
    • naid – durata 1 anno. Cookie di AddThis per la condivisione sui social.
    • vc – durata 1 anno. Altro cookie di AddThis per la condivisione.
    • atuvc – durata 1 anno. Aggiorna il contatore di condivisioni.
    • atuvs – durata 30 minuti. Aggiorna il contatore di condivisioni in tempo reale.
    • ouid – durata 1 anno. Abilita la condivisione del contenuto su più piattaforme.

Cookie analitici

I cookie analitici forniscono dati statistici sul traffico del sito, utili per ottimizzare le performance.

    • ga* – durata 1 anno, 1 mese, 4 giorni. Google Analytics registra le visualizzazioni di pagina.
    • ga – durata 2 anni. Calcola dati di visita, sessione e campagne in modo anonimo.
    • sbjs_migrations – durata sessione. Sourcebuster identifica la fonte di visita e registra azioni dell’utente.

Conclusioni e prospettive future

Con durable‑harness, Vercel fornisce agli sviluppatori un tool potente per costruire agenti di codifica più robusti, riducendo al contempo la complessità nella gestione degli errori e del persistere dello stato. La combinazione di un framework leggero, una stretta integrazione con l’infrastruttura serverless di Vercel e una gestione trasparente dei cookie rende la proposta particolarmente interessante per chi sviluppa applicazioni moderne basate su LLM o su workflow complessi.

Nel medio‑termine, Vercel prevede di ampliare il progetto con supporto per ulteriori store (MongoDB, PostgreSQL) e per pattern di orchestrazione più avanzati, come le macchine a stati finiti. Gli sviluppatori interessati possono già contribuire al repository GitHub, aprire issue e proporre miglioramenti.