rt 远程设备网络
装个客户端,登录后就能互相 SSH
API:
我的设备
安装 rt
按你的平台选一条
| 你的系统 | 在哪执行 | 命令 | |
|---|---|---|---|
| Windows | PowerShell | irm https://rt-web-b4t.pages.dev/install.ps1 | iex |
|
| macOS | 终端 | curl -fsSL https://rt-web-b4t.pages.dev/install.sh | bash |
|
| Linux | 终端 | curl -fsSL https://rt-web-b4t.pages.dev/install.sh | bash |
|
| 安卓(Termux) | Termux 里 | curl -fsSL https://rt-web-b4t.pages.dev/install.sh | bash |
⚠ 动之前先备份。安装会往 ~/.local/bin 和 ~/.rt 写文件,
并把本机公钥登记进 ~/.ssh/authorized_keys。
不放心就先 cp -r ~/.ssh ~/.ssh.bak(Windows:
copy %USERPROFILE%\.ssh\authorized_keys %USERPROFILE%\.ssh\authorized_keys.bak)。
不想自己挑命令?把下面这段发给你的 AI,它会按你的系统选对:
拿不准?Windows 用 PowerShell(蓝色图标),其余都是终端。
想先看看会不会有问题?两条命令都支持预演,只检查不安装:
… install.ps1 -check / bash install.sh --check
- 就用上面这条
install.ps1—— 别在 Windows 上试着跑 bash 版安装器。真跑错了它会拦你并给正确命令(退出码 3), 不会吐一串看不懂的 bash 语法错误。 - 执行策略只放行这一次:如果提示脚本被策略拦住,用
Set-ExecutionPolicy -Scope Process Bypass(只影响当前窗口, 关掉即失效),或者干脆用下面第 3 条的rt.cmd。 不要去改LocalMachine级别的全局策略。 - 装完日常请敲
rt,别敲rt.ps1—— 安装器会同时放rt.ps1和rt.cmd,而rt.cmd已经内置了-ExecutionPolicy Bypass, 任何 shell 里都能直接跑,不受执行策略影响。
两版能力略有差异(Windows 缺 Android 控制与远程解锁),
完整对照见仓库 docs/CAPABILITY.md(由代码自动生成,不会过期)。
一行安装 · Linux / macOS / Termux
安装本身不需要 root —— 安装器只往一个可写目录放一份脚本。
装到哪会自动探测:标准 Linux → /usr/local/bin;Termux → $PREFIX/bin;
都没有写权限 → ~/.local/bin。也可以自己指定 RT_BIN_DIR。
下载完会先做语法校验再落盘,装到一半坏掉不会把原来的 rt 弄没。
标准 Linux 上rt up需要 root;Termux / proot 上不要加 sudo
(提权后反而读不到 $PREFIX 里的配置,sshd 起不来)。
Windows
Windows 是独立的一份 PowerShell 实现(原生跑不了 bash),但共用同一套账号与设备表, 所以能和 Linux / macOS / Termux 互相 SSH。在管理员 PowerShell里跑:
rt up 只在装 OpenSSH Server、改服务启动类型、加防火墙规则、写管理员公钥文件
这四件事上需要管理员权限。另外 Windows 的 sshd 跑在 LocalSystem,
管理员账号的公钥不在 ~\.ssh\authorized_keys,而在
%ProgramData%\ssh\administrators_authorized_keys —— 装完 rt up 会告诉你实际路径。
AI 一键接入
你的接入 token(就是登录态:全功能、永久有效)—— 账号下只保留一条,复制下面整段发给任意 AI, AI 会自己装 rt、自己登录、自己上线,你不用敲任何命令。
依赖
安装器会检查,缺了会明确告诉你装什么:
curl—— 下载用(一般自带)ssh—— 连别的机器(Debian/Ubuntu 上是openssh-client)sshd—— 被连;没有的话rt up会尝试自动装cloudflared—— 默认通道就是它。不用自己装,rt up会自动下载proot—— 只有 Termux 需要(Termux 的/etc是只读的, cloudflared 需要它盖一层可写的 /etc):pkg install proot
装完之后
rt login—— 登录(没账号就rt register,走邮箱验证码)rt up—— 让这台机器上线:起 sshd → 开隧道 → 上报地址到账号 → 自动在后台起看门狗保活。要省后端额度可RT_AUTO_WATCHDOG=0 rt up- 别的机器同一账号登录 →
rt ls看到它 →rt ssh <设备名> - 出问题先跑
rt doctor(一键体检:平台/依赖/sshd/隧道/账号/后端); 升级到最新版用rt upgrade
不用手动开第二个终端跑 rt watchdog —— v0.7.0 起 rt up 已经代劳。
rt ls 里判断一台设备现在能不能连,只看「可连接」列。
控制安卓手机(可选)
rt 能在安卓手机上读屏、点按、输入文字、启动 App—— 用的是系统级的 adb 通道,不用插USB 线、不用 root。 下面是三步,每一步都给了「怎么确认成功了」,照着做就行。
还有更省事的:把一串操作「录」下来,之后一条命令重放。 它不是提示词 —— 是rt 自己执行的确定性脚本,同一个流程跑一百次结果都一样。
# 1. 开始录(之后你正常敲命令,它自动记下来)
rt android flow start 发消息
rt android tap-text 搜索
rt android text "你好"
rt android flow stop
# 2. 之后一条命令重放({{1}} {{2}} 按顺序替换)
rt android flow run 发消息 "李四" "在吗"
为什么不用坐标:它记的是「点搜索」而不是「点 (636, 519)」—— 坐标每次都重新读界面算出来,所以界面变了、换手机、字号变了都不会点空。 录的时候还会自动补上等待(等目标真的出现,不是「睡够了」), 失败的那一步不会录进去,回放卡住会停下并告诉你是第几步。
文件是纯文本,放在 ~/.rt/flows/<名字>.flow,
可以直接打开看、也可以手改。命令:
flow start / stop / ls / show <名字> / run <名字>
-
手机上开两个开关(都在设置 → 开发者选项里):
USB 调试- 「仅充电模式下允许 ADB 调试」—— ⚠ 这一条必须开,否则整个 ADB 通道被禁。 Android 15 以后才有这个开关,不开的话后面几步全都白做。
rt ssh <手机设备名> "getprop init.svc.adbd"输出running就对了。 -
第一次:配对一次
- 手机:开发者选项 → 无线调试 → 打开, 记下屏幕上那行「IP 地址和端口」
- 电脑上跑:
rt adbpair <连接端口> <配对码> <配对端口> <手机设备名>(配对码是手机无线调试页上「使用配对码配对设备」弹出来的那6 位数)
-
设固定端口,以后不用再问端口
- 跑一次:
rt adbtcp - 看到
✓ 固定端口就绪就成了
rt adbtcp之后 adbd 固定监听5555, 切 WiFi / 流量都能用,不用记端口、不用重配。 - 跑一次:
然后就能这样用
# 看当前屏幕上有什么(控件树,最快最准) rt android tree # 只看包含某个词的(拿到括号里的坐标) rt android tree 搜索 # 点一下 rt android tap 636 400 # 输入文字(input text 只支持 ASCII;中文要用 uiautomator2 的 set_text) rt android text "hello" # 启动某个 App rt android app com.tencent.mm # 不知道该点哪?让它读屏并给你指路 rt android guide # 通道出问题了先跑这个 rt android doctor
它不会替你做的事:转账、付款、输入支付密码 —— 这些 rt 不代劳,
请自己在手机上操作。解锁可以用你自己的锁屏密码(rt unlock)。
控制电脑(Windows / macOS / Linux)
rt ui 让 AI 直接操作你的电脑:读控件树、点击、输入、按键、截图——
认的是真控件(按钮、输入框、菜单),不是靠猜坐标。
还能控制别的机器:--device 设备名 走 rt 隧道。
# 先体检(第一次会自动装依赖,只装一次) rt ui doctor # 读当前窗口的控件树(类型/名称/AutomationId/像素坐标) rt ui tree # 点击 / 输入 / 按键 / 截图 rt ui click 保存 rt ui type "hello" --to 编辑器 rt ui key enter rt ui screen # 控制另一台机器(电脑、安卓都行) rt ui tree --device m1-macbookair # 连不上时:逐段告诉你卡在「钥匙 / 隧道 / sshd」哪一步 rt doctor 设备名
密码别写在命令行里(会出现在进程列表):用
rt ui type --file /path/to/secret 或 --stdin。
首次使用会往 ~/.rt/pylibs 装几个开源库(不污染系统环境、不需要管理员);
macOS 首次还需在「系统设置 → 隐私与安全性 → 辅助功能」里给终端授权。
更新日志
当前正式版:读取中…(你的设备在卡片上会显示「可更新」提示; 点「升级」即可远程更新,不需要重装)。
v0.8.81(本次更新)
- 能控制电脑了:
rt ui读控件树、点击、输入、按键、截图, Windows / macOS / Linux 都能用;控制别的机器加--device 设备名。 识别的是真控件(按钮、输入框),不是猜坐标。 - 新设备马上能被连上:登录后立刻把本机公钥登记到账号,
不用再等十几分钟心跳周期,别人
rt ssh就能免密进来。 - 连不上会说人话:
rt ssh认证失败时告诉你到底是 「你的钥匙没交上去」还是「对方还没同步」,并自动补登记;rt doctor <设备名>逐段自查(钥匙 → 隧道 → sshd)。 - 网页设备卡更准:桌面设备会显示「⚡可 rt ui 控制」标记, 并且每台设备标明它在正式版还是测试版通道、该不该更新。
v0.8.80 及更早
- 手机控制(
rt android):读屏、点按、输入、启动 App, 切到移动网也能控(固定端口,不再手填端口号)。 - 网页解锁、连接信息一键复制、设备重命名/移除、登录会话管理。
完整记录(含开发者视角的变更与踩坑)随每次发布写在项目的 docs/ 目录。
安卓常见问题
- adb 连不上 —— 先查开发者选项里 「仅充电模式下允许 ADB 调试」开没开。 不开则整个通道被禁,这一条优先于无线调试。
- 每次都要问端口 —— 跑一次
rt adbtcp,之后固定 5555。 - 切 WiFi / 流量就断 —— 同样跑
rt adbtcp。 转发走 rt 隧道,不依赖 WiFi,也不怕运营商限制。 - 要重新配对吗 —— 不用。配对授权是持久的, 只有你在手机上点「撤销已配对的设备」或换手机才需要重来。
- 手机重启后失效 —— Android 会关掉 5555,重跑一次
rt adbtcp。 - 没插线能用吗 —— 能。全程无线(无线调试 + rt 隧道)。
让 AI 帮你把新设备接进来
装 rt 只要一条命令,但平台差异、登录、上线、验证四步各有各的坑。 把手册丢给你正在用的 AI 助手,它会照着做并每步确认成功 —— 不用你抄命令、也不用人肉判断「到底装上没有」。
- 点下面的按钮复制接入 skill(也可直接看原文)
- 贴给你的 AI,说一句:
「请阅读 rt-onboard skill,按其中的流程把这台设备接入 rt」 - 登录那一步你自己来 —— 邮箱验证码在你手上
为什么不给它密码:rt 的设备是免密 SSH 的 —— 账号密码一旦给出去,就等于把它接进了你账号下所有设备。 手册里写了这一条,AI 看到也会先提醒你。
已经装好了、只是出问题?那是另一份手册:rt-diagnose(两份是互补的,不是二选一)。
出问题 · 让你的 AI 帮你修
rt 不猜你的机器是什么环境。遇到连不上、报段错误、看门狗被杀这类问题, 把诊断报告丢给你正在用的 AI 助手,它会照着一份故障手册定位并修。
- 在这台机器上生成诊断报告 ——自动脱敏,登录凭据与隧道地址会被替换成占位符
- 点下面的按钮复制报告内容
- 贴给你的 AI,并在最前面加一句:
「请阅读 rt-diagnose skill,按其中的排障流程处理下面这份 rt 诊断报告」
如果 AI 说信息不足,让它先读 ~/.rt/crash/ —— 那里有上次崩溃的现场(v0.8.53 起)。
手动安装
不想用管道执行时(下面这份不依赖 root):
下载源:
设置
账号
升级 Pro
免费版限 2 台设备。输入激活码升级 Pro(99 台),激活立即生效。
连接信息
登录会话
每条会话都是一把全功能钥匙(能连你同账号的所有设备)。 标着「接入 token」的那条是给 AI 用的;认不出来的那条直接吊销即可, 只影响登录状态,不影响设备与隧道。
危险操作
登出会立即吊销当前会话,本机需要重新登录。
管理面板
需要管理员权限
这里看的是全局数据(额度消耗、账号与设备规模、客户端版本分布), 不是某一个账号的信息,只有管理员账号能看到。
还没被加进管理员名单?让现有管理员在下面「管理员」卡片里添加你的邮箱, 然后重新登录即可。
运营者密钥(高级 · 仅供运维/脚本使用)
持有维护密钥(MAINT_KEY)的人即使不在名单里也能进入,用于紧急恢复 (例如管理员全部被误删)。密钥只留在你自己浏览器的 localStorage。
管理员
名单里的账号登录后能看到「管理」入口并进入本面板;其他人既看不到入口,直接输 #/admin 也会被挡。