架构

系统概览

┌────────────────────────────────────────────────────────────┐
│  移动端客户端                                              │
│  Android (Compose) / iOS (SwiftUI)                       │
│  Onboarding → QR Scanner → Home (TextEditor + 语音输入法)  │
│       │                                                    │
│       │  WebSocket / JSON (LAN)                            │
└───────┼────────────────────────────────────────────────────┘

┌────────────────────────────────────────────────────────────┐
│  airvoice CLI (Go)                                         │
│  QR pairing │ WS server │ token auth │ paste injection     │
└────────────────────────────────────────────────────────────┘

   macOS / Linux / Windows 上获得焦点的任意文本输入框

数据路径: IME 写入 TextEditor → 手机端自动发送 → {type:"text"} → Go CLI → 剪贴板 + 模拟 Cmd/Ctrl+V → 光标位置。

Go 包

职责
cli (main)入口:默认启动服务、settingstoken refreshversion;连接配对 + 服务器 + 粘贴
cli/config~/.airvoice/settings.json 读写、持久配对 token
cli/protocol入站/出站 JSON 消息类型
cli/pairing局域网 IP、QR payload 序列化、终端 QR 渲染
cli/server/health, /ws, token 认证, hello/text/ping 处理器, 单客户端 hub
cli/paste平台粘贴:剪贴板 + 模拟粘贴键

粘贴后端

操作系统检测方式剪贴板按键依赖
macOSGOOS=darwinpbcopyosascript Cmd+V辅助功能权限
Linux X11not waylandxclipxdotool ctrl+vxclip, xdotool
Linux WaylandXDG_SESSION_TYPE=waylandWAYLAND_DISPLAYwl-copyydotool Ctrl+V 扫描码wl-clipboard, ydotool, ydotoold
WindowsGOOS=windowsPowerShell Set-ClipboardWScript.Shell Ctrl+VWindows PowerShell 5.x

通信协议

传输:WebSocket,JSON 文本帧,仅限局域网。

配对 QR payload

{ "v": 1, "ws": "ws://192.168.1.42:7383/ws", "token": "uuid" }

客户端 → 服务器

{ "type": "hello", "device": "iPhone", "app": "0.1.0" }
{ "type": "text", "id": "uuid", "content": "你好\n世界", "ts": 1710000000 }
{ "type": "ping" }

服务器 → 客户端

{ "type": "hello", "host": "my-mac", "version": "0.1.0" }
{ "type": "ack", "id": "uuid", "ok": true }
{ "type": "ack", "id": "uuid", "ok": false, "message": "paste failed: ..." }
{ "type": "pong" }

依赖

Go: github.com/gorilla/websocket, github.com/google/uuid, github.com/mdp/qrterminal/v3

Android: Kotlin、Jetpack Compose、OkHttp、CameraX + ML Kit(二维码扫描)。

iOS: SwiftUI, VisionKit (iOS 17+), 无第三方 WS 库。