# aircontrol **Repository Path**: zhaoquan/aircontrol ## Basic Information - **Project Name**: aircontrol - **Description**: 用手机指挥电脑上的 AI CLI。本仓库只放用户文档与安装包,不含源码。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-19 - **Last Updated**: 2026-10-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AirControl **让手机用上你电脑的能力。** 说白了就是:**你的手机连上你自己的电脑**—— 手机上发一句话,电脑上的 AI 动手做,你在手机上看结果。 不用懂技术。下面先说「为什么需要它」,再说怎么用。 --- ## 你是不是也遇到过这种情况 在手机上让 AI 帮你整理一份文档、做张表格,等了半天, 拿到的东西总觉得**差那么一口气**——要么格式乱了,要么根本不是你要的样子。 你换了好几个 App,豆包、DeepSeek、WorkBuddy 都试过, 最后可能觉得:**是不是我没说清楚?还是 AI 就这样?** **都不是。** 问题出在手机上。手机里的 AI: - **看不见你的文件**——你手边那几十份参考资料,它一份也读不到 - **也看不到自己刚做完的东西**——做出来的文档、表格长什么样,它自己看不见 - **还不能动手**——装不了软件、开不了 Word、没法帮你把文件归到一起 结果就是:**它只能跟你聊天,不能真的帮你干活。** 就像一个很聪明的人,手却被绑住了。 --- ## 换到你电脑上,就完全是另一回事 同一件事,在电脑上做和在手机上做,结果差得很远: - 你的资料就在**一个文件夹**里,几十份一起给它都行 - 它做完能**打开看一眼**——排版对不对、数字对不对,自己就能改 - 需要装什么、用什么软件,它都能自己来 **不是 AI 在电脑上更聪明,是它在电脑上终于有手了。** --- ## AirControl 做的事,一句话 **让手机连上你自己的电脑。** - 手机上发一句话 - **电脑上的 AI 动手做** - 你在手机上**看结果**、随时叫停 不经过我们的服务器,也不用把你的文件上传给谁—— 连的就是**你自己那台电脑**(家里的、公司的,或者你自己租的云主机都行)。 > **两种看法,按需切换:** > - **看电脑屏幕**——文档排版、表格、网页做出来什么样,直接看 > - **看执行过程**——AI 在电脑上敲的每一步,你都能盯着,随时打断 --- ## 给开发者:和"某家 AI 控制电脑"有什么不一样 你可能已经在用 ChatGPT 或 Claude 那套"让 AI 操作我的电脑"了。 能用,但有一件事绕不开:**你只能用它们家的。** 这里的关系不一样: - **不绑定任何一家 AI**。底下跑什么由你决定—— Claude Code、Codex、Gemini CLI、Aider……**装什么用什么,出了更好的换一个就行** - **跑在你自己的机器上**。你的环境、你的文件、你的密钥,都在自己手里 - **终端之外,还有一块屏幕**。不只是看它敲了什么字—— 画面上的东西你也能看到(浏览器渲染出来什么样、程序界面什么状态) **我们不造 AI,只做管道。** 所以你能用的,永远是"所有", 而不是"我们支持的那几个"。 --- ## 举一个具体例子 你要把手上几十份材料整理成一份 Word。 **在手机上**:只能一份一份复制粘贴给 AI,它看不到原文的格式, 做出来的东西常常要你从头再调一遍。 **用 AirControl**:那几十份材料本来就在你电脑的文件夹里。 手机上说一句"把这个文件夹里的材料整理成一份 Word", **电脑上的 AI 自己读、自己写、自己打开看排版**,你在手机上看着它做完。 **手机上做不到的事,电脑上本来就很简单。AirControl 只是把手机接过去。** --- ## 五分钟跑起来 > **不想看步骤?把你的 AI 助手叫来。** > 把这份 [aircontrol-skill.md](aircontrol-skill.md) 丢给它(Claude Code / Codex / Cursor 都行), > 跟它说「按这个装」——它会自己判断系统、下载、校验、装好,然后把配对信息给你。 > 下面是人自己动手的步骤。 1. **电脑上**:下载电脑端程序,解压后启动它 2. **手机上**:装上 App 3. 让手机和电脑**连同一个 Wi-Fi**(或者手机开个热点,让电脑连上) 4. **电脑屏幕上**会出现三样东西:**地址、端口、连接码** 5. **手机 App 里**填这三样 6. 点**连接** 连上之后,你的手机就成了那台电脑的屏幕和键盘。 > 手机和电脑不在同一个网络?装 **Tailscale**(两端都装、登同一个账号), > 用 `100.x.x.x` 那个地址连,手机用流量也能连上。详见下面「怎么连起来」。 --- ## 以下内容面向技术用户 上面那几节是给所有人看的。**从这里往下偏技术**——会用到「Server服务端 / Client客户端」 这类说法,以及命令行、服务器相关的内容。**只是想用起来的同学,看到上面就够了。** > 名词对照(下面会反复出现): > **Server服务端** = 装在你电脑上的那个程序(负责干活)  > **Client客户端** = 手机上的 App(负责指挥) --- ## 在 Linux 服务器上部署 见 [docs/linux-deploy.md](docs/linux-deploy.md) —— 无界面服务器怎么装、怎么配对、怎么同意。 ## 这是什么,不是什么 **是**:一根管道。手机是屏幕,你的电脑(或云服务器)是主机,AI 是手。 **不是**:又一个 AI。AirControl **不造 Agent、不绑模型、不存你的 API Key**。 底下跑的是**你自己装的** CLI,用的是**你自己的**算力和账号。 三条不会变的边界: | | | |---|---| | **只做管道** | 底层 AI CLI 是水源。水源出问题,靠**换一个**解决——不是我们去造 | | **去命令行化** | 手机上是按钮和列表,不是让你记 SSH 命令 | | **知情即控制** | 只统计链路流量并如实显示,不做自作聪明的后台限流 | --- ## 两个部分 | 部分 | 装在哪 | 干什么 | |---|---|---| | **Server服务端**(daemon) | 你的电脑 / 云服务器 | 常驻后台:管会话、启动 AI CLI、推终端字节流和屏幕画面 | | **Client客户端**(App) | 你的 Android 手机 | 发指令、看终端、看屏幕、批准 AI 的工具调用 | 两端通过 **Tailscale(推荐)或局域网**直连,**不经过我们的服务器**。 --- ## 📥 装哪个?去哪儿拿? **先看你手上是什么设备** —— 两个应用**装的东西不一样**: | 你的设备 | 装哪个 | 干什么用 | |---|---|---| | **电脑** | **Server服务端** | 那台**被看屏幕、被敲命令**的机器 | | **手机 / 平板** | **Client客户端** | 用来看那块屏幕、敲那个终端 | 然后按系统分: | 系统 | 去哪儿拿 | |---|---| | **macOS** | [App Store 搜 AirControl](https://apps.apple.com/cn/search?term=AirControl) | | **iOS / iPadOS** | [App Store 搜 AirControl](https://apps.apple.com/cn/search?term=AirControl) —— **免费** | | **Windows** | [Gitee 发布页](https://gitee.com/zhaoquan/aircontrol/releases) / [GitHub 发布页](https://github.com/chatterzhao/aircontrol/releases) | | **Linux** | [Gitee 发布页](https://gitee.com/zhaoquan/aircontrol/releases) / [GitHub 发布页](https://github.com/chatterzhao/aircontrol/releases) | | **Android** | [Gitee 发布页](https://gitee.com/zhaoquan/aircontrol/releases) / [GitHub 发布页](https://github.com/chatterzhao/aircontrol/releases) | ⚠️ **苹果系(macOS / iOS)不在下面那个下载页里** —— 苹果的规矩是应用走 App Store。 拿 Mac 或 iPhone 的人在那一页**找不到自己的包**,这是**对的**,不是没发布。 --- ## 下载(国内建议用 Gitee) GitHub 的**下载**会跳转到 `release-assets.githubusercontent.com` 和 `*.blob.core.windows.net`,这两个域名在国内网络上常常连不上—— **页面能打开、一点下载就没进度**。 所以国内用户请用**镜像仓**: | | 地址 | |---|---| | **Gitee(国内,推荐)** | https://gitee.com/zhaoquan/aircontrol/releases | | GitHub | https://github.com/chatterzhao/aircontrol/releases | 两个仓库内容完全一样,同一版本同时发布。 > 如果连这里也下不动,可以在**能上网的机器**上下好再传过去; > 或者用Server服务端自带的 `--apk` 参数,让它把安装包直接分发给手机(见安装文档)。 --- ## 安装 ### 1. Server服务端 —— [详细步骤](docs/install-server.md) 支持 **Windows 10 及以上** / **Linux(x64)** —— 从上面那个下载页拿 ✓。 ⚠️ **macOS 版在 App Store** ✓(点这里:[Mac 的 Server服务端](https://apps.apple.com/cn/search?term=AirControl) ✓)—— **下面那个"前置:Java 17"对它不适用** ✗(商店版自带运行时 ✓)。 前置:**Java 17 或更高版本**(`java -version` 能跑就行)。 ### 2. Client客户端 —— [详细步骤](docs/install-app.md) Android 手机,从上面那个下载页拿 APK 直接安装(需要允许"安装未知应用")✓。 ⚠️ **iPhone / iPad 版在 App Store** ✓([点这里](https://apps.apple.com/cn/search?term=AirControl) ✓,**免费** ✓)。 --- ## 怎么连起来 Server服务端启动后会在终端里显示**一个二维码和一条连接串**,形如: ``` aircontrol://connect?host=<地址>&port=8080#pin= ``` 手机 App 里**粘贴这条串**即可(也可以手填地址/端口/PIN),不用配端口转发、不用改路由器。 > **两种网络都行**: > - **Tailscale**(推荐):两端都装 Tailscale,用 `100.x.x.x` 地址。**手机用流量也能连**,换 Wi-Fi 地址也不变。 > - **局域网**:手机和电脑在同一个 Wi-Fi/热点下,用电脑的内网地址。 > > 两端都在 Tailscale 里时,Server服务端打印出来的**就是 Tailscale 地址**,直接用即可。 --- ## 这个版本能做什么 - **真终端**:不是截图轮询,是 PTY 字节流 + Client客户端终端模拟器。`vim`、`htop` 这类全屏程序能正常用 - **看屏幕**:微信、聊天工具、安装器弹窗这类终端里看不见的东西,切到屏幕视图就能看到 - **多会话**:一台机器上同时开多个 AI(点「打开」新建会话),互不影响 - **批准转达**:AI 要用危险命令时会等你点头,通知栏直接推给你 - **断线重连**:锁屏、切网、切后台再回来,会话还在 --- ## 更新 **Server服务端**:重新下载新版本覆盖即可(或看 [安装文档](docs/install-server.md#更新) 里的一行命令)。 **Client客户端**:下载新 APK 覆盖安装。App 里会提示Server服务端是否有新版本。 每个版本的改动见 **[CHANGELOG.md](CHANGELOG.md)**。 --- ## 安全说明(请读) - **PIN 是连接凭证**。Server服务端启动时的 PIN 别截图外发、别贴进公开聊天。 - **链路上是明文 `ws://`**。请**只在 Tailscale 或可信局域网内使用**。 用 Tailscale 时整条链路有 WireGuard 加密;纯公网直连**当前版本不建议**。 - **Client客户端不存你的 AI 服务密钥**。API Key 只配在Server服务端。 - 每台连接过的机器会记在手机本地(含 PIN),**可以单条删除或一键清空**。 --- ## 源码与反馈 本仓库只放**用户文档和安装包**。 问题反馈:请开 [Issue](../../issues)。