1. 项目概述用AI与Telegram远程控制你的安卓手机如果你曾经想过能不能像科幻电影里那样用自然语言远程指挥自己的手机让它帮你查信息、发消息、甚至调整设置那么这个项目可能就是为你准备的。今天要聊的是一个名为OpenClaw-Termux-NoRoot的开源项目。它的核心目标非常酷让你通过一个Telegram聊天机器人用日常说话的方式控制你身边那台安卓手机而且整个过程不需要手机获取Root权限。想象一下这个场景你的手机正在客厅充电而你躺在卧室的床上。你想知道手机还剩多少电或者想让它播放点音乐又或者需要它给某个联系人发条紧急短信。你不需要起身去找手机只需要在Telegram里对你的专属机器人说一句“电池还有多少”或者“给张三发短信说我晚点到”。几秒钟后手机就会执行你的指令并将结果反馈给你。这听起来像是未来科技但借助OpenClaw一个AI网关、Shizuku一个获取高级权限的框架和Termux一个安卓上的Linux终端模拟器的组合这个想法已经变成了现实。这个方案最大的亮点就是“No Root”。对于绝大多数普通用户来说给手机Root获取最高管理员权限是一个门槛高、风险大且可能导致失去保修的操作。而本项目巧妙地利用了Android系统自带的“无线调试”功能和Shizuku框架在用户授权下临时获得了类似ADBAndroid调试桥的权限级别从而能够执行许多系统级操作。再通过Termux运行一个后台服务将Telegram机器人的指令经由Gemini AI理解后转化为具体的手机操作命令。整个过程安全、可控且完全在用户自己的设备上运行隐私数据不会上传到第三方服务器。接下来我将以一个实际部署者的视角带你从头到尾拆解这个项目的实现原理、详细部署步骤、使用技巧并分享我在搭建和测试过程中遇到的各种“坑”以及解决之道。无论你是热衷于折腾的极客还是仅仅想体验一下便捷远程控制的普通用户这篇指南都将提供足够清晰的路径。2. 核心组件与工作原理深度解析在动手安装之前理解这套系统是如何协同工作的至关重要。这不仅能帮助你在遇到问题时快速定位也能让你明白每个步骤的意义而不是机械地复制命令。2.1 权限基石Shizuku是如何实现“无Root”控制的Shizuku是这个项目的灵魂它解决了最核心的权限问题。在Android系统中许多高级操作如开关Wi-Fi、获取已安装应用列表、发送短信等需要系统级权限。传统上只有系统应用或拥有Root权限的应用才能做到。Shizuku的工作原理可以类比为“临时性的、用户授权的ADB”。ADB是谷歌官方提供的调试工具当通过USB连接电脑并开启调试模式后电脑就可以向手机发送高级命令。Shizuku的核心思想是既然用户可以通过ADB授权电脑控制手机那么为什么不能授权手机上的另一个应用呢启动过程当你按照指引在开发者选项中开启“无线调试”后你的手机就在本地网络开放了一个调试端口。Shizuku应用通过配对码连接到这个端口从而获得了ADB Shell的上下文环境。权限注入Shizuku启动一个服务这个服务运行在较高的权限级别下。其他应用比如我们将在Termux中运行的服务可以通过与Shizuku服务通信来请求执行那些需要特权才能运行的命令。用户可控整个流程始于用户在开发者选项中的主动开启和配对授权。Shizuku的运行状态清晰可见用户可以随时在Shizuku应用中停止它。这比一劳永逸的Root权限要安全得多因为它需要每次重新授权或每次重启后重新启动。在OpenClaw-Termux项目中Termux环境通过执行一个名为rish的命令来利用Shizuku的权限。rish就像是Shizuku权限环境下的一个Shell所有通过它执行的命令都具备了更高的权限。注意Shizuku的权限生命周期与无线调试会话绑定。如果手机重启或无线调试被关闭Shizuku会停止运行需要你重新按步骤启动。这是无Root方案下的正常情况并非错误。2.2 大脑Gemini AI如何理解你的自然语言OpenClaw本身是一个AI网关它在本项目中的核心作用是“翻译”。你发送给Telegram机器人的是“打开微信并给妈妈发个生日快乐”而手机需要执行的是am start -n com.tencent.mm/.ui.LauncherUI和一系列模拟点击、输入操作。这两者之间的鸿沟就由Gemini AI来填补。指令解析与结构化OpenClaw会将你的自然语言指令连同一些上下文比如当前设备信息、可用的命令列表一起发送给Gemini AI的API。AI的任务是将这句口语化指令解析成一个结构化的“意图”Intent和“参数”Parameters。输入“电池还有多少”AI解析结果示例{“intent”: “get_battery_status”, “parameters”: {}}映射到具体操作OpenClaw内部预置了一个“技能”Skills库。每个技能对应一个可执行的操作例如get_battery_status这个意图会映射到执行dumpsys battery命令并解析其输出的技能上。执行与反馈OpenClaw调用对应的技能技能通过rish命令在Shizuku权限下执行具体的ADB命令或脚本获取结果如“电池电量 78%”再将这个结果通过OpenClaw返回给Telegram机器人最后由机器人发送给你。这个过程实现了真正的自然语言交互。你不需要记忆任何命令格式像聊天一样下达指令即可。Gemini API目前有免费的额度对于个人低频使用完全足够这也是项目成本极低的原因之一。2.3 运行环境Termux的角色与重要性Termux在这里扮演了“服务器”或“主机环境”的角色。虽然我们的控制端是Telegram但处理指令的“大脑”OpenClaw服务需要有一个常驻运行的地方。它需要安装Node.js运行环境、Python脚本、以及持续监听Telegram的更新。完整的Linux环境Termux提供了一个近乎完整的Linux环境允许我们使用apt包管理器安装Node.js, Python, git等必要工具。这是在没有Root的手机上运行自定义后台服务的最佳方案。后台运行能力通过Termux我们可以使用tmux或termux-services等工具让OpenClaw网关服务在后台持续运行即使你关闭了Termux的终端窗口。文件系统访问Termux可以通过termux-setup-storage命令获取访问手机内部存储的权限这对于脚本读取Shizuku导出的关键文件、保存截图等操作是必需的。重要提醒务必从F-Droid安装Termux。Google Play Store上的版本已经停止更新且无法正常使用apt更新软件源会导致后续安装依赖失败。这是新手最容易踩的第一个坑。2.4 通信桥梁Telegram Bot的简易与高效选择Telegram Bot作为控制前端是一个非常巧妙且实用的设计。跨平台Telegram几乎全平台可用Android, iOS, PC, Web这意味着你可以用任何设备控制你的手机。无需公网IP或复杂内网穿透Telegram的消息通过Telegram服务器中转。你的手机Termux服务只需要能主动连接互联网即可接收指令无需拥有固定的公网IP地址或配置繁琐的端口映射。这极大地简化了部署难度。天然的安全层通信基于Telegram的加密协议。你的Bot Token是唯一凭证只要不泄露他人就无法控制你的Bot。你可以随时在聊天中停止Bot或撤销Token。整个系统的工作流程可以总结为Telegram指令输入 - OpenClaw接收并调用AI - Gemini AI解析意图 - OpenClaw映射到技能 - Termux通过rish执行 - Shizuku提供权限 - Android System执行操作 - 原路返回结果。3. 从零开始的详细部署指南理解了原理我们开始动手。请严格按照步骤操作我会在每个环节补充官方文档可能未提及的细节和注意事项。3.1 前期准备环境与账号检查在开始安装脚本之前请确保以下四项准备工作万无一失。3.1.1 安卓设备要求系统版本Android 11 或更高。这是Shizuku通过无线调试启动所必需的最低版本。你可以在设置 - 关于手机 - Android版本中查看。开发者选项确保你知道如何开启。通常是在设置 - 关于手机 - 版本号上连续点击7次。网络环境手机需要连接到一个Wi-Fi网络并且这个网络允许设备间通信通常的家用网络都可以。因为无线调试和Termux安装依赖都需要联网。3.1.2 获取Telegram Bot Token在Telegram中搜索并联系BotFather。发送/newbot指令。根据提示为你的机器人起一个显示名称如My Phone Assistant和一个唯一的用户名必须以bot结尾如my_phone_assistant_bot。创建成功后BotFather会发给你一串类似1234567890:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw的令牌。务必妥善保存这串Token它是控制你机器人的钥匙。你可以随时通过/token指令重新获取。3.1.3 获取Gemini API Key用你的谷歌账号访问 Google AI Studio 。点击“Create API Key”按钮。选择一个已有的谷歌云项目或创建一个新的免费。创建成功后你会看到你的API Key形如AIzaSyB_1x...。复制并保存它。实操心得建议为这个项目单独创建一个谷歌云项目方便日后管理配额和查看使用量。免费额度通常足够个人日常使用。3.1.4 安装必备应用安装F-Droid如果你的手机没有F-Droid先从其官网下载并安装。这是获取正确定义Termux的可靠来源。安装Termux在F-Droid中搜索“Termux”选择由termux团队发布的应用进行安装。绝对不要从Google Play安装。安装Shizuku同样在F-Droid中搜索“Shizuku”进行安装。你也可以从Play Store安装但F-Droid版本通常更新更及时。3.2 核心配置启动Shizuku与导出文件这是整个流程中最关键且容易出错的一步请仔细阅读。启用无线调试并配对进入设置 - 系统 - 开发者选项。找到并开启“无线调试”。点击“无线调试”进入详情页然后点击“使用配对码配对设备”。屏幕上会显示一个6位数的配对码和IP地址端口如192.168.1.100:40447。启动Shizuku打开Shizuku应用。你应该能看到一个“通过无线调试启动”的选项下方显示了配对的IP和端口。点击“输入配对码”输入上一步看到的6位数密码。配对成功后回到Shizuku主界面点击大大的“启动”按钮。如果一切顺利顶部会显示“Shizuku正在运行 vXX.X”的字样。为终端应用导出文件关键步骤在Shizuku应用内找到并点击“使用Shizuku的终端应用”或类似名称的选项。点击“导出文件”。这时系统文件管理器会弹出。你需要在手机的内部存储根目录即/storage/emulated/0下创建一个名为Shizuku首字母S大写的新文件夹然后进入这个文件夹点击“保存”。Shizuku会将几个关键文件包括rish_shizuku.dex和copy.sh复制到这个文件夹中。踩坑记录很多失败案例都源于这一步。文件夹名称必须完全一致包括大小写。如果保存在“下载”目录或其他地方后续脚本会找不到文件。Termux通过一个特定的路径 (~/storage/shared/Shizuku/) 来访问这个文件夹路径错误会导致rish: command not found错误。3.3 一键安装与初始化运行自动化脚本准备工作全部就绪后我们进入Termux进行操作。首次启动Termux与基础更新打开Termux应用。首次运行它会进行一些初始化。首先更新软件包列表这是一个好习惯pkg update pkg upgrade -y如果提示是否继续输入y并按回车。运行一键安装脚本这是项目作者提供的便利脚本。在Termux中直接粘贴并执行以下命令curl -sL https://raw.githubusercontent.com/jarvesusaram99/Openclaw-Termux-NoRoot/main/auto_setup.sh | bash这个脚本会自动完成以下工作安装必要的依赖如nodejs-lts,python,git,tmux等。从GitHub克隆openclaw-android项目代码。安装Node.js项目的依赖包 (npm install)。运行termux-setup-storage为你授予存储权限弹窗请点击允许。尝试从~/storage/shared/Shizuku/目录复制关键的rish可执行文件到Termux的$PREFIX/bin目录。整个过程需要几分钟取决于你的网络速度。请保持耐心并留意是否有明显的报错如网络超时。配置凭证安装脚本跑完后首先运行初始化命令openclaw onboard这个命令会引导你进行初始设置。首先会要求你输入Telegram Bot Token。将之前从 BotFather 那里获得的Token粘贴进去。接下来添加Gemini API Key。使用以下命令格式将YOUR_GEMINI_KEY_HERE替换为你的真实Keyopenclaw auth add google --key AIzaSyB_1x...你可以通过openclaw auth list命令来验证密钥是否添加成功。3.4 启动服务与首次测试配置完成后就可以启动网关服务了。启动OpenClaw网关在Termux中输入openclaw gateway如果看到类似OpenClaw gateway is running on port 3000或Bot is starting...的提示并且没有立即报错退出说明服务正在启动。在Telegram中进行首次对话在Telegram中搜索你创建的机器人用户名如my_phone_assistant_bot。点击Start或发送/start来启动对话。尝试发送一些简单的命令例如电池电量打开设置现在几点稍等片刻你应该会收到来自机器人的回复内容是你的手机执行命令后的结果。恭喜至此最基本的远程控制通道已经打通。你现在可以用自然语言指挥你的手机完成一系列基础操作了。4. 高级使用技巧与命令扩展基础功能运行稳定后我们可以探索更多玩法让这个工具变得更加强大和贴合个人使用习惯。4.1 实现服务后台常驻目前openclaw gateway命令是在前台运行的一旦关闭Termux窗口或SSH连接断开服务就停止了。我们需要让它后台运行。方法一使用tmux推荐Tmux是一个终端复用器可以让你在后台运行会话。在Termux中安装tmux如果一键脚本没装pkg install tmux -y新建一个tmux会话tmux new -s openclaw在这个新会话中启动网关openclaw gateway按下CtrlB然后松开再按D键。这会将会话分离detach使其在后台运行。你可以安全地关闭Termux。下次需要查看日志或管理时只需打开Termux并输入tmux attach -t openclaw即可重新接入。方法二使用termux-services和sv这是一个更系统化的后台服务管理方式。安装服务支持pkg install termux-services -y由于OpenClaw没有现成的服务脚本我们需要手动创建一个。编辑一个服务文件nano $PREFIX/var/service/openclaw/run在该文件中写入以下内容#!/data/data/com.termux/files/usr/bin/sh是Termux的shell路径#!/data/data/com.termux/files/usr/bin/sh exec openclaw gateway 21按CtrlX然后按Y回车保存。给脚本执行权限chmod x $PREFIX/var/service/openclaw/run启动服务sv up openclaw检查状态sv status openclaw设置开机自启需Termux在后台允许自启sv-enable openclaw4.2 探索与自定义技能SkillsOpenClaw的强大之处在于其可扩展的技能系统。你可以查看、甚至修改和添加技能。查看所有可用技能技能文件通常位于~/.openclaw/android/skills/目录下具体路径可能因安装方式略有不同可以用find ~ -name \*.skill.js\ -type f查找。每个.skill.js文件定义了一个技能。你可以用cat或nano命令查看内容了解其工作原理。理解技能结构一个典型的技能文件包含intent匹配的AI解析意图。examples训练AI理解的例句。handler具体的执行函数里面会调用rish命令来操作手机。自定义简单技能进阶假设你想添加一个“清理后台”的技能。你可以参考现有的kill-app.skill.js。复制一个类似的技能文件修改其intent为kill_all_apps在handler函数中你可以尝试执行am force-stop $(pm list packages -3 | cut -f2 -d:)这样的命令来停止所有用户应用注意此命令可能过于激进请谨慎测试。将修改后的.skill.js文件放到技能目录然后重启OpenClaw网关服务。4.3 常用命令速查与场景示例除了项目README中列出的命令通过自然语言你可以玩出更多花样。以下是一些实用场景你的指令自然语言可能的AI解析与执行动作“帮我截个图发给我”1. 执行screenshot技能保存截图。2. 可能通过Telegram Bot的API将图片文件发送给你需技能支持。“打开微信找到妈妈的聊天框”1. 启动微信 (am start -n com.tencent.mm/.ui.LauncherUI)。2. 模拟点击或使用无障碍服务定位到指定聊天这需要更复杂的技能或脚本。“明天早上8点提醒我开会”调用系统日历或闹钟API创建提醒需要对应技能。“把媒体音量调到50%”解析“50%”为具体数值执行media volume set 50或类似ADB命令。“我手机现在有哪些后台应用”执行 dumpsys activity activities“打开热点密码设成12345678”调用设置Wi-Fi热点的API需要系统权限和对应技能。场景示例睡前手机管理你可以对机器人说“把手机调成静音模式。”“亮度调到最低。”“关闭Wi-Fi和蓝牙。”“打开勿扰模式。”“设定一个明早7点的闹钟。”一系列指令依次执行无需触碰手机完美实现语音助手般的体验。5. 故障排除与常见问题实录在实际部署和使用过程中你几乎一定会遇到一些问题。下面是我在测试中遇到的一些典型情况及其解决方案。5.1 安装与启动阶段问题问题1执行curl ... | bash安装脚本时网络超时或失败。原因GitHub Raw 域名raw.githubusercontent.com在某些网络环境下访问不稳定。解决方案重试多试几次有时是临时网络波动。使用代理如果你有其他网络工具可以尝试为Termux配置临时代理例如如果你在电脑上运行了代理服务地址是192.168.1.2:10809export http_proxyhttp://192.168.1.2:10809 export https_proxyhttp://192.168.1.2:10809然后再次运行安装命令。完成后可以unset http_proxy https_proxy取消。手动安装如果脚本始终失败可以尝试手动步骤pkg install nodejs-lts git python -ygit clone https://github.com/AidanPark/openclaw-android.gitcd openclaw-androidnpm install后续的termux-setup-storage和复制rish文件需要手动完成。问题2启动openclaw gateway时提示Error: Cannot find module ‘...’原因Node.js依赖包没有安装完整或者当前不在项目目录。解决方案确保你在项目目录下通常是~/openclaw-android。可以用pwd命令查看。如果不在用cd ~/openclaw-android进入。尝试重新安装依赖npm install。如果npm命令找不到请先安装Node.jspkg install nodejs-lts -y。问题3Shizuku启动成功但运行命令时提示rish: command not found原因这是最常见的问题。rish可执行文件没有正确复制到Termux的PATH路径下。解决方案首先确认Shizuku的导出文件步骤是否正确完成。检查手机内部存储根目录下是否有Shizuku文件夹里面是否有rish_shizuku.dex和copy.sh等文件。在Termux中手动执行复制脚本bash ~/storage/shared/Shizuku/copy.sh如果提示copy.sh不存在或没有权限请回到3.2节重新执行导出步骤确保文件夹名称和位置绝对正确。复制成功后可以尝试运行rish --version验证。5.2 运行与通信阶段问题问题4Telegram Bot 无响应或提示“Bot didn‘t answer...”排查步骤检查服务是否运行在Termux中运行pgrep -f “openclaw gateway”或ps aux | grep openclaw查看网关进程是否存在。检查Token确认openclaw onboard步骤中输入的Bot Token完全正确没有多余的空格。检查网络确保你的手机可以正常访问互联网。尝试在Termux中ping 8.8.8.8。查看日志在运行openclaw gateway的前台终端或者通过tmux attach查看服务日志通常会有更详细的错误信息。常见的错误是Gemini API Key无效或配额用尽。重启服务尝试停止 (CtrlC) 并重新启动openclaw gateway。问题5AI理解指令错误或执行了非预期的操作原因Gemini AI的解析并非100%准确尤其是对于复杂或模糊的指令。解决方案优化指令尽量使用简单、明确的语句。例如“打开YouTube并搜索周杰伦”比“我想听周杰伦的歌”更准确。查看AI解析结果OpenClaw的日志通常会打印出AI返回的解析结果Intent。观察它是否理解错了你的意图。训练技能技能的examples字段用于few-shot学习。如果你有编程能力可以为你常用的指令在对应的技能文件中添加更多、更贴近你说话习惯的例句提高匹配精度。问题6部分命令执行失败如发送短信、打电话原因这些是敏感权限即使通过Shizuku也可能需要额外的用户授权或特定的Android版本支持。解决方案检查Shizuku权限打开Shizuku应用查看已授权的应用列表确保Termux或rish在其中。检查应用权限对于发送短信、打电话等Android系统可能仍然会弹出运行时权限请求。请确保在手机设置中Termux或相关的Shell环境已被授予相应的权限如短信、电话。ADB命令限制某些ADB命令在高版本Android上可能被限制。这属于系统层面的限制可能无法解决。5.3 性能与优化问题问题7Termux后台被系统清理导致服务中断原因安卓系统为了省电会清理长时间在后台且不活跃的应用。解决方案电池优化进入手机设置 - 应用 - 特殊应用权限 - 电池优化找到Termux选择“不优化”。后台锁定在最近任务视图中长按Termux应用卡片通常会有“锁定”或“保持运行”的选项。使用Termux:Boot可以考虑安装Termux:Boot插件它允许在设备启动后自动运行脚本。你可以编写一个启动tmux会话并运行openclaw gateway的脚本放在~/.termux/boot/目录下。问题8响应速度较慢原因延迟可能来自多个环节Telegram消息中转、AI API调用、手机命令执行。优化方向网络确保手机网络连接良好。Gemini API免费版API可能有速率限制。如果延迟主要发生在指令理解阶段可以尝试简化指令。本地化部署高级理论上可以将小模型如Phi-3 mini部署在Termux内让AI推理完全在本地进行消除API调用延迟。但这需要较强的动手能力和手机性能支持。6. 安全须知与隐私考量在享受便利的同时必须清醒地认识到安全风险因为这套系统赋予了远程控制你手机的巨大能力。Bot Token是最高机密你的Bot Token等同于遥控器。切勿泄露给任何人不要上传到公开的代码仓库如GitHub。如果有人获得它他就可以通过你的Bot控制你的手机。使用强密码保护Termux会话考虑为Termux设置密码 (passwd命令)防止他人物理接触到你的手机时直接进入终端。谨慎授权Shizuku只在你信任的环境下启动Shizuku并在不需要时及时在Shizuku应用中停止它。长期开启无线调试会增加潜在风险。了解技能权限定期审查OpenClaw的技能文件了解它们具体执行了哪些命令。对于来源不明的第三方技能要保持警惕。私密操作本地化涉及输入密码、查看私密聊天记录等操作强烈建议不要通过此远程系统进行。它的设计初衷是执行公开、便捷的控制而非处理高度敏感信息。定期更新关注项目GitHub仓库的更新及时获取安全修复和功能改进。我个人在实际部署和使用后最大的体会是技术赋予的便利性与伴随的风险永远是一体两面。OpenClaw-Termux-NoRoot项目提供了一个极其精巧的思路将几款优秀的开源工具串联起来实现了看似复杂的功能。它最适合的场景是家居环境下的便捷控制、轻度自动化或者作为极客的一个有趣玩具。在充分理解其工作原理和安全边界的前提下使用它你不仅能享受到科技带来的乐趣也能更深刻地理解安卓系统的权限机制和自动化可能性。如果遇到任何问题多查看日志、善用搜索引擎并回到基本原理去思考大部分难题都能迎刃而解。