教程

如何用 Conduit 工作流自动完成任务

有些任务每天都值得做,却不值得每天手动做:读更新日志、检查某个页面有没有变化、总结文件夹里新到的文件。 Conduit 是一款免费、开源的桌面 AI 应用,它的工作流可以替你完成这些日常事务:按计划运行,或在出现新内容时运行,只有真正有东西可看时才打扰你。

简介

工作流是一份按顺序执行的步骤列表。有些步骤负责获取或读取内容,有些让模型处理这些内容,有些负责保存结果或通知你。每个步骤都可以使用之前步骤产生的内容,你可以手动运行整份列表,也可以按计划运行,或在订阅源或文件夹出现新内容时每次运行一次。

在本教程中,你将构建一个工作流,监视你所依赖的某个工具的发布动态。示例使用 Python 包管理器 uv,因为它发布频繁,发布说明也很详细。每出现一个新版本,工作流就会读取发布说明,请低成本模型写一份简短总结,把总结保存下来,并且只在该版本含有破坏性变更时给你发一条桌面通知。你将安全地测试它,查看每个步骤做了什么,修正某个步骤而无需把整个流程重跑一遍,最后批准它自行运行。

你可以用 GitHub 上的任何项目来跟着做,只需要更换订阅源地址。

要点

前提条件

要完成本教程,你需要:

第 1 步 — 从现成的工作流开始

Conduit 自带一些现成的工作流,你可以直接使用,也可以修改。在这一步,你将新建一个已经会监视订阅源的工作流,把它作为发布监视器的基础。

在侧边栏中选择工作流,或按 Ctrl+6(macOS 上为 ⌘6)。如果你还没有任何工作流,页面会在还没有工作流下列出这些现成的工作流;否则,选择新建工作流即可看到它们。

列表包括:

找到总结新帖子,选择使用此模板。Conduit 会创建这个工作流并打开它的页面。

新工作流已经有四个步骤:获取帖子、让模型总结、保存总结、显示通知。现在还不会运行任何东西;监视订阅源的工作流,要等你打开自动运行才会开始监视,你将在第 9 步完成这件事。接下来,你要让它指向 uv 的发布动态。

第 2 步 — 让工作流指向发布订阅源

什么情况下启动工作流,由它的启动时机部分设定。在这一步,你要把这个工作流监视的订阅源,从 Rust 博客改成 uv 的发布动态。

在工作流页面选择编辑。页眉显示工作流的名称,以及以 JSON 编辑、取消和保存。左侧是步骤,右侧的侧边面板依次是开始(包含启动时机的各个选项)、运行时的输入、助手和工作流设置,名称、描述、模型提供方和文件夹都在这里设置。

注意:工作流也可以显示为画布。在步骤上方,画布 / 列表开关用来选择视图,Conduit 会记住你的选择。本教程使用列表视图,请选择列表,才能看到教程中描述的步骤卡片。

做这些修改:

  1. 在工作流设置中,把名称改为 uv releases。
  2. 在启动时机下,保持选中订阅源出现新帖子时,并把订阅源地址设为 https://github.com/astral-sh/uv/releases.atom。
  3. 把检查间隔设为 360 分钟。发布监视器不需要每半小时看一次;一天检查四次就足够了。

启动时机下的其他选项是仅在我运行时,或按计划,适用于手动运行或定时运行的工作流;工作流的文件夹中出现新文件时,使用它之前需要先在工作流设置中选好一个文件夹;以及连接器出现新内容时。

注意:工作流第一次查看订阅源时,只会记下已有的版本,不会去总结一堆旧版本,只处理你开启之后发布的版本,从最早的开始。如果一次来了好几个,每次检查最多启动五次运行,其余的留到下一次检查。

工作流现在监视的是正确的订阅源。接下来,你将看看它的第一个步骤如何使用启动这次运行的那个帖子。

第 3 步 — 获取发布说明

订阅源工作流的每次运行都针对一个帖子,帖子的详细信息会以值的形式提供给每个步骤。在这一步,你将看到第一个步骤如何使用其中一个值来获取发布说明。

滚动到步骤。每个步骤是一张卡片,标题由序号和类型组成,例如 1. 获取页面,旁边有一个简短的 id,这里是 fetch。后面的步骤就是通过这个 id 来引用这个步骤。

