跳到主要内容

编写第一个工作流

不想手写 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 / inputsdraft 声明一个文件,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"。

下一步​

harness harnesses runtime runtimes 底座
编辑此页