面向个人设备的局域网协作工具,用一条本地直连通道在电脑和手机之间传文本、文件、通知、音频和键鼠输入。 本项目与 OpenAI Whisper 语音识别模型无关。
Whisper 解决的是一个很日常但反复出现的问题:自己的电脑、手机、备用机都在身边,却仍然要靠聊天软件、网盘或数据线来搬一点文本、文件或声音。
它不是云盘,也不是公网远程桌面。Whisper 默认工作在可信局域网内,设备之间显式建立点对点连接。适合在自己的设备之间临时传输内容、接收 Android 通知、共享桌面系统音频,或在多台桌面设备之间切换键鼠输入。
| 音频共享 | 键鼠共享 |
|---|---|
![]() |
![]() |
- 多设备直连:一台设备可以同时连接多台电脑或手机,连接关系保持显式、可见、可断开。
- 聊天式传输:文本、剪贴板和文件都在会话里完成,适合临时传链接、命令、截图和安装包。
- 系统音频共享:把一台设备的系统音频推给一个或多个播放端,支持基础扬声器组和左右声道角色。
- 键鼠共享:在受信任桌面设备之间共享一套键鼠,通过屏幕排列和边缘穿越切换控制目标。
- 桌面体验:支持托盘、启动项、关闭到托盘、桌面文件拖出复制、浅色/深色主题和多语言。
Whisper 优先通过局域网发现设备。两台设备连接同一个网络并同时打开 Whisper 后,通常可以直接在设备列表里看到对方,点击后由接收端确认连接。
如果自动发现不可用,可以手动输入对方的局域网 IP 和服务端口。默认服务端口是 10002,也可以在设置里的「服务端口」修改。手动连接时请确认防火墙允许该端口的局域网访问。
Linux 的自动发现依赖 Avahi;如果网络环境禁用了 mDNS/Bonjour,手动 IP 连接通常更可靠。
安装 Flutter stable,并确保当前 Flutter SDK 满足 Dart >=3.5.0 <4.0.0。
flutter doctor根据目标平台准备对应工具链:
- Android:Android Studio / Android SDK
- macOS / iOS:Xcode
- Windows:Visual Studio C++ 工具链
- Linux:Flutter Linux desktop 依赖、Avahi、PulseAudio 或 PipeWire Pulse
flutter pub get
flutter runmacOS 本地调试建议使用仓库脚本,它会构建、签名并启动调试 App:
sh script/build_and_run.shflutter analyze
flutter testmacOS 打包 DMG:
sh script/build_and_run.sh package-macos数据库或本地化变更后需要重新生成代码:
dart run build_runner build --delete-conflicting-outputs
flutter gen-l10n打开一个已连接设备的会话,直接输入文本并发送;点击附件按钮选择文件。桌面端收到的文件可以从消息里拖出到文件管理器或桌面完成复制。
在桌面端的设备工具区选择音频共享,选择一个或多个已连接且支持音频播放的设备。多设备播放支持基础同步和声道角色,但不等同于专业音频系统。
在桌面端打开键鼠共享工作区,排列本机与被控设备的屏幕位置。启用后,鼠标从配置的屏幕边缘穿越到目标设备,键盘输入跟随当前目标。
在 Android 端授予通知监听权限后,可以选择需要监听的 App。Whisper 会按用户选择处理通知内容,适合验证码等短消息场景。
| 平台 | 当前状态 |
|---|---|
| Android | 主要移动端,支持连接、聊天、文件传输、通知监听和音频播放等能力。 |
| macOS | 主要桌面验证平台,支持托盘、文件拖出、音频共享、键鼠共享和打包脚本。 |
| Windows | 桌面目标平台,包含窗口、单实例、音频和键鼠相关原生集成。 |
| Linux | 桌面目标平台,发现依赖 Avahi,音频依赖 PulseAudio 或 PipeWire Pulse,键鼠共享当前以 X11 为主。 |
| iOS | 保留 Flutter runner,具体能力受系统限制影响,未测试 |
- 当前没有实现端到端加密,不应把 Whisper 用在不可信局域网环境中。
- 当前不做公网中继、Hub 转发或传递信任。
- 文件、音频、键鼠都需要连接和能力协商,不设计为无提示后台控制入口。
- 键鼠共享面向本人设备间的近场协作,不是无人值守远程控制方案。
- Whisper 优先保证局域网内的直接、可控和可恢复,不追求替代专业同步、远控或 MDM 系统。
- 不是云盘:Whisper 不以跨公网、多端长期同步为目标,核心是近场设备之间的即时直连。
- 不是聊天软件:会话只是交互外壳,真正目标是让文件、通知、音频和输入能力在设备间流动。
- 不是远程桌面:键鼠共享只处理输入,不传屏幕,也不面向无人值守远控。
- 不是专业音频系统:音频组提供可用的多设备播放和声道角色,但不承诺专业级相位同步。


