Passa al contenuto principale

Debugging e Test

Dopo aver scritto un workflow personalizzato, puoi utilizzare i seguenti metodi per convalidarlo e debuggarne il funzionamento.

Attivare la Modalità Debug

Attiva la modalità debug nelle preferenze per sbloccare strumenti di debugging aggiuntivi e visualizzazioni informative:

Zotero → Impostazioni → Zotero Agents → Attiva Modalità Debug

Quando la modalità debug è attivata:

  • I workflow relativi al debug vengono visualizzati nella Dashboard
  • I log di runtime diventano più dettagliati
  • Alcuni strumenti diagnostici diventano disponibili

Utilizzo del Toolkit Debug Probe

Il plugin include un toolkit di debugging integrato workflow-debug-probe, contenente diversi workflow diagnostici:

WorkflowScopo
Workflow Debug ProbeIspeziona lo stato di pre-esecuzione del workflow, apre il pannello diagnostico
Debug Sequence Linear ProbeConvalida l'esecuzione sequenziale e il passaggio di handoff predefinito
Debug Sequence Workspace Reuse ProbeConvalida il riutilizzo del workspace tra i passaggi
Debug Sequence Context Isolation ProbeConvalida il filtraggio esplicito di handoff e i workspace isolati

Questi workflow sono visibili nell'elenco dei workflow della Dashboard (in modalità debug) e possono essere eseguiti direttamente per convalidare i meccanismi di esecuzione delle sequenze.

Visualizzazione dei Log

Log di Runtime

I workflow generano log di runtime durante l'esecuzione, visualizzabili nella Dashboard:

  1. Apri la Dashboard
  2. Trova un'attività in esecuzione o completata
  3. Clicca su "View Logs" per espandere il pannello dei log

Scrivere Log negli Hook

export function applyResult({ parent, bundleReader, runtime }) {
// Scrivi nel log di runtime
runtime.hostApi.logging.appendRuntimeLog({
level: "info",
message: `Elaborazione parent: ${parent}`,
workflowId: runtime.workflowId,
});

// Per informazioni di debug complesse, puoi usare console
console.log("Debug:", { parent, workflowId: runtime.workflowId });
}

Risoluzione dei Problemi Comuni

Il Workflow Non Appare nella Dashboard

  1. Verifica che workflow.json sia posizionato nella directory corretta
  2. Conferma che workflow.json sia formattato correttamente (sintassi JSON)
  3. Verifica che id sia univoco e non entri in conflitto con i workflow ufficiali
  4. Conferma che il percorso dello script applyResult sia corretto
  5. Controlla il log degli errori del plugin (Zotero → Aiuto → Risoluzione dei problemi → Visualizza file di log)

La Validazione della Selezione Salta Ogni Unità

Se la validateSelection dichiarativa o preflight salta ogni unità di input, il workflow non invierà alcuna richiesta al provider. Controlla la politica di selezione, le regole di esclusione e qualsiasi risultato di preflight che restituisca kind: "skip".

Conflitto Tra buildRequest e Richiesta Dichiarativa

L'hook buildRequest e il campo request in workflow.json sono mutualmente esclusivi. Se entrambi esistono, buildRequest ha la priorità. Se il comportamento della richiesta non è come previsto, verifica se entrambi sono stati definiti inavvertitamente contemporaneamente.

Errore nell'Esecuzione dello Script Hook

  • Conferma che lo script Hook sia in formato .mjs (ES Module)
  • Conferma che i nomi delle funzioni esportate siano corretti: preflight, buildRequest, normalizeSettings o applyResult
  • Conferma che la firma della funzione riceva correttamente parametri come { parent, bundleReader, runtime }
  • Verifica che i percorsi di importazione relativi siano corretti

Il Risultato Non Viene Scritto in Zotero

Se applyResult utilizza hostApi.mutations.execute() ma non ha effetto, possibili cause:

  • Le operazioni di scrittura richiedono l'approvazione dell'utente, ma il popup di approvazione è stato ignorato o è scaduto
  • È stata tentata un'operazione di scrittura quando execution.zoteroHostAccess.required non era impostato su true
  • allowWriteApprovalBypass deve essere utilizzato insieme alla configurazione dei permessi del plugin

Suggerimenti per lo Sviluppo

Inizia in Modo Semplice

  1. Per prima cosa utilizza il provider pass-through con un applyResult minimo per verificare che il workflow venga caricato correttamente
  2. Aggiungi prima validateSelection, poi aggiungi preflight o buildRequest solo quando necessario
  3. Infine connettiti al backend effettivo

Usa notifications.toast per un Feedback Rapido

hostApi.notifications.toast({
text: `buildRequest ha ricevuto ${selectionContext.items.parents.length} elementi principali`,
type: "default",
});

Questa è una tecnica di debugging rapida che ti consente di vedere i risultati dell'esecuzione senza controllare i log.

Fai Riferimento ai Workflow Ufficiali

I workflow ufficiali sono il miglior riferimento per l'apprendimento. Dopo aver installato il pacchetto ufficiale, puoi visualizzare il codice sorgente nella directory <Zotero Data>/zotero-agents/content/official/workflows/:

  • literature-workbench-package/literature-analysis/ — Esempio completo di skillrunner.job.v1
  • content/official/workflows/literature-workbench-package/export-notes/ — Semplice esempio pass-through
  • content/official/workflows/mineru/ — Esempio con buildRequest + gestione file
  • content/official/workflows/literature-workbench-package/literature-search-ingest/ — Esempio di modalità interattiva

Passaggi Successivi