获取步骤的第 1 页字段里有一个代表帖子链接的标签。这类值通过每个字段旁边的插入值…菜单插入,菜单会列出工作流中此处可用的内容:

保持获取步骤不变。对于 uv,每个帖子的链接就是该版本在 GitHub 上的页面,所以这个步骤获取的就是发布说明。获取步骤最多读取十个页面,每个页面保留最多 50,000 个字符,并且只获取公开的 https 地址。

留意卡片上的失败时重试设置:获取步骤默认会重试两次,可以扛过短暂的网络问题。每个步骤还有即使此步骤失败也继续。这里保持关闭;没有发布说明,就没有什么可总结的。

工作流现在可以读取每个新版本了。接下来,你要告诉模型该怎么处理它。

第 4 步 — 编写总结步骤并选择它的模型

询问模型步骤会把一条指令和一段文本发给模型,并保留它的回答。在这一步,你将写一条适合发布说明的指令,并只为这个步骤选一个便宜的模型。

找到第 2 个步骤询问模型,它的 id 是 summary。把它的指令替换为下面的内容:

Summarize these release notes for a developer who uses this tool every day.
List new features and fixes in at most five bullet points.
Then add a section titled "Breaking changes" that lists anything that could break
an existing project, such as removed options, changed defaults or new minimum versions.
If there are none, write exactly: No breaking changes.

要处理的文本字段里已经是帖子标题加上获取到的文本,所以模型知道自己读的是哪个版本。保持不变即可。

指令的最后一句很重要。在第 6 步,你会用这句原话来决定是否通知你,所以要求模型每次都写成同样的句子。

现在选择模型。在此步骤的模型下,默认是使用工作流的模型,而编辑器顶部工作流自己的模型设置默认是跟随聊天模型,也就是你上次在聊天中选的那个模型。对于例行总结,请改选一个快速、低成本的模型。本教程通过 OpenRouter 使用 GLM 5.3 Flash。

注意:按步骤选择模型,让一个工作流可以混用多个模型:批量总结用便宜的,最后的成稿用更强的,处理私人文件的步骤用本地模型。如果某个步骤指定的提供商已不再设置,该步骤会改用聊天模型,并在运行记录中注明这一变化,而不会失败。

工作流现在会生成一份最后一部分格式固定的总结。接下来,你要确保每份总结都被保存下来。

第 5 步 — 保存每一份总结

保存文档步骤会把文本存成一份以后可以打开的文档。在这一步,你要把它设置为每个版本保存一份文档。

找到第 3 个步骤保存文档,设置:

每次运行的另一个选项是替换同一个文档,它只保留一份内容为最新结果的文档,适合页面监视或每日简报。对发布历史来说,你需要每个版本一份文档。

保存步骤特意放在你接下来要添加的检查之前:每个版本都会被记录下来,即使是今天不需要你关注的版本。

接下来,你要添加决定是否通知你的步骤。

第 6 步 — 只在有破坏性变更时通知

仅当满足条件时继续步骤会检查一个值,检查不通过时悄悄结束运行。在这一步,你要在保存和通知之间加入一个这样的步骤,这样只有含破坏性变更的版本才会通知你。

在步骤的底部,打开添加步骤…并选择仅当满足条件时继续。新步骤会添加在末尾,所以用它的 ↑ 按钮把它移到显示通知之前。然后设置:

比较时忽略大小写和多余的空格。其他检验方式有自上次运行以来已更改、不为空、为空、包含和等于;第一个正是关注一个页面模板用来只在页面变化时通知你的那个。

最后,更新第 5 个步骤显示通知。把标题设为 Breaking changes in uv,把消息设为帖子标题标签。

如果模型哪次没有写出这句原话,检查就会放行通知,所以最坏的情况只是多收到一条不需要的通知,而不会漏掉一个破坏性变更。

选择保存。如果有什么对不上,比如某个步骤读取了一个尚不存在的值,编辑器会在保存前请先修正:下列出问题,并在修正之前让保存保持禁用。保存之后,工作流页面会用通俗的语言列出这五个步骤。

工作流完成了。在让它自行运行之前,先来测试一下。

第 7 步 — 用“立即运行”测试工作流

测试运行会用真实数据,让你确切看到工作流会做什么。在这一步,你要手动运行它一次。

