跳到主要内容

第 12 课 · 每日例程毕业设计

十六个节点。第 01–11 课的每个想法。这就是真实自动化的形态。

问题

构建你真会排上计划的例程:回到已知界面,检查能量是否值得动手,收集至多 N 个目标——目标耗尽时干净退出——统计收获、汇报,并且无论发生什么都诚实收场。

本课刻意采用与资深用户运行的大型农场式自动化相同的形态:一次参数化的行程,带恢复、资源闸门、有界循环加提前出口,以及按目标粒度的韧性。

你将学到

没有新东西——这正是重点。你将组合:Sub Flow 恢复(09/11)、OCR 闸门(05/06)、Flow Input 驱动的循环(07)、"没了就 Break"、可重试点击(08)、计数(07),以及点名原因的结局(每一课)。

流程

十六个节点放不进一张看得清的截图,所以毕业设计分三部分、全缩放呈现——准备、循环、收尾:

第 12 课,第 1 部分:准备与各道守卫

准备:① Start ② Reach a known screen —— 来自第 11 课的 Sub Flow,复用而非重建 ③ 读能量 ④ 读不出时的结局 ⑤ 够不够? ⑥ 不够时的结局。真正的活儿开始之前,每道守卫都有自己那个诚实的 Stop。

第 12 课,第 2 部分:采集循环

循环:① Loop ② 来自第 1 部分的低能量结局 ③ 找 Collect 图标 ④ 点它 ⑤ 没东西可收时 Break —— 循环的提前出口 ⑥ 数一数收了多少。

第 12 课,第 3 部分:收尾

收尾:① 控节奏的 Wait ② Loop End ③ 记录总数 ④ Stop: routine complete —— 整套例程只有一个成功结局。

读形状,别读单个节点:主脊柱纵贯中央,错误结局垂在左侧,Break 绕行在右。陌生人几秒内就能沿出快乐路径——这种可读性是你亲手构建的特性,靠编号命名与 Auto Layout。

动手构建

声明:rounds(number?,默认 3,Input ✓ Required ✓)、done(number,默认 0)、energy(number?)。

#节点源自哪课
1Sub Flow → 第 09 课,Failure → recovery failed09、11
2Read Text,Energy 读数,Percentageenergy05、06
3If {{energy}} >= 20;False → low energysuccess05
4Loop,count 模式,max {{rounds}}07
5Find Image 找 Collect 图标,3000 ms,Failure → Break nothing left03、04
6Click,来源 = 节点 5,retry ×2 / 400 ms / ×1.5;Failure → 暂停(跳过计数)03、08
7Variable done + 1——只在成功路径上07
8Wait 随机 800–1400 ms;→ Loop End(aggregation: iteration count07
9Variable 打印 doneStop: routine complete07

严格按图连线;两条微妙的边是节点 6 的 Failure → 节点 8(失败的点击跳过计数,不跳过循环),以及 Break → Loop End。Save,Auto Layout。

值得"偷走"的设计决策

  • 能量不足是 success。 例程的职责包括知道何时无事可做。只有 recovery failedunreadable 是 failure——流程完全无法履职的状态。
  • 闸门在循环之前,于是"疲惫"的行程只花两个节点,而不是 N 轮徒劳搜寻。
  • Break ≠ failure。"没有目标了"提前结束循环,照样汇报、照样成功。对比它与节点 6 的 Failure——一个是世界状态,一个是操作故障,走的路不同。
  • done 数成果;Loop End 数轮数。 一次有一击失败的行程之后:轮数 3,done 2。两个数字各有所指;谁也替代不了谁。
  • 每个结局是一句话。 六个结局、六个原因,凌晨两点不用考古。

运行,然后排上计划

在纯净仪表盘上用 rounds = 3 运行:恢复(瞬间)、能量 85 ≥ 20、三轮找-点-数-歇,日志 done = 3success。试试 dashboard.html?energy=15%——运行约 2 秒即以 success · Energy too low 结束,不做任何搜寻。

然后把它变成日常:加进实例的 Flow Queuerounds 值随队列条目存储),并建一条 Scheduler 计划——演示环境正是带着这套设置发布的:

排在实例队列中的毕业设计

每天 08:00 与两小时间隔的自动化

Scheduler 决定它何时跑;Queue 决定实例上跑什么。你的流程既不知道也不关心——参数化、诚实收场的流程能装进任何调用方:Run 表单、父流程、队列、计划。

常见错误

错误后果修复
两种点击结局都计数done 夸大现实只数成功路径
把 Break 连成失败结局"没了"杀死一次本该圆满的行程Break → Loop End → 汇报
闸门放进循环里每次行程读 N 遍能量循环前读一次
rounds 不设必填带着空数字启动Required ✓
把结局并成两个靠翻日志考古诊断一个原因一个结局

故障排查

立即以 success · 0 collected 结束。 第一轮就没找到 Collect 图标——Break 触发了。前台是错误屏幕,或模板需要重截。

rounds 大时运行死于节点执行数错误。 循环放大节点数;流程的 maxNodeExecutions(此处 5000)是天花板。真正的长行程去 flow settings 提高它。

计划运行之间重复收集。 那是第 10 课的活——在循环前加冷却守卫(读周期计时 → Memory Match → remember)。演示环境的 Farm Resources 模式正是这么做的。

你现在的位置

你已会操作、验证、读取、决策、循环、重试、恢复、记忆、组合与排程。工具箱到此完整——此后的一切只是词汇,而你知道词典在哪:

更进一步: 给毕业设计加上第 10 课的守卫;把暂停区间变成 Flow Input;把循环体拆成独立子流程,看毕业设计缩成八个易读节点。每件事是一个晚上;每件事正是真实农场自动化生长的方式。

祝贺——接下来去构建属于你自己的东西吧。🎓