跳到主要内容

自定义 Workflow 架构总览

Zotero Agents 的 workflow 系统采用插拔式架构——每个 workflow 是一个独立的自包含目录,只需一个 workflow.json 清单文件和对应的 Hook 脚本,插件的 Workflow Manager 会自动发现并加载它。

目录结构

Workflow 可以存放在两个位置:

位置类型说明
官方 Workflow 包官方通过 Content Feed 独立安装。位于 <Zotero Data>/zotero-agents/content/official/workflows/
用户 workflow 目录自定义在偏好设置中配置,Workflow Manager 会自动扫描

插件的 Workflow Manager 会递归扫描官方包目录和用户 workflow 目录,发现 workflow.json 文件并注册为可用 workflow。

一个最小 Workflow 示例

创建一个自定义 workflow,只需要 2 个文件

my-workflow/
├── workflow.json
└── hooks/
└── applyResult.mjs

workflow.json

{
"id": "hello-world",
"label": "Hello World",
"provider": "pass-through",
"inputs": {
"unit": "parent"
},
"hooks": {
"applyResult": "hooks/applyResult.mjs"
}
}

hooks/applyResult.mjs

export function applyResult({ parent, runtime }) {
const title = runtime.helpers.resolveItemRef(parent).getField("title");
runtime.hostApi.notifications.toast({
text: `Hello, ${title}!`,
type: "success",
});
return { greeted: true };
}

my-workflow/ 放到用户 workflow 目录后,重新打开 Dashboard 即可看到该 workflow。

Workflow 的架构层次

一个 workflow 的生命周期涉及以下层次:

用户操作(右键 / Dashboard)


Workflow Manager — 发现、加载、校验

├── Inputs — 用户选择了什么条目?
├── Parameters — 用户设置了什么参数?
├── Hooks — 预处理、构建请求、处理结果
└── Execution — 由 Provider 派发到后端


Provider(SkillRunner / ACP / Generic HTTP / Pass-through)


Backend — 远程或本地的执行引擎

Workflow 的模式分类

根据执行方式和后端类型,workflow 可以分为以下几类:

模式典型用途后端类型
pass-through纯本地操作(导出、文件处理),无需远程后端
skillrunner.job.v1单步骤向 SkillRunner 提交 skill 执行skillrunner / acp
skillrunner.sequence.v1多步骤串联技能执行,步间接力acp
generic-http.request.v1单个 HTTP API 调用generic-http
generic-http.steps.v1多步骤 HTTP API 调用generic-http

workflow.json 的核心概念

{
"id": "唯一标识符",
"label": "显示名称",
"provider": "后端类型",
"inputs": { "unit": "输入单元类型" },
"parameters": { /* 可配置参数 */ },
"execution": { /* 执行控制 */ },
"request": { "kind": "请求种类" },
"hooks": { "applyResult": "处理结果的脚本路径" }
}

下页将详细说明每个字段的含义和用法。

下一步