编写第一个工作流
不想手写 JSON 的话,请直接用 插件开发助手(见在对话中创建插件)。本教程展示它生成的文件是什么样的,方便你审阅或修改。
目标:手写一个三步的工作流插件,导入后逐步运行。
开始前:客户端已连接,并配置好了模型。
这个插件把会议记录整理成行动清单。一个 Agent 起草清单,第二步逐行对照会议记录核对,最后一步办结。
draft (ai) → check (ai_review) → done (publish)
1. 编写 plugin.json
新建一个名为 meeting-actions 的文件夹,把下面的内容保存为其中的 plugin.json:
{
"schemaVersion": 1,
"key": "meeting-actions",
"version": "1.0.0",
"name": "会议行动清单",
"description": "把会议记录整理成行动清单,并对照原文核对。",
"author": "你的团队",
"instructions": "只依据用户提供的会议记录,不要编造负责人或日期。",
"entrypoints": { "conversation": true, "task": true, "automation": false },
"inputs": [
{
"key": "notes",
"type": "textarea",
"label": "会议记录",
"description": "粘贴会议记录,或附上文件。",
"required": true
}
],
"capabilities": { "skills": [], "mcpServers": [], "secrets": [], "runtime": ["files"], "network": false },
"workflow": {
"nodes": [
{
"key": "draft",
"type": "ai",
"name": "起草行动清单",
"config": {
"prompt": "阅读会议记录,写出 deliverables/actions.md,每项行动一行:事项、负责人、截止日期、原文出处。记录里没有写明的负责人或日期留空。",
"timeoutSeconds": 1800
},
"capabilities": { "skills": [], "mcpServers": [], "secrets": [], "runtime": ["files"], "network": false },
"outputs": [
{ "key": "actions", "kind": "file", "path": "deliverables/actions.md", "label": "行动清单", "required": true }
]
},
{
"key": "check",
"type": "ai_review",
"name": "对照会议记录核对",
"dependsOn": ["draft"],
"inputs": [
{ "key": "actions", "fromNode": "draft", "outputKey": "actions", "label": "行动清单", "required": true }
],
"config": {
"prompt": "逐行对照会议记录核对行动清单,结论写入 review.json。只要有一个负责人或日期在记录里找不到,就返回 outcome 为 blocked。",
"timeoutSeconds": 900
},
"capabilities": { "skills": [], "mcpServers": [], "secrets": [], "runtime": ["files"], "network": false },
"outputs": [
{ "key": "verdict", "kind": "decision", "path": "review.json", "label": "核对结论", "required": true }
]
},
{
"key": "done",
"type": "publish",
"name": "办结",
"dependsOn": ["check"],
"config": { "message": "行动清单已核对。" }
}
]
}
}
各部分的作用:
| 部分 | 作用 |
|---|---|
key、version | 稳定身份。内容有变化就要改 version |
inputs | 插件启动时显示的表单 |
顶层 capabilities | 插件最多能使用的能力。这里只允许读写文件,不能联网 |
节点的 capabilities | 这一步实际使用的能力,必须是顶层能力的子集 |
节点的 outputs / inputs | draft 声明一个文件,check 只接收这个文件。不同 Agent 之间不共享聊天记录 |
kind: "decision" | 审查步骤写出结构化的 JSON 结论,而不是一段文字 |
publish 节点 | 每个工作流都以它结束,用来办结这次运行 |
2. 打包
把文件夹里的内容压缩成 zip,保证 plugin.json 在压缩包根目录,文件扩展名改为 .soduwork-plugin。
macOS、Linux
cd meeting-actions
zip -r ../meeting-actions-1.0.0.soduwork-plugin .
Windows(PowerShell)
Compress-Archive -Path .\meeting-actions\* -DestinationPath .\meeting-actions-1.0.0.zip
Rename-Item .\meeting-actions-1.0.0.zip meeting-actions-1.0.0.soduwork-plugin
3. 导入
在客户端打开 插件,点 添加插件 → 导入插件,选择这个文件。客户端会执行预检,并把插件安装到本机。有问题时,预检会指出是哪个字段。
4. 逐步运行
新建一个对话,输入 /,选择 调试插件,再选 会议行动清单。输入项里粘贴一段编造的会议记录。
调试卡会在这台电脑上按顺序运行每一步,并显示:
- 每一步 Agent 的工作过程,出现在对话里;
draft完成后的deliverables/actions.md,交给下一步之前会先校验;check完成后review.json里的结论。
如果 check 返回 blocked,运行会停在这一步。修改会议记录或提示词后,只重试这一步即可。
确认运行成功
- 调试卡显示三个步骤都已完成。
review.json里是"outcome": "proceed"。