Depuración y Pruebas
Después de escribir un workflow personalizado, puede usar los siguientes métodos para validarlo y depurarlo.
Activar el Modo de Depuración
Active el modo de depuración en las preferencias para desbloquear herramientas de depuración adicionales y pantallas de información:
Zotero → Configuración → Zotero Agents → Activar Modo de Depuración
Cuando el modo de depuración está activado:
- Los workflows relacionados con la depuración se muestran en el Panel
- Los registros de tiempo de ejecución se vuelven más detallados
- Algunas herramientas de diagnóstico están disponibles
Uso del Kit de Herramientas Debug Probe
El plugin incluye un kit de herramientas de depuración integrado workflow-debug-probe, que contiene varios workflows de diagnóstico:
| Workflow | Propósito |
|---|---|
| Workflow Debug Probe | Inspeccionar el estado previo a la ejecución del workflow, abrir el panel de diagnóstico |
| Debug Sequence Linear Probe | Validar la ejecución secuencial y el paso de handoff predeterminado |
| Debug Sequence Workspace Reuse Probe | Validar la reutilización del workspace entre pasos |
| Debug Sequence Context Isolation Probe | Validar el filtrado explícito de handoff y workspaces aislados |
Estos workflows son visibles en la lista de workflows del Panel (en modo de depuración) y se pueden ejecutar directamente para validar los mecanismos de ejecución de secuencias.
Visualización de Registros
Registros de Tiempo de Ejecución
Los workflows generan registros de tiempo de ejecución durante la ejecución, visibles en el Panel:
- Abra el Panel
- Encuentre una tarea en ejecución o completada
- Haga clic en "View Logs" para expandir el panel de registros
Escribir Registros en Hooks
export function applyResult({ parent, bundleReader, runtime }) {
// Escribir en el registro de tiempo de ejecución
runtime.hostApi.logging.appendRuntimeLog({
level: "info",
message: `Procesando parent: ${parent}`,
workflowId: runtime.workflowId,
});
// Para información de depuración compleja, puede usar console
console.log("Debug:", { parent, workflowId: runtime.workflowId });
}
Solución de Problemas Comunes
El Workflow No Aparece en el Panel
- Verifique que
workflow.jsonesté ubicado en el directorio correcto - Confirme que
workflow.jsontenga el formato correcto (sintaxis JSON) - Verifique que
idsea único y no entre en conflicto con workflows oficiales - Confirme que la ruta del script
applyResultsea correcta - Revise el registro de errores del plugin (Zotero → Ayuda → Solución de problemas → Ver archivo de registro)
La Validación de Selección Omite Cada Unidad
Si la validateSelection declarativa o preflight omite cada unidad de entrada, el workflow no enviará ninguna solicitud al proveedor. Verifique la política de selección, las reglas de exclusión y cualquier resultado de preflight que devuelva kind: "skip".
Conflicto Entre buildRequest y la Solicitud Declarativa
El hook buildRequest y el campo request en workflow.json son mutuamente excluyentes. Si ambos existen, buildRequest tiene prioridad. Si el comportamiento de la solicitud no es el esperado, verifique si ambos fueron definidos inadvertidamente al mismo tiempo.
Fallo en la Ejecución del Script Hook
- Confirme que el script Hook esté en formato
.mjs(ES Module) - Confirme que se exporten los nombres de función correctos:
preflight,buildRequest,normalizeSettingsoapplyResult - Confirme que la firma de la función reciba correctamente parámetros como
{ parent, bundleReader, runtime } - Verifique que las rutas de importación relativas sean correctas
El Resultado No Se Escribe en Zotero
Si applyResult usa hostApi.mutations.execute() pero no tiene efecto, posibles causas:
- Las operaciones de escritura requieren aprobación del usuario, pero la ventana de aprobación fue ignorada o expiró
- Se intentó una operación de escritura cuando
execution.zoteroHostAccess.requiredno estaba establecido entrue allowWriteApprovalBypassdebe usarse junto con la configuración de permisos del plugin
Sugerencias de Desarrollo
Comience de Forma Simple
- Primero use el proveedor
pass-throughcon unapplyResultmínimo para verificar que el workflow se cargue correctamente - Agregue primero
validateSelection, luego agreguepreflightobuildRequestsolo cuando sea necesario - Finalmente conéctese al backend real
Use notifications.toast para Retroalimentación Rápida
hostApi.notifications.toast({
text: `buildRequest recibió ${selectionContext.items.parents.length} elementos principales`,
type: "default",
});
Esta es una técnica de depuración rápida que le permite ver los resultados de ejecución sin revisar los registros.
Consulte los Workflows Oficiales
Los workflows oficiales son la mejor referencia de aprendizaje. Después de instalar el paquete oficial, puede ver el código fuente en el directorio <Zotero Data>/zotero-agents/content/official/workflows/:
literature-workbench-package/literature-analysis/— Ejemplo completo de skillrunner.job.v1content/official/workflows/literature-workbench-package/export-notes/— Ejemplo simple de pass-throughcontent/official/workflows/mineru/— Ejemplo con buildRequest + manejo de archivoscontent/official/workflows/literature-workbench-package/literature-search-ingest/— Ejemplo de modo interactivo
Próximos Pasos
- Referencia Completa del Manifiesto de Workflow — Todos los campos en workflow.json
- Referencia de la API del Host — Todas las API disponibles en los hooks