在工作流页面选择立即运行。对于监视订阅源的工作流,手动运行会用订阅源中最新的帖子作为测试,所以你不必等到下一个版本发布。按钮会变成运行中…,同时出现停止按钮,这次运行会显示在最近的运行下,标记为测试运行:,后面跟着版本名称。

运行的绝大部分时间都花在模型步骤上。用 GLM 5.3 Flash 的话,这里展示的测试运行用了不到一分钟。完成后,如果该版本含有破坏性变更并且你收到了通知,状态显示为已完成;如果检查在保存总结之后结束了运行,则显示没有新内容。无论哪种情况,已保存:都会链接到它保存的总结。

注意:你手动启动的运行不受批准限制,因为你就在旁边看着。你将在第 9 步设置的批准,针对的是无人看管的运行。

要预期到,模型对临界状态的版本,每次运行的判断可能不同。uv 0.12.24 主要是错误修复,其中几项让 uv 变得更严格,例如即使关闭了哈希检查,也会检查提供的哈希值。对这个版本做两次测试运行,GLM 5.3 Flash 有一次把这些修复列为破坏性变更,另一次则写了 No breaking changes.。如果你想收到这类变更的通知,就在指令里说明,例如:Count bug fixes that make uv stricter as breaking changes.

对这类步骤,请选择直接作答的模型。先长时间推理再回答的模型,处理一个很长的页面可能要花好几分钟,而运行达到 30 分钟的上限就会停止。

接下来,你要打开这次运行,看看每个步骤做了什么。

第 8 步 — 查看运行记录并重新运行某个步骤

每次运行都会保留每个步骤的记录:输入了什么、输出了什么、用了哪个模型、花了多长时间。在这一步,你将阅读这份记录,修改总结,并且只重新运行需要重跑的步骤。

在最近的运行下选择那次测试运行。本次运行做了什么部分会列出各个步骤,每个都有状态:已完成、失败、已跳过或已复用。如果是检查步骤结束了这次运行,会显示没有新内容——在步骤的 id 处停止,这里是 check。

展开 summary 步骤。以使用了开头的一行会写明它所用的模型和提供商,下面是这个步骤的输入和输出。在已保存:下,选择文档的名称即可打开总结本身。

假设总结比你想要的长。选择编辑,把 at most five bullet points 改成 at most three bullet points,然后保存。再打开那次测试运行,找到 summary 步骤,选择从此步骤重新运行。

新的运行会把获取步骤标记为已复用:它直接取用上一次运行的发布说明,而不再重新获取,然后用你的新指令运行总结、保存、检查和通知。在下图所示的运行中,重新运行用了 10 秒,而完整运行用了 16 秒,因为没有再次获取页面。步骤更长的工作流,这样既省时间,也省模型调用。

如果某次运行失败了,同一个视图会用通俗的语言告诉你是哪个步骤失败、为什么失败。修正那个步骤,然后从它重新运行。

工作流已经按你的想法运行。接下来,你要让它自行运行。

第 9 步 — 开启自动运行

自行运行的工作流必须先获得批准。在这一步,你将审阅发布监视器被允许做的事,并把它打开。

在工作流页面选择描述下方的启动标签(在画布视图中,改为选中开始步骤)。开始面板会打开,其中有计划部分,勾选自动运行(面板中的← 返回可回到工作流)。Conduit 会显示一个标题为允许它自行运行吗?的面板,列出这个工作流无需询问就被允许做的所有事情。对于发布监视器,清单如下:

通知和检查不需要批准。选择允许并开启。该部分随即显示正在监视 github.com,每 360 分钟一次,并且以自行运行时,它可以:开头的一行会一直显示已批准的清单。

如果你之后修改工作流,使它需要更多权限,例如一个新网站或另一个提供商,页面会显示还需要确认更多内容和一个批准按钮。在你批准之前,自动运行一旦走到那个步骤就会停下来询问。你会收到一条通知,这次运行显示为待处理,首页会把它列在待处理下。你可以选择仅允许一次、始终允许或不允许;如果一天之内没人回答,这个步骤就不会继续。

你第一次开启自动运行时,Conduit 还会提议在通知区域中继续运行。自动运行只在 Conduit 运行期间进行,所以如果你经常关闭窗口,就接受这个提议。你之后可以在同一部分更改它,同一处还有登录时在通知区域中启动 Conduit。

