Отладка и тестирование
После написания пользовательского рабочего процесса вы можете использовать следующие методы для его проверки и отладки.
Включение режима отладки
Включите режим отладки в настройках, чтобы разблокировать дополнительные инструменты отладки и информационные отображения:
Zotero → Настройки → Zotero Agents → Включить режим отладки
Когда режим отладки включен:
- Рабочие процессы, связанные с отладкой, отображаются на Панели управления
- Журналы выполнения становятся более подробными
- Некоторые диагностические инструменты становятся доступными
Использование набора инструментов Debug Probe
Плагин включает встроенный набор инструментов отладки workflow-debug-probe, содержащий несколько диагностических рабочих процессов:
| Рабочий процесс | Назначение |
|---|---|
| Workflow Debug Probe | Проверка состояния перед выполнением рабочего процесса, открытие диагностической панели |
| Debug Sequence Linear Probe | Проверка последовательного выполнения и передачи handoff по умолчанию |
| Debug Sequence Workspace Reuse Probe | Проверка повторного использования рабочего пространства между шагами |
| Debug Sequence Context Isolation Probe | Проверка явной фильтрации handoff и изолированных рабочих пространств |
Эти рабочие процессы видны в списке рабочих процессов на Панели управления (в режиме отладки) и могут быть запущены напрямую для проверки механизмов выполнения последовательностей.
Просмотр журналов
Журналы выполнения
Рабочие процессы генерируют журналы выполнения во время работы, доступные для просмотра на Панели управления:
- Откройте Панель управления
- Найдите запущенную или завершенную задачу
- Нажмите "View Logs", чтобы развернуть панель журналов
Запись журналов в хуках
export function applyResult({ parent, bundleReader, runtime }) {
// Запись в журнал выполнения
runtime.hostApi.logging.appendRuntimeLog({
level: "info",
message: `Обработка parent: ${parent}`,
workflowId: runtime.workflowId,
});
// Для сложной отладочной информации можно использовать console
console.log("Debug:", { parent, workflowId: runtime.workflowId });
}
Устранение распространенных проблем
Рабочий процесс не отображается на Панели управления
- Проверьте, что
workflow.jsonнаходится в правильном каталоге - Убедитесь, что
workflow.jsonправильно отформатирован (синтаксис JSON) - Проверьте, что
idуникален и не конфликтует с официальными рабочими процессами - Убедитесь, что путь к скрипту
applyResultкорректен - Проверьте журнал ошибок плагина (Zotero → Справка → Устранение неполадок → Просмотреть файл журнала)
Проверка выбора пропускает каждый элемент
Если декларативная validateSelection или preflight пропускает каждый входной элемент, рабочий процесс не отправит запрос провайдеру. Проверьте политику выбора, правила исключения и любой результат preflight, возвращающий kind: "skip".
Конфликт между buildRequest и декларативным запросом
Хук buildRequest и поле request в workflow.json являются взаимоисключающими. Если оба существуют, приоритет имеет buildRequest. Если поведение запроса не соответствует ожидаемому, проверьте, не были ли оба случайно определены одновременно.
Сбой выполнения скрипта хука
- Убедитесь, что скрипт хука имеет формат
.mjs(ES Module) - Убедитесь, что экспортируются правильные имена функций:
preflight,buildRequest,normalizeSettingsилиapplyResult - Убедитесь, что сигнатура функции корректно принимает параметры, такие как
{ parent, bundleReader, runtime } - Проверьте, что относительные пути импорта корректны
Результат не записывается в Zotero
Если applyResult использует hostApi.mutations.execute(), но это не вступает в силу, возможные причины:
- Операции записи требуют подтверждения пользователя, но всплывающее окно подтверждения было проигнорировано или истекло
- Была предпринята попытка операции записи, когда
execution.zoteroHostAccess.requiredне было установлено вtrue allowWriteApprovalBypassнеобходимо использовать совместно с настройкой разрешений плагина
Рекомендации по разработке
Начните с простого
- Сначала используйте провайдер
pass-throughс минимальнымapplyResult, чтобы убедиться, что рабочий процесс успешно загружается - Сначала добавьте
validateSelection, затем добавляйтеpreflightилиbuildRequestтолько при необходимости - Наконец, подключитесь к реальному бэкенду
Используйте notifications.toast для быстрой обратной связи
hostApi.notifications.toast({
text: `buildRequest получил ${selectionContext.items.parents.length} родительских элементов`,
type: "default",
});
Это быстрый метод отладки, позволяющий видеть результаты выполнения без проверки журналов.
Обращайтесь к официальным рабочим процессам
Официальные рабочие процессы — лучший справочный материал для обучения. После установки официального пакета вы можете просмотреть исходный код в каталоге <Zotero Data>/zotero-agents/content/official/workflows/:
literature-workbench-package/literature-analysis/— Полный пример skillrunner.job.v1content/official/workflows/literature-workbench-package/export-notes/— Простой пример pass-throughcontent/official/workflows/mineru/— Пример с buildRequest + обработка файловcontent/official/workflows/literature-workbench-package/literature-search-ingest/— Пример интерактивного режима
Следующие шаги
- Полный справочник манифеста рабочего процесса — Все поля в workflow.json
- Справочник Host API — Все API, доступные в хуках