日记与自动化系统分析报告
报告日期: 2025年12月26日
分析对象: 个人日记、自动化脚本代码及当日自动化任务报告
一、日记内容分析
这份日记记录了2025年12月26日 星期五,恰逢双周,作者的心情是🙂 (满意/平静)。天气情况为河南正阳县 晴,温度8℃,东南风≤3级,湿度35%,天气良好,宜人。
今日主要活动与思考:
- 任务优化: "七猫免费小说看3小时小说也会提现失败,去掉这个任务" (10:40)。这表明作者在进行任务收益评估,并及时止损,放弃无效任务,体现了效率意识和决策能力。
- 物理环境改善: "把床边电脑桌加个板子托住电脑主机" (12:42)。改善工作/生活环境,提升舒适度和设备安全性,注重细节。
- 设备加固: "磷酸铁锂电池墙上木板支架增加一个,防止压坏木板" (13:42)。对重要设备进行物理保护,防患于未然,体现了安全和维护意识。
- 健康锻炼: "划船机运动,仰卧起坐" (14:48)。保持身体活动,关注个人健康。
- 设备更替: "k20的快手换到note11 ip49的手机" (15:12)。进行手机设备间的应用迁移,可能出于性能、存储或任务分配的考虑,显示了对设备资源的灵活调配。
- 任务拓展: "添加京东任务" (16:16)。不断探索新的自动化任务来源,扩大收益或管理范围,具有积极拓展和探索精神。
日记总结: 今日活动内容丰富且多元化,涵盖了任务优化、物理环境改善、健康锻炼以及自动化任务的策略调整和拓展。作者的心情为“满意”,可能源于对各项事务的有效管理和积极推进。尤其值得关注的是在自动化任务方面,体现了对无效任务的及时放弃和对新任务的积极尝试,这与自动化脚本的持续迭代优化理念高度契合。
二、自动化脚本 `UiAutomatr` 类代码分析
UiAutomatr 类是一个功能强大的移动自动化框架核心,旨在实现安卓设备的各种自动化任务,并集成了设备管理、UI交互、数据记录、错误处理及智能优化等多个模块。其设计体现了对自动化任务效率、稳定性和可维护性的高度重视。
核心功能与亮点:
- 设备连接与管理:
read(), connect_adb(): 灵活的ADB连接机制,包括对连接失败的多次重试和故障排除(如卸载uiautomator,尝试Node.js/Java通信)。
open_phone(): 智能解锁手机,包括处理密码锁。
mobile_reboot(), close_mobile(): 设备重启与关闭,用于解决卡死或节约电量。
inspect_power(), create_cron_switch(), set_fan_speed(): 结合电量和温度智能控制充电和风扇,体现了对设备硬件健康的细致管理。
process_ipv6(): 定时获取并记录设备的IPv6地址,有频率限制,避免重复写入。
- UI交互与定位:
multiple_find_picture(): 强大的多策略UI元素查找(图片、XPath、uiautomator2元素),支持多次尝试、滑动查找、区域查找及坐标百分比转换,并集成Redis缓存优化查找速度。
click(), swipe(), human_swipe(): 多种点击和滑动方式,包括模拟人手滑动的human_swipe(),增强了反检测能力。
set_past_text(), get_past_text(): 剪贴板操作,方便数据传输。
- 任务执行与数据记录:
do_task_for_list(), browse_task(): 灵活的任务执行框架,支持关键词匹配、任务排除、任务重试、奖励领取,并记录剩余任务次数,提供了高度可配置的任务流控制。
MySQLManager.write_file(), redis_manager.redis_set(): 广泛的数据日志记录到MySQL和Redis,用于任务状态、电量、温度、应用大小等,为后续分析和优化提供了丰富的数据基础。
sql_zl(), update_zl(), delete_zl(), random_dic(): 针对助力码等信息的管理和使用,支持随机排序。
- 鲁棒性与错误处理:
re_install_uiautomator(): 自动化框架自身出现问题时,尝试重新安装uiautomator以恢复服务。
tb_timeout_option(): 统一的超时处理机制,记录错误并触发UI布局截图,便于问题诊断。
allure_screen(), ui_layout(): 集成Allure报告,自动截图和记录UI布局XML,极大地提升了调试和故障排查效率。
dingmessage(), qq_email(): 多种告警通知方式,确保关键问题及时触达。
- OCR与验证码处理:
recognize_text_dddocr(), pytesseract_pic_to_text(): 集成多种OCR工具进行图片文字识别。
slider_verification(), kuai_slider_verification(), ddddocr_slider_verification(), yzm(): 针对各种滑块验证码进行图像识别与模拟滑动操作,是反自动化检测的关键能力。
- 应用管理:
uninstall_app(), clear_app(), get_appsize(), stop_background_apps(): 完整的应用生命周期管理和清理,有助于维持设备性能和存储空间。
潜在的优化与改进空间:
- 代码可读性与模块化:
multiple_find_picture() 和 do_task_for_list() 方法参数众多,逻辑复杂,可考虑拆分或使用配置对象来提高可读性和维护性。
- 硬编码值: 代码中存在一些硬编码的延迟时间(如
time.sleep(0.1))、相似度阈值(self.threshold = 0.9)和特定应用名称(self.mi_app_list),可考虑将其配置化或动态调整。
eval() 的使用: 代码中多处使用了 eval(),虽然在当前受控的环境下可能安全,但一般认为这是一种潜在的安全风险,尤其是在处理外部输入时。建议评估是否有更安全的替代方案。
- 异常处理粒度: 许多
try-except Exception as e: print(e) 的块捕获了所有异常但仅打印,未进行更精细的分类处理或更高级的告警,可能隐藏了某些特定错误。
- UI元素抽象: 对于不同的UI自动化框架(XPath、uiautomator2的`d(...)`),虽然都使用了,但如果能进一步抽象出一层,使得任务定义更独立于底层UI实现,将增强代码的通用性。
三、自动化任务报告分析
这份自动化任务报告展示了2025年12月26日当天,自动化系统在多个移动设备上执行任务的情况。总体来看,系统在多种应用中持续运行,并记录了详细的活动数据,但在设备稳定性和任务完成率方面存在一些挑战。
关键发现:
- ADB 连接失败频繁:
- 报告中记录了 13次ADB连接失败,主要表现为“Ping 状态: 不通”和“可能手机关机或卡死”。
- 受影响的设备包括:192.168.31.182 (MI 13), 192.168.31.192 (Redmi 8A), 192.168.31.176 (MI 8 Lite), 192.168.31.158 (Redmi Note 10 Pro), 192.168.31.197 (Redmi Note 11 5G), 192.168.31.109 (Redmi Note 8), 192.168.31.240 (Redmi Note 9 5G), 192.168.31.49 (Redmi Note 11 5G)。几乎所有设备都受到影响。
- 这导致连接耗时过长(普遍超过150秒),严重影响了任务的连续性和效率。
- Uiautomator 组件频繁卸载:
- “卸载软件”活动中,
com.github.uiautomator.test 和其他 Appium/Uiautomator 相关组件被频繁卸载。这很可能与ADB连接失败或设备状态不稳定有关,导致自动化框架需要反复初始化和重装。
- 点淘应用登录问题:
- 所有4个点淘相关的设备(192.168.31.158, 192.168.31.197, 192.168.31.240, 192.168.31.49)均显示“点淘需要重新登录”,这表明点淘应用的会话管理存在问题,或平台对自动化登录检测较为严格。
- 设备存储容量告警:
- 【Redmi K20】的手机容量情况显示“使用率95%(容量过小)”,并记录“共扫描1.90GB垃圾 已用 59.30GB/64GB”。这表明该设备存储空间严重不足,极可能影响系统性能和应用运行稳定性。
- 其他设备如【MI 8 SE】快手极速版 26.5GB, 【Redmi Note 10 Pro】趣头条 16.7GB, 微信 9.4GB, 【Redmi Note 11 5G】微信 11.3GB 抖音极速版 5.0GB 等也显示有大容量应用,需要关注。
- 剩余任务跟踪:
- “剩余任务次数”活动详细列出了未完成的任务,例如支付宝芭芭农场、淘宝集汗滴、菜鸟免费领水果等,并给出了返回关键字。这表明系统能够有效追踪任务进度,但仍有部分任务未能完全自动化完成。
- 手机电量与温度:
- 大多数设备的电量和温度数据正常,部分设备在电量过低时触发了充电,显示电量管理机制在发挥作用。
- 【Redmi 8A】在执行拼多多任务时显示
self.z=5,这可能意味着该任务在该设备上经历了多次重试或超时。
- 多样化的任务执行: 系统成功执行了小米应用商店红包、快手金币、淘粉吧金币、趣头条金币、支付宝/饿了么相关任务、微信总资产、闲鱼币、省钱购等多种任务,体现了系统的广泛适用性。
四、创新想法和建议
A. 针对当前问题的即时行动建议:
- 彻底排查 ADB 连接失败原因:
- 网络稳定性: 检查设备连接的Wi-Fi网络信号强度、稳定性,或尝试将部分设备切换到有线ADB连接(如果硬件支持),排除网络干扰。
- ADB Server 稳定性: 监控ADB Server进程,确保其不会频繁崩溃或被操作系统终止。考虑定期重启ADB Server。
- 设备状态: 针对“Ping 不通”的设备,检查其是否进入深度休眠、死机或意外关机。增加物理电源控制的鲁棒性,例如在长时间无响应后自动进行物理断电重启。
- Uiautomator 重装优化: 优化
re_install_uiautomator 逻辑,识别并区分是连接问题导致的重装还是版本不兼容导致的重装,并减少不必要的重装尝试。
- 加强存储空间管理:
- 智能清理策略: 针对【Redmi K20】等存储不足的设备,立即执行更积极的应用缓存清理。对于“应用大小排行”中识别出的超大应用(如快手极速版 26.5GB, 趣头条 14.9GB, 微信 10.5GB),应优先对其进行数据清理或重新评估其自动化价值。
- 基于使用率的自动卸载: 识别长时间未用且占用空间大的应用,在达到存储阈值时进行自动卸载(需配置白名单)。
- 解决点淘应用登录频繁问题: 深入分析点淘应用被检测为自动化的机制或其会话管理特点。可以尝试:
- 增加登录前的随机延迟和用户行为模拟。
- 在登录流程中增加更多验证,如OCR验证码处理。
- 探索使用Cookie/Token保持登录状态而非每次重新输入账号密码。
- 优化任务重试机制: 针对【Redmi 8A】拼多多任务中出现的
self.z=5,调查具体失败原因,优化重试逻辑,例如,在特定失败类型下尝试不同的UI操作路径或更长时间的等待。
B. 对 `mobile` 仓库的创新想法和建议 (Code & Architecture Level):
结合代码的现有能力和报告中发现的问题,可以引入以下创新以构建更智能、更自适应的移动自动化系统:
1. 智能自适应任务调度与执行引擎:
- 任务价值与风险评估: 为每个任务引入“收益权重”和“失败风险”参数。调度器根据这些参数动态调整任务执行顺序和频率,例如优先执行高收益低风险任务,或在多次失败后降低某任务的优先级。
- A/B测试任务路径: 对于容易失败的任务,可以预设多个自动化路径(例如,针对同一按钮,尝试不同的XPath或图片定位),系统在执行过程中根据成功率智能选择最佳路径,实现“自愈合”自动化。
- 动态资源调配: 根据设备电量、温度、存储和CPU负载,动态调整任务并发度或任务类型。例如,在设备过热时暂停所有CPU密集型任务,只执行轻量级任务。
2. 高级设备健康管理与预防:
- 预测性维护: 基于历史电量消耗数据,预测设备何时会达到低电量阈值,并提前启动充电或将任务迁移到其他设备。
- “幽灵进程”检测与清理: 除了已知的后台应用,开发一个机制检测异常CPU/内存占用,并强制停止这些“幽灵进程”,维持设备性能。
- 智能存储碎片整理与优化: 定期分析应用存储数据,不仅是清理缓存,还可以识别并删除无用的大文件(例如过期下载、日志文件),确保存储高效利用。
3. 强化反自动化检测与智能识别:
- 行为模拟器: 引入更复杂的随机性,不仅仅是延迟,还包括点击位置的微小偏移、滑动速度的变化、滑动曲线的模拟(例如,并非直线滑动)。
- 多模态验证码应对: 针对不同类型的验证码(文字、图形、滑块、点选),自动选择最佳的OCR或图像识别模型。可以引入模型选择器,根据验证码的特点动态加载。
- 环境指纹伪造: 模拟设备特征(如屏幕分辨率、DPI、电池状态等)的细微变化,使每个自动化实例看起来更像独立的用户。
4. 知识图谱与任务学习:
- 任务分解与关联: 构建一个任务知识图谱,将复杂的任务分解为更小的原子操作,并记录这些原子操作的成功率、耗时和依赖关系。
- 失败模式识别: 利用机器学习分析任务失败日志,自动识别常见的失败模式(例如,“元素未找到”经常发生在某个页面),并建议可能的解决方案或触发预设的补救措施。
- 任务模板化与参数化: 允许用户通过图形界面创建和修改任务模板,将特定应用的自动化步骤封装为可复用的模块,降低新任务开发的门槛。
C. 创意工具想法:“Mobile Farm 智控中心” (Web-based)
设想一个基于Web的“Mobile Farm 智控中心”,它将现有的自动化能力可视化、智能化,并提供用户友好的交互界面,将底层复杂的代码操作封装起来。
核心概念:
通过一个直观的Web界面,用户可以实时监控所有自动化手机的运行状态,并通过拖拽、配置的方式构建新的自动化任务,实现“人人皆可自动化”的目标。
功能模块:
- 实时设备看板:
- 仪表盘: 以卡片形式展示每个手机的关键指标:电量、温度、存储使用率、CPU/内存负载、当前运行应用、ADB连接状态、网络状况(包括IPv6)。
- 健康预警: 实时告警通知(如电量过低、存储不足、ADB掉线、任务长时间未响应),通过颜色编码和弹窗提示。
- 操作按钮: 每个设备卡片旁提供快捷操作:重启、关机、清理缓存、截屏、获取日志、开启/关闭性能模式。
- 可视化任务编辑器("Task Composer"):
- 拖拽式流程构建: 提供一系列预定义的“自动化动作块”(例如:“打开应用”、“点击文本”、“滑动”、“等待”、“OCR识别”、“输入文本”、“条件判断”、“循环”等)。用户通过拖拽这些块到画布上,连接它们形成任务流程。
- “录制-回放”功能: 用户连接一个手机,在手机上进行一次手动操作流程,系统会自动记录UI事件(点击、滑动、文本输入),并生成对应的任务流程图和代码块,极大简化任务创建。
- 参数化与变量管理: 支持在任务中使用变量和参数(例如:登录账号、任务执行次数、滑动距离),方便任务的复用和定制。
- 实时预览与调试: 在任务编辑时,可以在模拟器或真实设备上实时预览任务执行效果,并进行单步调试。
- 任务调度与监控:
- 智能调度: 用户可以设置任务的执行时间、频率、优先级、并发设备数,系统根据设备健康状况和任务优先级进行智能分配。
- 任务日志与报告: 提供详细的任务执行日志,可视化展示任务成功率、失败原因分布、耗时分析等,并生成可下载的报告(如Allure报告)。
- 失败重试策略: 针对特定任务或失败类型,配置不同的重试逻辑(如重试次数、间隔时间、失败后切换到备用路径)。
- 应用商店与工具箱:
- 应用管理: 列出所有手机已安装和可安装的应用,支持一键安装、卸载、清理数据。
- 固件与系统工具: 提供固件版本管理、ADB Shell命令快捷执行、Accessibility服务开关等高级工具。
- 智能预警与优化建议:
- AI分析师: 基于历史任务数据和设备状态,利用AI模型分析系统瓶颈,例如:哪个任务总是失败、哪个设备总是掉线、哪个应用消耗资源最多,并主动给出优化建议。
- 风险预测: 预测设备存储即将满、电池健康下降等潜在问题,并提前发出警告。
技术栈设想:
- 前端: Vue.js / React (实现交互式Web UI)、Vue Flow / React Flow (用于可视化任务编辑器)。
- 后端: Python (FastAPI / Flask,轻量级、高性能API),与现有的 `UiAutomatr` 脚本交互,并管理任务队列、设备状态、日志等。
- 实时通信: WebSocket (如 Socket.IO),实现前后端的实时数据传输和命令发送。
- 数据库: 沿用现有 MySQL (日志存储) 和 Redis (实时状态、缓存)。
- 容器化: 使用 Docker 部署,方便环境搭建和扩展。
通过“Mobile Farm 智控中心”,用户可以更高效、更智能地管理和扩展自动化任务,将精力从繁琐的脚本维护中解放出来,专注于策略的优化和价值的创造。