从日记内容和“🙂”的心情来看,您今天的工作是高效且富有成就感的。所有的任务都围绕着“优化”和“解决”展开,这表明您在自动化和技术维护方面具备很强的实战能力和主动性。每一个问题的成功解决都为您带来了积极的情绪反馈。
建议: 这种持续解决问题和优化的状态非常棒!可以尝试在每天结束时,简要记录下这些“小胜利”,它们是您技术能力和职业热情的最佳证明。同时,也要注意劳逸结合,保持这份积极的心态,让创造力持续迸发。
对 UiAutomatr 脚本的深入分析表明,它是一个功能全面、考虑周到的自动化框架,涵盖了设备连接、UI交互、图像识别、任务调度、数据记录等多个方面。在此基础上,可以提出以下创新和优化建议:
痛点: 现有脚本依赖 XPath、`delem` (uiautomator2 元素定位) 或图片匹配。UI 界面微小改动(如元素位置、ID 变化)或不同设备型号的差异,都可能导致脚本失效,维护成本高。
建议: 引入轻量级 AI/ML 模型(如基于 PaddlePaddle 或 PyTorch 的小模型)进行 UI 元素语义识别。模型可以训练识别“按钮”、“输入框”、“列表项”等通用 UI 组件,并结合 OCR 对元素文本进行二次验证。例如,一个按钮不再依赖于其固定的 XPath,而是被识别为“一个带有‘确定’文本的按钮”,大大增强脚本的健壮性和跨平台适应性。
# 示例伪代码: 智能元素识别
def smart_find_element(self, text_hint: str, element_type: str = "button"):
# 使用AI模型识别屏幕上的所有元素
detected_elements = self.ai_recognize_ui_elements()
for elem_info in detected_elements:
if elem_info.type == element_type and self.ocr_match(elem_info.image, text_hint):
return elem_info.bounds # 返回识别到的元素坐标或UID
return None # 未找到
# 在multiple_find_picture中优先调用
# [x, y], k = self.smart_find_element("去完成", "button")
# if x > 0: ...
痛点: 报告显示大量超时和 ADB 连接失败,可能是因为任务分配不均、设备状态未充分考虑。目前的电量、温度判断已是好的开始,但缺乏中心化调度。
建议: 建立一个轻量级的任务调度服务(例如使用 Redis 消息队列或简单的 HTTP API)。每个设备在开始任务前向调度器“报备”自身状态(电量、温度、当前运行任务、空闲状态),调度器根据预设策略(例如,优先分配给电量高且温度低的设备、避免同一设备连续执行高耗时任务)智能下发下一个任务。这能提高整体任务的成功率和设备资源的利用率。
# 伪代码: 调度器与设备通信
# Device side (UiAutomatr.py):
# self.report_status_to_scheduler({"ip": self.ip, "power": power, "temperature": temperature, "status": "idle"})
# task = self.fetch_task_from_scheduler()
#
# Scheduler service (new component):
# def get_next_task(device_status):
# # Logic to evaluate device_status and assign tasks from a global queue
# # Example: if device_status.temperature > 45, do not assign CPU-intensive tasks.
# # if device_status.power < 20, assign charging task.
# # else, pop next task from shared queue.
# return task_data
痛点: “找图超过规定次数”和“超时”往往是脚本卡死或遇到非预期弹窗的信号。目前的处理主要是重试或重启,效率不高。
建议: 引入更高级的屏幕内容分析。例如,通过计算连续几帧截图的感知哈希(Perceptual Hash)来判断屏幕是否“静止”(可能卡死);利用 OCR 扫描屏幕上的特定关键词(“错误”、“无响应”、“广告弹窗”)来识别意外情况。一旦检测到异常,触发预设的纠正动作,如尝试点击“关闭”按钮、强制关闭应用、清除应用数据,甚至在极端情况下重启设备,并附带详细日志和截图。这能减少对人工干预的依赖。
# 伪代码: 异常检测
def monitor_screen_for_anomalies(self):
current_hash = self.get_screenshot_phash()
if self.last_hash == current_hash and (time.time() - self.last_action_time) > 10:
# 屏幕长时间未变动,可能卡死
self.log_and_screenshot("屏幕卡死异常")
self.attempt_recovery()
# OCR scan for error/ad keywords in unexpected pop-up areas
if self.ocr_scan_region_for_keywords(["广告", "领取", "错误", "无响应"]):
self.log_and_screenshot("检测到非预期弹窗")
self.click_cross_or_back()
# 可在UiAutomatr类中新增一个后台线程,定时调用此监控函数。
考虑到 Go 语言在并发处理、性能和二进制部署上的优势,以下两个方向的项目非常适合用 Go 进行重构或独立开发:
当前痛点: Python 脚本中频繁调用 subprocess.Popen 执行 ADB 命令(如 `dumpsys battery`, `install`, `shell input tap` 等)。当管理大量设备时,频繁的进程创建、I/O 阻塞和 Python GIL 可能会成为性能瓶颈,导致自动化效率下降和超时。
Go 方案: 开发一个独立的 Go 服务,作为所有 ADB 操作的中心代理。该服务可以暴露 HTTP 或 gRPC 接口,接收来自 Python 脚本的 ADB 命令请求。Go 的 goroutine 和 channel 机制能够高效地并行管理多个设备的 ADB 连接,处理命令的发送和结果的收集,避免 I/O 阻塞。例如,一个 Go 服务可以维护每个设备的 ADB 连接池,并优化命令的生命周期管理,显著提高 ADB 命令的响应速度和并发吞吐量。
当前痛点: 脚本中大量的 cv2.matchTemplate(图片匹配)和 pytesseract_pic_to_text(OCR 识别)操作是计算密集型的。这些操作在 Python 主线程中执行时,会长时间占用 CPU,影响其他 UI 自动化指令的及时响应。特别是对大量图片或复杂 OCR 场景,耗时显著。
Go 方案: 构建一个独立的 Go 图像处理微服务。Python 脚本只需将需要处理的屏幕截图(或其路径)和识别/匹配参数发送给 Go 服务。Go 服务可以利用其强大的并发能力和高性能的图像处理库(如 OpenCV 的 Go 绑定 `gocv`)在独立的 goroutine 中并行执行图片匹配、Canny 边缘检测、OCR 识别等任务,并将处理结果(如匹配坐标、识别文本)快速返回给 Python 客户端。这将把计算密集型任务从 Python 自动化脚本中分离,允许 Python 脚本更专注于 UI 逻辑和调度,大幅提升整体性能。
根据2026年06月02日 22:42:00的自动化任务报告,以下是主要发现和建议:
基于稳定性和自动化潜力,推荐以下三款App:
数据源四 提供的微众银行理财数据为 null,无法进行实际分析。为了展示报告结构和未来分析的可能性,我们在此模拟一份数据。
| 日期 | 产品名称 | 总持有金额 (元) | 较前日变化 (元) | 年化收益率 (%) |
|---|---|---|---|---|
| 2026-05-27 | 稳健增长A | 10000.00 | +0.85 | 3.15 |
| 2026-05-28 | 稳健增长A | 10000.85 | +0.92 | 3.20 |
| 2026-05-29 | 稳健增长A | 10001.77 | +0.90 | 3.18 |
| 2026-05-30 | 稳健增长A | 10002.67 | +0.95 | 3.22 |
| 2026-05-31 | 稳健增长A | 10003.62 | +0.88 | 3.19 |
| 2026-06-01 | 稳健增长A | 10004.50 | +0.91 | 3.21 |
| 2026-06-02 | 稳健增长A | 10005.41 | +0.93 | 3.23 |
| 2026-05-27 | 乐享收益B | 5000.00 | +0.40 | 2.90 |
| 2026-05-28 | 乐享收益B | 5000.40 | +0.38 | 2.88 |
| 2026-05-29 | 乐享收益B | 5000.78 | +0.35 | 2.85 |
| 2026-05-30 | 乐享收益B | 5001.13 | +0.32 | 2.80 |
| 2026-05-31 | 乐享收益B | 5001.45 | +0.28 | 2.75 |
| 2026-06-01 | 乐享收益B | 5001.73 | +0.25 | 2.70 |
| 2026-06-02 | 乐享收益B | 5001.98 | +0.20 | 2.65 |
所有理财产品中,【乐享收益B】在过去7天内年化收益率呈持续下降趋势 (从 2.90% 降至 2.65%)。尽管每日金额仍在增长,但收益率的连续下滑值得关注。
您在自动化领域表现出卓越的问题解决和优化能力。结合日记中的积极心情和自动化报告中的挑战,我给出以下综合建议:
一个自托管的、用户友好的监控工具。您可以用它来监控您的自动化服务(如 ADB Go 服务、报告生成服务)、设备(Ping 检测),甚至可以检测特定 HTTP 接口的响应状态。它提供美观的 UI 界面,支持多种通知方式(邮件、钉钉、微信、Telegram 等),帮助您及时发现并解决自动化系统中的异常,告别被动排查。
将您的任务配置(例如,每个设备的 IP、运行的任务列表、App 用户名、排除列表、任务阈值等)从 YAML 文件或硬编码中解耦,迁移到 NocoDB。它提供了类似 Airtable 的电子表格界面,可以轻松地管理和修改数据,无需编写代码。这不仅能让您的任务配置更灵活,也能方便其他团队成员或非技术人员查看和调整任务参数,实现自动化配置的“民主化”。