Claude Code 在电脑上跑得很嗨,但权限弹窗、确认提问一来,你就得盯着屏幕点。AgentLink 把这些「等人」的瞬间接到手机:
- 权限放行 — Bash / 写文件 / AskUserQuestion,手机一点允许或选选项
- 回合续聊 — Stop 之后在手机回复,Claude 同一会话继续,不用跑回键盘
- 双端一体 — Windows EXE 主机台启动 Bridge;Android APK 配对进会话
- 后台保活 — 连上后可回桌面,有审批会通知你
电脑安心 coding,手机当遥控器。
| 产物 | 命令 | 说明 |
|---|---|---|
| Windows EXE | cd android && flutter build windows | Bridge 主机控制台(启动/停止、配对码、安装 Hook) |
| Android APK | cd android && flutter build apk --release | 手机端审批与对话 |
同一套 Flutter 工程:Platform.isWindows 进入主机台,Android 进入手机 App。
Windows 运行前请确保:
- 已安装 Node.js(PATH 可用)
bridge已npm install && npm run build- 主机台能找到
bridge/目录(仓库旁路或设置环境变量AGENTLINK_BRIDGE_ROOT)
输出目录:
- Windows:
android/build/windows/x64/runner/Release/AgentLink.exe - APK:
android/build/app/outputs/flutter-apk/app-release.apk
Flutter Windows EXE --spawn--> Node Bridge
Android App ←WebSocket→ Node Bridge
↕ HTTP hooks
Claude PermissionRequest / Stop
整体顺序:装依赖 → 构建 Bridge → 装 Hook → 开主机台 → 开手机/模拟器 → 配对 → 用 Claude。
| 组件 | 用途 |
|---|---|
| Node.js 18+ | 跑 Bridge |
| Flutter(stable) | 编 Windows 主机台 / Android App |
| Visual Studio 2019/2022 +「使用 C++ 的桌面开发」 | 编 Windows EXE(仅 Windows 主机台需要) |
| Android SDK + 至少一台 AVD | 命令行启动模拟器(本教程用 VS Code 终端,不依赖 Android Studio 界面) |
Claude Code(本机 claude) | 触发权限与回合结束 Hook |
克隆仓库后:
cd bridge
npm install
copy bridge.config.example.json bridge.config.json # Windows cmd# 或: cp bridge.config.example.json bridge.config.json
npm run build编辑 bridge/bridge.config.json 时,端口默认 9876 即可;配对码也可稍后在主机台里生成。
任选一种:
方式 A — 命令行
cd bridge
npm run install-hook方式 B — Windows 主机台
启动主机台后点「安装 Hook」。
装完后 务必重启本机 Claude Code(关掉再开 claude),否则 Hook 不生效。
开发调试:
cd android
flutter pub get
flutter run -d windows或使用已构建的 EXE:
cd android
flutter build windows
# 运行:# android\build\windows\x64\runner\Release\agentlink.exeEXE 旁或本机需能找到 bridge/(含已构建的 dist/)。找不到时设置:
$env:AGENTLINK_BRIDGE_ROOT="D:\2026AppDev\AgentLink\bridge"在主机台中:
- 确认左侧「Bridge 目录」正确
- (可选)改端口 / 换配对码(需在未运行时)
- 点 启动 Bridge
- 状态变为「运行中」;右侧出现
ws://IP:端口?code=配对码 - 浏览器可自检:
http://127.0.0.1:9876/health
没有真机时,在 VS Code 终端用命令行启动 AVD,再跑 AgentLink App 连本机 Bridge。
不要依赖 Android Studio 图形界面点启动;全程用终端即可。
- 模拟器里的
127.0.0.1指向模拟器自己,不是你的 Windows。 - Android 模拟器规定:访问宿主机用
**10.0.2.2**。 - 因此 Bridge 跑在电脑
9876时,App 里应填:
10.0.2.2:9876
配对码用主机台左侧显示的 6 位数字(不要用连接串里的 ?code= 整段去填「配对码」框——地址框填 主机:端口,配对码框填 6 位数字)。
把 Android SDK 的 emulator、adb、avdmanager 加进当前终端(按你本机 SDK 路径改):
$sdk="$env:LOCALAPPDATA\Android\Sdk"$env:ANDROID_HOME=$sdk$env:ANDROID_SDK_ROOT=$sdk$env:Path="$sdk\emulator;$sdk\platform-tools;$sdk\cmdline-tools\latest\bin;$env:Path"自检:
emulator -version
adb version若提示找不到命令,先确认本机已装 Android SDK(Flutter 的 Android toolchain 通常会装好),并改正上面的 $sdk 路径。
在 VS Code 终端执行:
emulator -list-avds记下输出里的 AVD 名称(本仓库环境示例为 Pixel_6_API_34),然后在新终端标签启动:
# 推荐:本机无 Vulkan / 报 swiftshader_indirect 无效时用软件渲染
emulator -avd Pixel_6_API_34 -gpu swiftshader -accel on
# 若仍黑屏或闪退,再试:# emulator -avd Pixel_6_API_34 -gpu software -accel on# emulator -avd Pixel_6_API_34 -gpu swangle -accel on也可后台启动:
Start-Process emulator -ArgumentList "-avd","Pixel_6_API_34","-gpu","swiftshader","-accel","on"说明:新版 emulator 已不再支持旧选项
swiftshader_indirect。若 AVD 配置里写了该值,启动时会报错并回退;请始终在命令行显式加-gpu swiftshader(或software)。Host Vulkan driver is not supported在多数笔记本上只是警告,用软件 GLES 仍可正常进桌面(会慢一些)。
等到模拟器桌面出来后,另开终端检查:
adb devices
# 应看到 device,而不是 offline若 emulator -list-avds 为空:说明还没有 AVD。可用命令行创建一台(需已通过 sdkmanager 装过系统镜像),例如:
sdkmanager "system-images;android-34;google_apis;x86_64"
avdmanager create avd -n Pixel_6_API_34 -k "system-images;android-34;google_apis;x86_64"-d pixel_6创建后再执行带 -gpu swiftshader 的启动命令。
cd d:\2026AppDev\AgentLink\android
flutter devices应能看到类似 sdk gphone64 ... (mobile) 或 emulator-5554。
先保证本机 Bridge 已在主机台启动(见上文第 3 步)。在 VS Code 终端:
cd d:\2026AppDev\AgentLink\android
flutter pub get
flutter run -d emulator-5554# 若 flutter devices 里只有一台模拟器,也可直接:# flutter run或先打 APK 再装:
flutter build apk --debug
adb install -r build\app\outputs\flutter-apk\app-debug.apk- 打开 AgentLink
- Bridge 地址填:
10.0.2.2:9876(端口若改过则同步改) - 配对码填主机台显示的 6 位数字
- 点 连接 Bridge
- 成功后主机台状态变为「手机已连接」;App 可进入会话
| 现象 | 处理 |
|---|---|
emulator 不是内部命令 | 按上文 A 配置 PATH,或用完整路径:& "$env:LOCALAPPDATA\Android\Sdk\emulator\emulator.exe" -list-avds |
list-avds 为空 | 用 sdkmanager + avdmanager create avd 先建一台 |
swiftshader_indirect is not valid / Vulkan 警告 | 用 -gpu swiftshader 或 -gpu software 启动(见上文 B) |
| 模拟器黑屏 / 立刻退出 | 换 -gpu software;关闭其他占 GPU 的程序后再开 |
flutter devices 没有模拟器 | 等 AVD 完全进桌面后再查;adb devices 应为 device |
| 连接失败 / 超时 | 确认主机台已「运行中」;地址必须是 10.0.2.2 不是电脑局域网 IP |
| 一直转圈 | 看主机台日志;防火墙是否拦 Node;curl http://127.0.0.1:9876/health |
| 装不上 APK | adb devices 是否 online;优先用 flutter run |
- 手机与电脑连同一 Wi‑Fi(不要用访客网络隔离)
- 主机台右侧复制局域网地址,例如
192.168.1.10:9876(不要用10.0.2.2) - App 填该地址 + 配对码 → 连接
- 开发安装:
flutter run(USB 调试);或安装 release APK
- 本机终端进入项目,运行
claude - Claude 需要权限时 → 手机/模拟器弹出审批(允许 / 拒绝 / 始终允许)
- Claude 回合结束等待输入时 → App 可快捷回复或「交还电脑」
- 主机台可看:手机是否在线、待审批数量、Bridge 日志
- 用完后在主机台点 停止;Android 端「断开」会结束保活连接
整体顺序:EXE 启 Bridge → 开虚拟机 → 跑 APK → 配对 → 本机用 claude。
cd d:\2026AppDev\AgentLink\bridge
npm install
copy bridge.config.example.json bridge.config.json
npm run build
npm run install-hook装完 Hook 后重启本机 claude。
# 开发模式
cd d:\2026AppDev\AgentLink\android
flutter run -d windows
# 或直接跑已构建的 EXE# android\build\windows\x64\runner\Release\agentlink.exe主机台里点 启动 Bridge,记下 6 位配对码。
$sdk="$env:LOCALAPPDATA\Android\Sdk"$env:Path="$sdk\emulator;$sdk\platform-tools;$env:Path"
emulator -list-avds
emulator -avd Pixel_6_API_34 -gpu swiftshader -accel on等桌面出来后:adb devices 应显示 device。
cd d:\2026AppDev\AgentLink\android
flutter run -d emulator-5554App 里填:
- 地址:
10.0.2.2:9876 - 配对码:主机台显示的 6 位数字
→ 点 连接 Bridge。
- 真机:电脑局域网 IP + 配对码(不要用
10.0.2.2)
| 能力 | 说明 |
|---|---|
| Windows 主机台 | 启动/停止 Bridge、配对码、Hook、手机连接状态、日志 |
| 手机审批 | 允许 / 拒绝 / 始终允许 + 审批队列 |
| 后台保活 | Android 前台服务;返回不断开 |
| 多项目侧边栏 | 独立上下文 + 角标 + 时间 |
| Markdown | GFM 渲染 |
| 快捷回复 / 通知 | 待回复 Chip、通知栏摘要与快捷动作 |
| 现象 | 排查 |
|---|---|
| Windows 提示找不到 dist | 在 bridge 执行 npm run build |
| 启动失败 / node 不是内部命令 | 安装 Node.js 并重启终端 |
| 找不到 bridge 目录 | 设置 AGENTLINK_BRIDGE_ROOT 为 bridge 绝对路径 |
| Hook 没反应 | 主机台点「安装 Hook」后重启 claude |
| 编不出 Windows EXE | 安装 VS 2019/2022 与「使用 C++ 的桌面开发」 |
| 模拟器连不上 | 地址用 10.0.2.2:端口,且 Bridge 已启动 |
| 真机连不上 | 同一 Wi‑Fi;填局域网 IP;检查防火墙放行 Node |
验证:http://127.0.0.1:9876/health
android/— Flutter(Android App + Windows 主机台)bridge/— Node.js Bridge 服务bridge/bridge.config.example.json— 配置模板

