Chuyển tới nội dung chính

Bài 12 · Capstone: Quy trình hằng ngày

Mười sáu node. Mọi ý tưởng từ Bài 01–11. Đây là hình dạng mà automation thực thụ mang.

Bài toán

Dựng quy trình bạn sẽ thực sự đưa lên lịch: về màn hình đã biết, kiểm đủ năng lượng để đáng công, thu tối đa N mục tiêu — thoát sạch sẽ khi hết mục tiêu — đếm thành quả, báo cáo, và kết thúc trung thực dù chuyện gì xảy ra.

Bài này chủ ý mang cùng hình dạng với các automation kiểu farm quy mô lớn mà người dùng giàu kinh nghiệm vận hành: một chuyến đi có tham số, với khôi phục, cổng tài nguyên, vòng lặp có giới hạn kèm lối thoát sớm, và độ bền theo từng mục.

Bạn sẽ học được

Không gì mới — đó chính là điểm mấu chốt. Bạn sẽ kết hợp: khôi phục Sub Flow (09/11), cổng OCR (05/06), vòng lặp chạy bằng Flow Input (07), Break khi "hết hàng", cú chạm có retry (08), đếm (07), và kết thúc gọi tên nguyên nhân (mọi bài).

Flow

Mười sáu node không vừa một ảnh chụp đọc được, nên capstone chia ba phần ở mức zoom đầy đủ — chuẩn bị, vòng lặp, và khép lại:

Bài 12, phần 1: chuẩn bị và các phép gác

Chuẩn bị: ① Start ② Reach a known screen — Sub Flow từ Bài 11, tái dùng chứ không dựng lại ③ đọc năng lượng ④ kết thúc khi không đọc được ⑤ có đủ chưa? ⑥ kết thúc khi không đủ. Mỗi phép gác có một Stop trung thực riêng trước khi việc thật bắt đầu.

Bài 12, phần 2: vòng lặp thu hoạch

Vòng lặp: ① Loop ② kết thúc thiếu năng lượng từ phần 1 ③ tìm icon Collect ④ chạm vào nó ⑤ Break khi không còn gì để thu — lối ra sớm của vòng lặp ⑥ đếm thứ đã thu.

Bài 12, phần 3: khép lại

Khép lại: ① Wait giữ nhịp ② Loop End ③ ghi log tổng ④ Stop: routine complete — một kết thúc thành công cho cả quy trình.

Hãy đọc hình dạng chứ đừng đọc từng node: trục chính chạy giữa, các kết thúc lỗi treo bên trái, đường vòng Break bên phải. Một người lạ lần được đường vui trong vài giây — độ dễ đọc ấy là tính năng bạn tự xây, bằng tên đánh số và Auto Layout.

Dựng flow

Khai báo: rounds (number?, mặc định 3, Input ✓ Required ✓), done (number, mặc định 0), energy (number?).

#NodeBài học gốc
1Sub Flow → Bài 09, Failure → recovery failed09, 11
2Read Text, ô Energy, Percentageenergy05, 06
3If {{energy}} >= 20; False → low energy (success)05
4Loop, chế độ count, max {{rounds}}07
5Find Image biểu tượng Collect, 3000 ms, Failure → Break nothing left03, 04
6Click, nguồn = node 5, retry ×2 / 400 ms / ×1.5; Failure → nghỉ (bỏ qua bước đếm)03, 08
7Variable done + 1chỉ trên nhánh thành công07
8Wait ngẫu nhiên 800–1400 ms; → Loop End (aggregation: iteration count)07
9Variable log doneStop: routine complete07

Nối đúng như sơ đồ; hai cạnh tinh tế là Failure của node 6 → node 8 (cú chạm hỏng bỏ qua bước đếm, không bỏ vòng lặp) và Break → Loop End. Save, Auto Layout.

