Echolot
流程

运行和触发

手动运行流程、按计划运行、由 Webhook 触发、作为工具提供给 AI 智能体或在命令行中运行,并允许那些无需你在场就启动流程的触发器。

流程在有东西启动它时运行:你,用运行按钮;AI 智能体,当你把流程作为工具提供时;计划;Webhook;或终端或 CI 中的 echolot flow run。 无论由谁启动,每个请求都与在请求页面中发送走同一条路径。

手动运行

  1. 在“流程”页面中打开流程。
  2. 点按工具栏中的运行,或按 ⌘R。
  3. 流程有输入时,标题为流程名称的运行面板会询问这些输入。每个字段显示输入的名称、类型以及是否必填,初始值为它的默认值。留空即使用默认值,然后点按运行。

流程会先存储,因此运行使用的就是画布上的内容。它在窗口当前使用的环境下运行。流程有错误时,运行不可用;其提示文字为“请先修复流程的问题”。

当受保护的环境处于使用中时,按钮会显示为在 Production 中运行…(附该环境的名称),Echolot 会在运行开始前询问一次。运行中的请求不会再次询问。

运行视图

流程运行时,它的块会在画布上显示状态,运行日志会在画布下方打开:

画布上含义
强调色边框块正在运行,或在等你操作。
绿色边框块已完成。
红色边框块失败。

运行日志依次列出:

  • 每个块完成时的情况,附耗时;
  • “日志”块的输出行,以及“求值”块中的 console.log;
  • “断言”块和 pm.test 的测试结果,标题栏中显示测试通过数/总数;
  • 错误,以红色显示;
  • 运行如何结束:已完成,用时 1.2 s、已停止,用时 … 或带原因的 失败,用时 …。

点按某一行可选中对应的块。选择任意块,即可在检查器中看到它的上次运行,其中按端口列出输入和输出值。 清除会清空日志和画布上的状态;关闭按钮会隐藏日志,工具栏中的运行日志可再次显示它。

运行进行时,停止(⌘.)取代运行。它会结束运行、关闭正在进行的请求,并撤掉屏幕上的所有提问。

运行失败且这台 Mac 的设备端模型可用时,日志标题栏中的一个按钮会根据日志解释失败原因。

之前的运行

窗口会保留已打开流程最近 20 次运行,包括由计划或 Webhook 启动的运行。它们列在边栏的运行下(附结束情况、开始时间和耗时),也列在工具栏的运行菜单中。 点按其中一次,即可在画布上再次显示:各块的状态和每个块的上次运行。运行菜单中的清空画布会把它们从画布上移除。

运行记录保留在窗口中。流程发送的请求与其他任何发送一样,保存在工作区的历史记录中。

触发器

选择“开始”块,即可在检查器中看到流程的触发器。“运行”按钮和 echolot flow run始终开启。勾选其他触发器即可添加:

  • 智能体(MCP 工具)
  • 计划
  • Webhook

“开始”块为每个已开启的触发器显示一个小图标,边栏也在流程名称下方显示它们。

Order status on webhook 的“开始”块的检查器:“触发器”部分中勾选了 Webhook,方法为 POST,路径为 /order-status,下方是本地地址以及“拷贝 URL”和“拷贝令牌”,还有“已允许”和“撤销许可”

允许触发器

智能体、计划和 Webhook 会在你不在画布前时启动流程,因此每一种还需要你对这个流程的许可。在每个已勾选的触发器下,点按允许。触发器随后显示已允许和一个撤销许可按钮。

许可针对流程当前的样子:流程本身、它发送的请求及其上层的文件夹、工作区的变量、认证、代理和证书,以及它所运行的流程。 改动其中任何一项,无论是在画布上、在 Git 中还是由智能体改动,触发器都会停止,直到你再次允许。此时它会显示“自你允许以来,此流程已更改。”,并提供再次允许。 流程不能自己允许自己:许可保存在你这台 Mac 上的 Echolot 中,而不在工作区里。有错误的流程永远不会由触发器启动。

环境值的变化(例如一个新令牌)不会使许可失效。

智能体:把流程作为 MCP 工具

把流程提供给 AI 智能体,它就成为 Echolot 的 MCP 服务器的一个工具:智能体调用一个工具,流程完成那些请求,机密则留在 Echolot 中。

  1. 选择“开始”块并勾选智能体(MCP 工具)。
  2. 工具名称默认是 flow_ 加上用下划线连接的流程文件名(flow_place_test_order),除非你输入别的名称:最多 64 个字母、数字、_ 和 -。
  3. 为模型写好工具的作用。它起初是流程的描述。
  4. 点按允许。
  5. 打开设置 › 智能体并连接你的客户端。见 AI 智能体。

工具的参数就是流程的输入,其结果是“输出”块收到的内容。Place a test order 以 place_test_order 的名称提供。 只要“流程”工具集处于开启状态(默认开启),该流程就会出现在工具列表中。智能体只能启动已提供且已允许的流程。

智能体启动流程时,Echolot 会在运行之前向你询问一次,并说明流程会做什么:向哪些地址发送哪些请求、存储哪些变量和机密、写入哪些文件、运行哪些工具和流程,以及在哪里询问人。 在运行期间,你已批准的内容不会再次询问;受保护的环境、新主机和删除仍会询问,智能体自身规则所拒绝的内容也一样。

