节点
节点目录在调色板的三个选项卡中共有 36 种节点类型:Triggers(触发器)、Actions(动作,含设计动作和 AI 动作)以及 Rules(逻辑、计时和流程控制)。每个节点都可以完整配置,放置的那一刻就会即时校验。部分动作节点已经能真正执行;也有少数节点先于对应执行器进入了目录,它们不会假装成功,而是如实记录一条“尚未接入”的步骤,详见下方的 When run(何时运行)列。
快速概览
- 打开与需求匹配的调色板选项卡:Triggers、Actions 或 Rules。
- 把节点拖到画布上。
- 在检查器里配置它的字段。
- 在依赖某个动作节点的实际效果之前,先查看下方的表格。
详细参考
Triggers(触发器)
一张图有且只有一个触发器节点来启动运行。各触发器的实际触发方式请见 触发器。
| 节点 | 什么会启动一次运行 |
|---|---|
| Manual start | 你在构建器的 Test 按钮上手动触发 |
| Scheduled | 按间隔、每日或每周的节奏 |
| Incoming webhook | 对该自动化专属 URL 的一次调用 |
| Design created | 新建了一个设计 |
| Design updated | 保存了一个设计 |
| Design shared | 分享或发布了一个设计 |
| Design downloaded | 下载了一个设计 |
| Part tagged | 给某个部件添加了标签,可选按单个标签过滤 |
| Brand applied | 给某个设计应用了品牌套件 |
| Asset uploaded | 有文件被添加到媒体库 |
| AI generation done | 一次 AI 生成完成 |
| New work in folder | 有项目被添加到指定文件夹 |
设计动作
| 节点 | 作用 | 字段 | 何时运行 |
|---|---|---|---|
| Pick a part | 先选一个项目,再选其中的一个部件(页面、画框或幻灯片);后续步骤都作用于它 | Part(打开部件选择器) | 真正执行 |
| Set status / folder | 修改设计的状态,并/或将其移动到某个文件夹 | Status、Folder | 真正执行 |
| Publish a part | 把选中的部件发布为社区模板 | 无 | 尚未接入 |
| Duplicate a design | 创建选中设计的副本 | 无 | 尚未接入 |
| Generate a cover | 为选中的部件生成封面或缩略图 | 无 | 尚未接入 |
AI 动作
通过你自己的 AI 服务商密钥运行,也就是应用中其他地方用的同一个密钥;见 自带 AI 密钥。
| 节点 | 作用 | 字段 | 何时运行 |
|---|---|---|---|
| Generate copy | 用 LLM 写文本 | AI 设置(从节点中打开) | 只要连接了任意 AI 密钥就真正执行;否则记录一条跳过的步骤 |
| Generate an image | 文本生成图像 | AI 设置(从节点中打开) | 有 OpenAI 兼容密钥时真正执行;换成其他任何服务商,或没有密钥,都会记录一条跳过的步骤 |
| Generate a video | 文本生成视频 | AI 设置(从节点中打开) | 目前一律记录一条跳过的步骤;视频尚未接入任何服务商,即便配置了密钥也一样 |
| Run an AI skill | 运行一个 AI Studio 技能 | AI 设置(从节点中打开) | 出图类技能与 Generate an image 相同;出视频类技能一律记录一条跳过的步骤 |
通知动作
| 节点 | 作用 | 字段 | 何时运行 |
|---|---|---|---|
| In-app notification | 在你的工作区里创建一条通知 | Message | 真正执行 |
| Send webhook | 向某个 URL 发送 POST 请求 | URL | 真正执行 |
| Slack / Discord | 通过 incoming webhook 发布一条消息 | Webhook URL、Message | 真正执行 |
| Write an audit entry | 向审计日志追加一行 | 无 | 真正执行 |
| Send email | 发送一封邮件 | To、Subject、Body | 通过你工作区已配置的 SMTP 连接真正执行;没有连接则记录一条跳过的步骤 |
| Add to calendar | 向工作区日历添加一个事件 | Title | 真正执行;它会出现在你的 Portal Calendar 活动流中 |
规则与逻辑
这里的每个节点都由核心引擎直接处理,所以全部都会真正执行。
| 节点 | 作用 | 字段 |
|---|---|---|
| Condition (yes/no) | 根据条件把流程分成两条分支 | Condition |
| Filter | 条件不满足时终止流程 | Condition |
| Delay | 继续前先等待一段时间 | Amount、Unit(分钟、小时、天) |
| Wait until a date | 等到某个具体的日期和时间 | Date |
| Set a variable | 把一个值写入本次运行的上下文,供后续步骤使用 | Key、Value |
| Expression / template | 用先前的输出拼出一个值 | Template |
| HTTP request | 调用某个 URL 并保存响应 | URL、Method、Body |
| No-op | 什么都不做,一个直通步骤 | 无 |
| Exit | 结束自动化 | 无 |
模板与条件
大多数文本和多行文本字段、Expression / template 节点,以及若干通知字段,都支持双大括号占位符,写作 {{ context.someKey }},它会取用先前节点写入本次运行的任意内容,例如你选中的部件,或一段 AI 生成的文本。
Condition (yes/no) 和 Filter 则构建的是一条结构化规则:选一个字段、一种比较方式(等于、包含、以……开头、大于、为空等,具体取决于该字段的数据类型),再选一个值。规则的任意一侧都能同样地引用本次运行的上下文,例如把 {{ context.status }} 与固定值 approved 相比较。空规则总是通过,这也是为什么全新的 Condition 或 Filter 节点在你配置好之前会放行一切。
如何使用
操作演示:配置一个 HTTP request 步骤
- 从 Rules 选项卡把 HTTP request 拖到画布上,把它连接在能产出你要发送数据的那个节点之后。
- 设置 Method(GET、POST、PUT、PATCH 或 DELETE)和 URL;和任何文本字段一样,URL 字段也接受
{{ context.x }}。 - 选择 Auth:None、Bearer token、Basic(
user:pass)或自定义请求头,并填入随之出现的对应值字段。 - 对于带请求体的方法,选一个 Body 类型(JSON、表单或纯文本)并写好 Body,同样可以在需要处使用占位符。
- Response variable 保留默认的
__http,或改个名字,然后在下游引用结果,例如{{ context.__http.status }},或是嵌在{{ context.__http.body }}里的某个值。
操作演示:通知一个 Slack 或 Discord 频道
- 在目标应用里,为你想发布消息的频道创建一个 incoming webhook,并复制它的 URL。
- 把 Slack / Discord 拖到画布上(Actions > Notification),把那个 URL 粘贴到 Webhook URL 里。
- 写好 Message,用
{{ context.x }}带入先前节点产出的任意内容。 - 可选地设置 Username 和 Icon emoji,让自动发出的消息在繁忙的频道里更容易辨认。
- 测试一次自动化;发布失败会作为一条
error步骤显示、并附上 HTTP 状态码,而不是悄无声息地什么都不做。
常见任务
- 每个工作日清晨触发。 在 Scheduled 触发器上,把 Frequency 设为 Cron、表达式设为
0 9 * * 1-5,时区设为Europe/Istanbul之类。Cron 模式会保留一个补偿指针,所以哪怕漏掉了某一分钟(一次部署、一次冷启动),一旦补上仍会触发一次,不会被悄悄丢掉。 - 只接受签名的 webhook 调用。 填好 Incoming webhook 触发器的 HMAC 密钥;此后调用方必须发送一个基于原始请求体计算出的
X-Signature: sha256=...请求头,否则调用会在任何逻辑运行之前被 401 拒绝。 - 审批后把部件移到待审。 把 Pick a part 串接到 Set status / folder,将 Status 设为“İncelemede”(待审);它调用的是编辑器自身状态控件所用的同一条更新路径。
- 起草一段说明文字或摘要。 Generate copy 节点的提示词可以直接引用先前的上下文,例如接在另一个 AI 步骤之后写
Summarize this in one sentence: {{ context.__aiText }}。 - 调用外部 API 并根据响应做处理。 HTTP request 节点(Rules 选项卡)可以设置 Bearer/Basic/自定义请求头认证,把响应写入一个变量(默认
__http),紧随其后的 Filter 节点便可基于该响应设卡,例如只有调用成功时才继续。 - 给发出的 webhook 签名。 Webhook gönder(发送 webhook)动作的 Secret 字段一旦填写,就会用 HMAC-SHA256 对请求体签名,并放进 Signature header(默认
X-Signature)里发送,让接收方能验证这次调用确实来自你的自动化。 - 把多个上下文值拼成一个字符串。 用 Expression / template,而不是好几个 Set a variable 节点,例如在它的 Template 字段里一次写好
{{ context.name }} <{{ context.email }}>,然后在下游以{{ context.__expr }}引用结果。 - 让通知链接回它所关乎的工作。 In-app notification 的 Href 字段接受
/works/<id>这样的路径,这样在工作区里点击该通知,就能把你的团队直接带到受影响的项目。 - 提前结束一次运行,且不算作失败。 串接一个 Filter 节点,用一条对你想丢弃的情况为假的规则;被过滤掉的运行在 Runs 中显示为 Exited,而不是 Failed,过滤之后的一切都不会运行。
疑难排查
- 某个节点的步骤在 Activity 里显示
skipped。 这要么是一次有意的过滤(条件未通过的 Filter 节点),要么是执行器确实尚未接入的节点(见上方的“何时运行”列),要么是暂时无对象可处理的动作(没有 SMTP 连接的邮件、没有匹配密钥的 AI)。这些都不是 bug;运行仍会继续到其后的步骤。 - 某个动作节点在同一步骤上反复失败。 打开它检查器的 Settings 选项卡,设置 Retry 次数和等待时间,或把 On error 改为 Continue,好让图的其余部分照常运行;见 搭建工作流。
- 我的条件好像永远不通过(或永远不失败)。 检查它读取的字段是否真的解析出了值:
{{ context.x }}路径里的拼写错误,或某个自身被跳过的上游节点,都会让这个值为空,而除了“为空”之外的大多数比较对空值都会判为不成立。 - 一次运行压根没有开始。 这是触发器层面的问题,不是节点问题;关于防抖、静默时段和 Active 状态的坑,见 触发器。
- Set status / folder 记录了“önce bir parça seç”(请先选一个部件)并跳过。 这个节点作用于同一次运行中先前某个 Pick a part 节点所选的部件。图中若没有它在前面,就没有可作用的对象,于是它总是带着这条消息跳过。
- “Publish a part”“Duplicate a design”或“Generate a cover”好像什么都没做。 这三个设计动作仍然领先于它们的执行器;它们总是记录一条跳过的步骤并直通,就像依赖尚未配置的 AI 或邮件节点一样。目前无论你怎么配置都改变不了这一点。
- 一条 Slack 消息或一个发出的 webhook 悄无声息地没送达。 先查看它在 Recent step logs 里的记录。一个失效或过期的 incoming webhook URL,或者一个返回了非 2xx 状态的目标,都会作为一条
error步骤显示、并在消息里带上响应状态码,而不是一次被隐藏的失败。
提示
Skipped 不代表坏了
标记为“尚未接入”的节点不是 bug。运行仍会穿过它,如实记录一条“skipped”步骤,再继续到下一个节点,所以在你等待该节点执行器就绪的同时,图的其余部分照常工作。
组合使用条件与过滤
当你需要两条不同路径(是和否)时用 Condition;当你只想终止一次不合格的运行时用 Filter。