注意:如果想让工作流在固定时间运行,而不是在订阅源变化时运行,请在启动时机下选择仅在我运行时,或按计划。这样,自动运行会提供每天或工作日(在你选的时间),或每隔几小时:每 1、2、3、4、6、8、12 或 24 小时一次。

发布监视器现在已经自行运行了。在最后一步,你会看到启动下一个工作流的更快方式。

第 10 步 — 用描述代替手动搭建工作流

你不必一步步搭建每个工作流。在这一步,你要让 Conduit 根据一句话起草一个工作流。

在工作流页面选择新建工作流。在描述一个工作流中输入:

Every weekday at 9:00, read the Hacker News front page and the Lobsters front page, and save one list of the stories about Rust or Python.

选择生成草稿。聊天模型会写出一个工作流,Conduit 用检查你保存的工作流的同样方式检查它,并把发现的问题发回给模型去修正。草稿会以未保存的状态在编辑器中打开:在你选择保存并亲自开启之前,不会保存或安排任何东西。

模型永远不会替你选择只有你才能选的东西,例如文件夹、幻灯片或文档集,它也不会开启计划。草稿需要其中任何一项时,编辑器会显示保存前还需补充和一份简短的清单。对于上面的描述,清单内容是开启计划:每个工作日 9:00。,提醒你在保存之后到工作流页面设置计划。

还有另外两种用文字启动工作流的方式:

无论哪种方式,都要先审阅草稿,用立即运行测试,然后再打开自动运行。

进阶:画布、分支和智能体

发布监视器是一条直线,但工作流不必如此。下面四点都建立在你刚做完的内容之上。

所有步骤类型一览

发布监视器用到了五种步骤。下面是全部的步骤类型,与添加步骤…菜单中的显示一致:

步骤作用
获取页面读取最多十个网页,包括 PDF。每个页面最多 50,000 个字符。
在网上搜索使用在设置中选择的搜索后端进行搜索,最多返回 20 条结果。
读取文件从工作流的文件夹中读取文本、Markdown、CSV、JSON、PDF 或 Word 文件,其他位置都不会读取。
将文本转换为表格把 CSV、TSV 或 JSON 转换成后续步骤可以使用的行和列。
研究一个主题运行一次快速或标准的研究,生成一份带引用的报告。
搜索我的文档在你选定的文档集中,找出与查询最匹配的段落。
使用连接器调用你的某个连接器(MCP 服务器)提供的工具。只读取内容的工具会自行运行;发送、发布或编辑内容的工具会暂停运行并询问。
询问模型把一条指令和一段文本发给模型,不带任何工具,并保留它的回答。
允许模型使用工具让模型在回答之前,可以搜索网页、读取页面、查看时间、做算术、使用连接器工具并把任务交给助手,最多几次。如果你开启,它还可以在工作流的文件夹中运行命令、修改文件。
更新幻灯片按照指示修改你选定的幻灯片。固定的文字绝不会被改动,而且这次更改可以撤销。
更新草稿以同样的方式修改你选定的写作草稿。
编写文本不使用模型,把之前步骤的值拼合成一段文本。
逐项重复对列表中的每一项各运行一次其中包含的步骤,最多 50 项。
保存文档在 Conduit 中保存一份文档或网页,可以每次运行新增一份,也可以每次替换同一份。
保存文件把 Markdown、文本、CSV、JSON 或 HTML 文件写入 Conduit 的导出文件夹。
建议一条记忆向记忆提出一条建议。在你接受之前,不会记住任何内容。
问我暂停运行并向你提问,可以给出选项或让你输入答案,无人回答时使用默认值。
显示通知显示一条桌面通知,也可以设为只在内容与上次运行不同时才显示。
仅当满足条件时继续除非某个值通过检查,否则悄悄结束运行,状态为没有新内容。
如果……否则用同样的检查让运行走向“是”或“否”的一侧。另一侧之后的步骤会记录为未走此路。