Các quyết định thiết kế đáng "ăn cắp"

  • Thiếu năng lượng là một success. Việc của quy trình bao gồm biết khi nào chẳng có gì để làm. Chỉ recovery failedunreadable là failure — trạng thái flow hoàn toàn không làm nổi việc của nó.
  • Cổng chạy trước vòng lặp, nên một chuyến "mệt" tốn hai node, không phải N vòng săn tìm vô ích.
  • Break ≠ failure. "Hết mục tiêu" kết thúc vòng lặp sớm mà vẫn báo cáo và vẫn thành công. So nghĩa của nó với Failure của node 6 — một cái là trạng thái thế giới, cái kia là trục trặc vận hành, và chúng đi hai đường khác nhau.
  • done đếm thành quả; Loop End đếm số lượt. Sau một chuyến có một cú chạm hỏng: lượt 3, done 2. Cả hai con số đều nói lên điều gì đó; không cái nào thay được cái nào.
  • Mỗi kết thúc là một câu văn. Sáu kết thúc, sáu nguyên nhân, không phải khảo cổ lúc 2 giờ sáng.

Chạy thử, rồi đưa lên lịch

Chạy với rounds = 3 trên dashboard trơn: khôi phục (tức thì), energy 85 ≥ 20, ba vòng tìm-chạm-đếm-nghỉ, log done = 3, success. Thử dashboard.html?energy=15% — lần chạy kết thúc success · Energy too low trong ~2 giây mà không săn tìm gì.

Rồi biến nó thành thói quen: thêm vào Flow Queue của instance (giá trị rounds lưu cùng mục queue) và tạo một mục Scheduler — môi trường demo giao kèm đúng bộ thiết lập này:

Capstone trong hàng đợi của instance

Hằng ngày lúc 08:00, và automation chu kỳ 2 giờ

Scheduler quyết khi nào nó chạy; Queue quyết cái gì chạy trên instance. Flow của bạn không biết cũng không cần biết — flow có tham số, kết thúc trung thực lắp vừa mọi bên gọi: form Run, flow cha, queue, lịch.

Lỗi thường gặp

LỗiHậu quảCách sửa
Đếm trên cả hai kết cục cú chạmdone thổi phồng thực tếChỉ đếm nhánh thành công
Nối Break như kết thúc thất bại"Hết hàng" giết một chuyến vốn tốt đẹpBreak → Loop End → báo cáo
Cổng nằm trong vòng lặpN lần đọc năng lượng mỗi chuyếnCổng một lần, trước vòng
rounds không RequiredLần chạy khởi động với ô số trốngRequired ✓
Gộp các kết thúc còn haiChẩn đoán bằng cách mò logMỗi nguyên nhân một kết thúc

Khắc phục sự cố

Kết thúc success · 0 collected ngay lập tức. Biểu tượng Collect không thấy ở vòng một — Break đã nổ. Sai màn hình phía trước, hoặc template cần bắt lại.

Lần chạy chết vì lỗi số-node-thực-thi ở rounds cao. Vòng lặp nhân số node; maxNodeExecutions của flow (5000 ở đây) là trần. Nâng nó trong flow settings cho những chuyến thật sự dài.

Thu trùng giữa các lần chạy theo lịch. Đó là việc của Bài 10 — thêm chốt chặn cooldown (đọc đồng hồ chu kỳ → Memory Match → remember) trước vòng lặp. Mẫu Farm Resources demo làm đúng như vậy.

Bạn đang đứng ở đâu

Bạn đã biết hành động, xác minh, đọc, quyết định, lặp, retry, khôi phục, ghi nhớ, lắp ghép và lên lịch. Đó là trọn bộ công cụ — mọi thứ sau đây chỉ là từ vựng, và bạn biết từ điển nằm đâu:

Đi xa hơn: thêm chốt chặn Bài 10 vào capstone; biến khoảng nghỉ thành Flow Input; tách thân vòng lặp thành flow con riêng và nhìn capstone co về tám node dễ đọc. Mỗi việc là một buổi tối; mỗi việc đúng là cách các automation farm thật đã lớn lên.

Chúc mừng — giờ hãy tự xây thứ của riêng bạn. 🎓