自动化不是“让脚本随便点击手机”。一个可靠的宏应有明确触发器、执行约束、最少动作、退出动作和随时可用的急停。本篇用 MacroDroid 或 Tasker 构建“连接自家 Wi-Fi 后进入专注模式”,只调整媒体音量、显示通知并打开待办 App,不碰账号、支付、考勤或第三方平台。
你会完成什么#
- 把需求写成触发器、约束、动作、退出和急停五部分。
- 保存原媒体音量,只在私人 Wi-Fi、指定时段和已解锁状态执行。
- 离开网络时恢复原值,并用日志证明宏没有循环触发。
- 模拟同名 Wi-Fi、来电和手动急停,确认自动化能安全失败。
先看结论#
| 你的需求 | 建议路线 | 原因 |
|---|---|---|
| 第一次做图形化自动化 | MacroDroid | 触发器—动作—约束结构直观 |
| 需要复杂变量和任务复用 | Tasker | Profile、Task 和变量更灵活 |
| 需要操作自有 App 的 UI 控件 | 学会基础状态机后再考虑 AutoJs6 | Accessibility 权限敏感,UI 也容易变化 |
| 系统已有原生“规则/模式” | 优先原生功能 | 权限更少、系统升级后更稳定 |
| 目标是刷分、考勤、抢购或验证码 | 不自动化 | 账号、合规和误操作风险不可接受 |
心智模型#
状态:未连接家庭 Wi-Fi
↓ 连接事件
检查:SSID + 时间 + 已解锁 + 非通话
├─ 不满足 → 什么也不做
└─ 满足 → 保存原音量 → 通知 → 调低音量 → 打开待办
↓
离开 Wi-Fi / 超时 / 急停
↓
恢复原音量 → 写日志
触发器是瞬间事件,约束决定那一刻是否允许执行;退出动作负责撤销影响。把“连接事件”和“当前仍连接”混为一谈,常会造成重复执行或无法恢复。
工具清单#
| 工具 | 角色 | 什么时候用 | 来源与注意 |
|---|---|---|---|
| MacroDroid | 图形化触发器、动作和约束 | 本篇首选 | 某些动作随 Android 版本受限;只用普通权限动作 |
| Tasker | Profile、Task、变量与运行日志 | 需要更复杂状态时 | 初次先关闭 Beginner Mode 以外的高级 Shell 能力 |
| Android 原生模式/规则 | 低权限替代 | 系统已能按时间/地点切换时 | OEM 功能不同,但通常更稳定 |
| AutoJs6 | UI 选择器与 JavaScript 自动化 | 确有自有 UI 操作需求时 | 可能使用 Accessibility/Shizuku;本篇不授权 |
| OpenRing | 本机 AccessibilityService RPA 工作流 | 研究可视化 RPA 时 | 高敏权限,不能接触密码和支付窗口 |
| 系统通知/快捷方式 | 可见状态和急停入口 | 每个宏都应提供 | 急停必须无需 Root、无需进入脚本编辑器 |
项目全景:免 Root 自动化与控制的 9 个项目,一个不漏#
围绕“触发器—观察界面—执行动作—验证结果”写一篇无 Root 自动化入门,把 Auto.js/Hamibot、无障碍 RPA、端侧 AI Agent 和 ADB/LADB 配置串成四条能力路线,并提醒账号平台规则。
| 技术路线 | 项目数 | 处理等级 | 在主题任务中的位置 |
|---|---|---|---|
| Auto.js/Hamibot 脚本任务 | 4 | 候选路线 | 用定时消息和学习类脚本解释选择器、定时器与异常弹窗处理;只在自有账号和允许的任务上测试,明确答题、刷分、续火等可能违反服务条款。 |
| 无障碍 RPA 与可视工作流 | 2 | 候选路线 | 用 OpenRing 和同类插件展示纯端侧工作流的录制、重放、条件分支与停止按钮,强调无障碍权限能读取界面内容,必须最小授权。 |
| 端侧 AI Agent 与 LADB 控制 | 2 | 候选路线 | 说明 droidrun-agent、AutoGLM 一类方案如何把自然语言转为受限动作,要求动作预览、敏感操作二次确认、日志脱敏和随时撤销无线调试授权。 |
| ADB 网络参数与可回滚配置 | 1 | 候选路线 | 用 AxManager 网络优化条目说明 ADB 配置型自动化:导出原值、应用一个配置、观察信号和网络稳定性,再一键恢复;不承诺通用提速。 |
1. Auto.js/Hamibot 脚本任务 · 4#
用定时消息和学习类脚本解释选择器、定时器与异常弹窗处理;只在自有账号和允许的任务上测试,明确答题、刷分、续火等可能违反服务条款。
本组共 4 项:3 个源项目、1 个 Fork,其中 0 项已归档。新手应先从“未归档的源项目”核对 README 和 Release,再用 Fork 追溯设备适配或历史差异;分组本身不等于推荐安装。
| 项目 | 上游定位与识别信号 | 状态与采用前检查 |
|---|---|---|
| dundunnp/auto_xuexiqiangguo | 主题用途:将 dundunnp/auto_xuexiqiangguo 纳入「Auto.js/Hamibot 脚本任务」候选路线,根据 auto · hamibot · qiangguo · JavaScript 核对功能、平台与版本适配。 上游自述(保留原文):学习强国 每日拿满61分!免root 四人赛双人对战秒答 自动化脚本 | 未归档源项目 · ★ 2505 · MIT · 2023-06-02。边界命中:先读 README,确认它确实属于当前任务,再决定是否使用。 |
| sec-an/Better-Auto-XXQG | 主题用途:将 sec-an/Better-Auto-XXQG 纳入「Auto.js/Hamibot 脚本任务」候选路线,根据 JavaScript 核对功能、平台与版本适配。 上游自述(保留原文):学习强国 基于Auto.js实现的学习助手 免root 适配安卓 自动化脚本 热更新 | 未归档源项目 · ★ 671 · GPL-2.0 · 2023-04-20。边界命中:先读 README,确认它确实属于当前任务,再决定是否使用。 |
| McMug2020/hamibot-auto_xuexiqiangguo | 主题用途:将 McMug2020/hamibot-auto_xuexiqiangguo 纳入「Auto.js/Hamibot 脚本任务」候选路线,根据 auto · hamibot · qiangguo · JavaScript 核对功能、平台与版本适配。 上游自述(保留原文):每日56分(满56分)!所有模块均可自动完成,免root,四人赛双人对战秒答,基于Hamibot的安卓端学习强国自动化脚本 | 未归档 Fork · ★ 101 · MIT · 2023-06-04。Fork:采用前先与上游比较提交、Release 和维护者说明。 |
| KID-1912/autojs6-douyin-sendMessage | 主题用途:将 KID-1912/autojs6-douyin-sendMessage 纳入「Auto.js/Hamibot 脚本任务」候选路线,根据 autojs · autojs6 · douyin · JavaScript 核对功能、平台与版本适配。 上游自述(保留原文):基于autojs6实现抖音定时发送消息、表情到指定好友以实现单方面续火花;无需Root、支持解锁、自动关闭部分弹窗 | 未归档源项目 · ★ 78 · 协议未声明 · 2024-03-15。边界命中:先读 README,确认它确实属于当前任务,再决定是否使用。 |
2. 无障碍 RPA 与可视工作流 · 2#
用 OpenRing 和同类插件展示纯端侧工作流的录制、重放、条件分支与停止按钮,强调无障碍权限能读取界面内容,必须最小授权。
本组共 2 项:2 个源项目、0 个 Fork,其中 0 项已归档。新手应先从“未归档的源项目”核对 README 和 Release,再用 Fork 追溯设备适配或历史差异;分组本身不等于推荐安装。
| 项目 | 上游定位与识别信号 | 状态与采用前检查 |
|---|---|---|
| zhyaoqi/platformautoplug | 主题用途:将 zhyaoqi/platformautoplug 纳入「无障碍 RPA 与可视工作流」候选路线,根据 Java 核对功能、平台与版本适配。 上游自述(保留原文):基于android的无障碍服务免root的可以自动刷抖音快手等平台的薅羊毛插件,仅用于技术交流 | 未归档源项目 · ★ 22 · 协议未声明 · 2020-07-18。边界命中:先读 README,确认它确实属于当前任务,再决定是否使用。 |
| SunZhi-Will/OpenRing | 主题用途:将 SunZhi-Will/OpenRing 纳入「无障碍 RPA 与可视工作流」候选路线,根据 Kotlin 核对功能、平台与版本适配。 上游自述(保留原文):A Lightweight On-Device RPA Workflow Engine based on Android AccessibilityService Executes entirely on the phone, no PC backend required, no Root access needed | 未归档源项目 · ★ 19 · MIT · 2026-06-21。活跃候选:先核对 README、最新 Release、目标版本与已知问题。 |
3. 端侧 AI Agent 与 LADB 控制 · 2#
说明 droidrun-agent、AutoGLM 一类方案如何把自然语言转为受限动作,要求动作预览、敏感操作二次确认、日志脱敏和随时撤销无线调试授权。
本组共 2 项:2 个源项目、0 个 Fork,其中 0 项已归档。新手应先从“未归档的源项目”核对 README 和 Release,再用 Fork 追溯设备适配或历史差异;分组本身不等于推荐安装。
| 项目 | 上游定位与识别信号 | 状态与采用前检查 |
|---|---|---|
| qs-lll/Open-AutoGLM-ZHIAI | 主题用途:将 qs-lll/Open-AutoGLM-ZHIAI 纳入「端侧 AI Agent 与 LADB 控制」候选路线,根据 Kotlin 核对功能、平台与版本适配。 上游自述(保留原文):基于AutoGLM的 Android 自动化框架,集成 LADB 实现无 Root 智能控制 | 未归档源项目 · ★ 11 · 协议未声明 · 2025-12-25。边界命中:先读 README,确认它确实属于当前任务,再决定是否使用。 |
| hanxi/droidrun-agent | 主题用途:将 hanxi/droidrun-agent 纳入「端侧 AI Agent 与 LADB 控制」候选路线,根据 ai-agent · android · mcp-server · Python 核对功能、平台与版本适配。 上游自述(保留原文):无需ROOT,无需ADB,让AI控制你的安卓手机 | 未归档源项目 · ★ 8 · MIT · 2026-03-17。边界命中:先读 README,确认它确实属于当前任务,再决定是否使用。 |
4. ADB 网络参数与可回滚配置 · 1#
用 AxManager 网络优化条目说明 ADB 配置型自动化:导出原值、应用一个配置、观察信号和网络稳定性,再一键恢复;不承诺通用提速。
本组共 1 项:1 个源项目、0 个 Fork,其中 0 项已归档。新手应先从“未归档的源项目”核对 README 和 Release,再用 Fork 追溯设备适配或历史差异;分组本身不等于推荐安装。
| 项目 | 上游定位与识别信号 | 状态与采用前检查 |
|---|---|---|
| ScarletHanami/Network_Enhance | 主题用途:将 ScarletHanami/Network_Enhance 纳入「ADB 网络参数与可回滚配置」候选路线,根据 5g · adb · android · Shell 核对功能、平台与版本适配。 上游自述(保留原文):AxManager 免Root网络优化模块 / 5G假满格自动降级4G / 游戏模式锁定LTE防4G+跳频 / 多品牌兼容 | 未归档源项目 · ★ 7 · MIT · 2026-07-18。边界命中:先读 README,确认它确实属于当前任务,再决定是否使用。 |
开始前#
选择你自己的私人 Wi-Fi,并准备一个无需登录的待办或记事 App。记录当前媒体音量;关闭同类宏,避免两个自动化同时修改音量。创建一个主屏幕快捷方式或常驻通知,用于禁用本宏。
本教程不需要 Accessibility、Shizuku、Root、设备管理、读取短信或通知内容。若工具为这个任务请求这些权限,拒绝并重新检查所选动作。SSID 可暴露位置,不在截图或共享模板中公开。
操作步骤#
1. 写下状态与回滚值#
把宏命名为 Home Focus Lab。创建变量 old_media_volume 和 focus_active。手动将媒体音量设为一个易识别值,读取并保存为 old_media_volume;focus_active 初始为 false。
先建立独立的 Stop Home Focus 任务:如果 focus_active 为 true,就恢复 old_media_volume、设为 false、写入“manual stop”日志。把它放到主屏幕或通知按钮。
2. 建立触发器与约束#
触发器选择“连接到 Wi-Fi”,SSID 精确匹配自家网络;不要只用“任何 Wi-Fi”。添加时间 18:00–23:00、设备已解锁、非通话中,以及 focus_active 为 false 的约束。
若工具支持 AND/OR 嵌套,确保四个条件都是 AND。先把动作替换为“显示测试通知”,连接/断开一次,确认只触发一回。
3. 添加最小动作#
触发后先再次保存当前媒体音量,再设 focus_active 为 true。显示“Home Focus active — tap to stop”通知,将媒体音量调到温和值,并打开待办 App。不要自动点击 App 内按钮。
在任务尾部写一条包含时间、触发 SSID 和结果的本地日志。设置任务最大运行时长;若打开 App 失败,也要继续到日志并保留急停可用。
4. 添加退出动作和急停#
创建“断开指定 Wi-Fi”触发的退出任务。它只在 focus_active 为 true 时恢复 old_media_volume、取消状态通知、设变量 false,并记录“network exit”。
测试主屏幕急停:宏激活后不离开 Wi-Fi,手动点击 Stop Home Focus。音量应恢复,后续断开网络不应再次错误覆盖音量。
5. 做故障演练并回滚#
依次测试:时间不在范围、屏幕锁定、来电中、连接一个同名但不同标识的测试热点,以及快速断开/重连。前三项必须不执行;同名网络提醒你 SSID 不是强身份,敏感自动化还应结合可信网络标识或改用手动确认。
实验完成后禁用宏,删除快捷方式和测试日志;若决定保留,先导出配置并在名称中标明版本与日期。
验证#
| 检查项 | 成功标准 | 失败表现 |
|---|---|---|
| 正常进入 | 指定条件满足时只执行一次 | 每次网络事件都重复打开 App |
| 约束 | 锁屏、通话或时段外不执行 | 任一约束被忽略 |
| 退出 | 离开网络后恢复准确原音量 | 使用固定音量覆盖用户后续修改 |
| 急停 | 不断网也能一键恢复并写日志 | 必须先打开编辑器或授权 Root |
| 日志 | 每次进入/退出/急停有单条记录 | 无限循环或同一秒多条重复 |
排错#
| 现象 | 常见原因 | 安全处理 |
|---|---|---|
| 宏连接后不触发 | SSID 权限、位置开关或后台限制 | 按工具官方说明授予最小必要权限,不加 Accessibility |
| 连续触发多次 | 缺少 focus_active 锁或网络抖动 | 加状态变量与冷却时间,不用长循环 |
| 音量没有恢复 | 退出任务未运行或原值被覆盖 | 先用急停恢复,再检查保存原值的顺序 |
| 锁屏仍打开 App | 缺少“已解锁”约束 | 立即禁用宏并补约束,勿自动解锁 |
| 同名热点误触发 | SSID 不是可信身份 | 对敏感动作要求手动确认或更多本地条件 |
完成清单#
- 我把自动化拆成触发、约束、动作、退出和急停。
- 我保存并能准确恢复原媒体音量。
- 我没有授予 Accessibility、Root、Shizuku 或无关敏感权限。
- 我验证了时段外、锁屏和通话中不会执行。
- 我测试了断网退出与独立急停。
- 我检查了日志没有循环,并导出或删除了实验配置。