一个工作流最多可以有 50 个步骤。每个步骤中的每个文本字段都可以包含插入的值,整份定义也可以在编辑器中用以 JSON 编辑手动修改。在那个视图里,插入的值写成 {{steps.summary.text}} 或 {{trigger.link}};如果要写出大括号本身,请在前面加一个反斜杠:\{{。

作为参考,下面是你构建的发布监视器在 JSON 视图中的样子:

{
  "steps": [
    {
      "id": "fetch",
      "type": "fetch_page",
      "urls": [
        "{{trigger.link}}"
      ]
    },
    {
      "id": "summary",
      "input": "{{trigger.title}}\n\n{{steps.fetch.text}}",
      "model": {
        "model": "z-ai/glm-5.3-flash",
        "provider": "openrouter"
      },
      "prompt": "Summarize these release notes for a developer who uses this tool every day.\n…",
      "type": "summarize"
    },
    {
      "content": "{{steps.summary.text}}\n\nSource: {{trigger.link}}",
      "id": "save",
      "mode": "create",
      "title": "uv {{trigger.title}}",
      "type": "save_artifact"
    },
    {
      "id": "check",
      "is": "not_contains",
      "text": "No breaking changes",
      "type": "condition",
      "value": "{{steps.summary.text}}"
    },
    {
      "body": "{{trigger.title}}",
      "id": "notify",
      "title": "Breaking changes in uv",
      "type": "notify"
    }
  ],
  "trigger": {
    "everyMinutes": 360,
    "kind": "feed",
    "url": "https://github.com/astral-sh/uv/releases.atom"
  }
}

常见问题

Conduit 关闭时工作流还会运行吗?

不会。定时运行和自动运行只在 Conduit 运行期间进行。要在关闭窗口后继续运行,请在工作流的计划部分打开关闭窗口后在通知区域中继续运行,还可以选择打开登录时在通知区域中启动 Conduit。Conduit 关闭期间错过的定时运行,会在下次启动时补运行一次,而不是错过几次就补几次。

运行一个工作流要花多少钱?

Conduit 是免费的。获取页面、读取文件、检查条件、保存文档或显示通知的步骤不会调用模型,也不花钱。询问模型的步骤由你的提供商计费,用你自己的密钥,和普通聊天消息一样。每次运行最多 30 分钟、最多 500,000 个模型 token,超过上限就会停止并给出提示。工作流发出的每一次模型调用都会记录在设置 → 用量与费用中。

工作流能修改我其他应用里的内容吗?

可以,但需要你批准。使用连接器步骤会自行运行只读取内容的工具,例如列出问题或读取日历。发送、发布或编辑内容的工具会暂停运行并显示确切的调用,由你选择发送、编辑或不发送;你也可以让某个操作在该工作流中今后无需询问。在 Conduit 内部,工作流可以保存文档和文件、建议一条供你决定是否接受的记忆,以及更新你选定的幻灯片或写作草稿。更新不会改动你固定的文字,在运行记录中选择撤销此次更新即可恢复幻灯片或草稿。

网页能控制工作流吗?

不能。获取到的网页只是供后续步骤处理的文本,不能添加步骤,也不能更改批准。询问模型步骤完全没有工具,所以包含指令的网页无法让它获取、搜索或保存任何东西。允许模型使用工具步骤把从网上读到的内容当作数据而不是指令,并且只拥有你勾选的只读工具。无人看管的运行,只能做你在开启自动运行时批准过的事。

可以把工作流分享给别人吗?

目前还没有导入或导出按钮,但你可以手动复制工作流:选择编辑,再选择以 JSON 编辑,复制其中的定义。对方通过从头开始新建一个工作流,打开以 JSON 编辑并粘贴即可。批准不属于定义的一部分,所以对方需要重新批准,工作流才能自行运行。

可以使用本地模型吗?

可以。在工作流的模型中,或在此步骤的模型中,选择 Ollama 或 LM Studio 的模型即可。在仅本地模式下,指定云端提供商的步骤会失败并给出说明,而不会把文本发到网上。

结语

在本教程中,你构建了一个监视 uv 发布动态的工作流:它为每个新版本获取发布说明,用低成本模型总结,保存每一份总结,并且只在出现破坏性变更时通知你。你用一个真实的版本测试了它,查看了每个步骤做了什么,从你修改的那个步骤重新运行,并精确批准了它可以自行做的事。

“获取内容、请模型处理、留下结果、只在重要时提醒你”这个模式,适合很多日常事务。你可以试着复制一份,指向你项目依赖的每个工具的发布动态;用关注一个页面盯着定价页或状态页;或者让收件文件夹总结你放进文件夹的每个文件。想继续深入,可以看看这些指南:

下载 Conduit

Conduit 的细节与最新版本一致,可在文档和源代码中查证。 发现错误?告诉我们,我们会改正。

相关内容