由智能体启动的流程中的“人员”块会交给智能体的客户端:由它显示消息、代码和链接,或询问各个值。“批准”块始终由你决定:智能体回答它时,Echolot 会先询问你。

助手以同样的方式运行流程。

计划

让流程每隔若干分钟,或按日历自行运行。

  1. 选择“开始”块并勾选计划。它的初始值是每 60 分钟一次。
  2. 选择间隔并填写每 … 分钟,或选择设置时间(cron) 并输入一行 cron(分钟、小时、日、月、星期)。一个计划只能二选一,且最多每分钟运行一次。
  3. 点按允许。

获得允许后,检查器会显示下次运行及其日期和时间。计划运行在工作区窗口打开期间进行,使用运行时刻窗口所用的环境,并以输入的默认值启动。 Mac 休眠或窗口关闭期间错过的运行,会在 Echolot 下次检查时运行一次;仍在运行的流程不会再次启动。计划运行失败时会显示通知。 要在没有 App 的情况下运行计划,请使用 echolot flow serve。

cron 行使用五个字段,采用你的 Mac 所在的时区:分钟(0–59)、小时(0–23)、每月的日(1–31)、月(1–12 或 jan–dec)和星期(0–7 或 sun–sat;0 和 7 都是星期日)。 每个字段可以是 *、数字、范围(1-5)、列表(1,15)和步长(*/15、8-18/2)。日和星期同时有限制时,任一匹配即可。

cron 行运行时间
0 6 * * *每天 6:00(Morning stock check)。
0 7 * * 1-5工作日 7:00。
*/15 8-18 * * *8:00 到 18:45 每 15 分钟一次。
0 9 1 * *每月 1 日 9:00。

“人员”块在计划运行期间无法询问任何人,因此会在那里失败。

Webhook

当有东西向本地地址发送请求时,启动流程。

  1. 选择“开始”块并勾选 Webhook。
  2. 选择方法(GET、POST、PUT、PATCH 或 DELETE;默认为 POST)和以 / 开头的路径。路径起初是 / 加上流程的文件名。
  3. 点按允许。

获得允许后,检查器会显示地址,例如 POST http://127.0.0.1:52817/order-status,并附有拷贝 URL和拷贝令牌。Echolot 只在这台 Mac 上(127.0.0.1)、窗口打开期间监听。端口为每个工作区选定一次并保持不变。

调用方必须发送工作区的令牌,该令牌由 Echolot 在第一次时生成并保存在钥匙串中。下面任何一种方式都可以:

  • 标头 Authorization: Bearer <token>;
  • 标头 X-Echolot-Token: <token>;
  • 查询参数 ?token=<token>。
curl -X POST http://127.0.0.1:52817/order-status \
  -H "Authorization: Bearer <token>"

Order status on webhook 先登录,获取订单,然后用订单作答。查询参数和 JSON 正文的键会填充流程中同名的输入;其他键会被忽略。名为 body 的输入获得整个正文。 因此,有一个输入 order 的流程可以接受 ?order=ord_7Hk2Lw 或 {"order": "ord_7Hk2Lw"}。运行使用窗口当前使用的环境。

应答时机
200,附 JSON 形式的输出运行通过。正文是“输出”块收到的内容,或 null。
401令牌缺失或错误。
404没有已允许的流程应答该方法和路径;错误信息会列出能应答的那些。
413正文大于 8 MB。流程不会运行。
500运行失败。正文包含 error 和运行的 id。
503运行已被停止。

Webhook 运行在两分钟后停止。“人员”块在那里无法询问任何人,因此会失败。

后台运行

由计划和 Webhook 在 App 中启动的运行,在流程打开期间显示在该流程的运行下;失败的运行会显示 macOS 通知,附流程名称和错误。 它们以你的权限运行,就像你自己启动的运行一样,但仅限于你已允许的流程。

在命令行中运行

echolot 命令无需 App 即可运行同样的流程。在 CI 中,流程就是这样成为发布关卡的。

# 列出流程、它们的输入和问题
echolot flow list -w Alpenglow.echolot

# 运行一个流程;运行或其中某个测试失败时以错误退出
echolot flow run morning-stock-check -w Alpenglow.echolot --env staging --no-input

# 以 name=value 的形式传入输入(由“分页并导出”模板创建的流程)
echolot flow run export-products -w Alpenglow.echolot --input pages=5

# 运行计划并应答 Webhook,直到按下 Ctrl-C
echolot flow serve -w Alpenglow.echolot --port 4100
  • flow run 会在每个块完成时打印它,然后打印输出。--json 改为打印运行记录。“人员”块在终端中询问;使用 --no-input 时,它们会让运行失败,这正是 CI 需要的。“通知”块会打印它们的文本。
  • flow serve 会在计划流程到期时运行它们,并在端口 4100 上应答 Webhook(--port 0 会选一个空闲端口)。--share 监听所有网络接口,供容器使用。令牌来自 --token,其次是 ECHOLOT_WEBHOOK_TOKEN,否则生成并打印一个新令牌。
  • 在命令行中,运行是你自己启动的,因此流程无需允许:flow serve 会运行每个带有计划或 Webhook 且没有错误的流程。

所有选项见 echolot flow。

仅限直接下载版

命令行工具包含在直接下载版中(Echolot › 安装命令行工具…)。对于 App Store 版,请从发布页面的 zip 单独安装。

比较两个版本

本页内容