从 iPhone 远程控制 Claude Code。
查看终端输出、审批权限请求、发送命令 — 一切尽在掌中。
English | 中文
Agent Watch Platform 是 Agent Watch 的平台化演进版本,将 Mac 上的 Claude Code 会话状态通过本地 Bridge 推送到 iPhone,并支持在手机端进行权限审批和命令发送。
iPhone (Expo RN) <──── SSE ────> Mac Bridge (Tauri)
Bonjour 发现 HTTP 系统托盘常驻
权限审批 Hooks |
终端预览 v
Claude Code 会话
- 实时终端输出 — 在 iPhone 上查看 Claude Code 的实时操作(读取、编辑、执行命令等)
- 权限审批 — 在手机上审批 Claude 的操作请求(编辑文件?执行命令?)
- 多会话管理 — 同时追踪多个 Claude Code 会话
- 自动发现 — Bonjour/mDNS 局域网自动发现,无需手动输入 IP
- 系统托盘 — Bridge 后台常驻,最小化到 macOS 菜单栏
项目由两个应用组成:
基于 Tauri 2 + Rust (axum) 的桌面应用,功能包括:
- HTTP + SSE 服务(端口
7860–7869) - 系统托盘常驻 + 一键安装 Claude Code Hooks
- mDNS 广播 (
_claude-watch._tcp) - 6 位配对码 + Token 安全认证
- 与 Phase 1 Node Bridge 完全协议兼容
基于 Expo 54 + React Native 0.81 的 iPhone 应用:
- Bonjour 自动发现 Bridge
- SSE 实时事件流 + 断线重连(指数退避)
- Zustand 状态管理
- Expo Router 文件式路由
- 权限审批(9 分钟倒计时)+ 多会话隔离
| 组件 | 最低版本 |
|---|---|
| macOS | 13.0+ |
| Node.js | 20.19+ |
| Rust | 1.70+ |
| Xcode | 16+(iOS 构建) |
| Claude Code | 2.1+ |
git clone https://github.com/anthropics/agent-watch-platform.git
cd agent-watch-platformmake setup或分别安装:
make setup-bridge # Bridge: npm + cargo
make setup-mobile # Mobile: npmmake doctormake dev-bridgeBridge 启动后会在菜单栏显示系统托盘图标,并自动广播 mDNS 服务。
make dev-mobile-ios注意: 本项目使用原生模块(zeroconf、netinfo),需要开发构建,不支持 Expo Go。
- 打开 iPhone 上的 Agent Watch — 自动发现局域网内的 Bridge
- 输入 Bridge 界面上显示的 6 位配对码
- 连接成功!
在终端中启动 Claude Code,所有操作将实时推送到 iPhone。
claude-watch-platform/
├── apps/
│ ├── bridge/ # Tauri macOS 桌面应用
│ │ ├── src/ # React 仪表板(Vite)
│ │ ├── src-tauri/
│ │ │ └── src/
│ │ │ ├── server.rs # axum HTTP/SSE 路由
│ │ │ ├── hooks.rs # Claude Code Hooks 管理
│ │ │ └── lib.rs # Tauri 入口 + 托盘
│ │ └── package.json
│ │
│ └── mobile/ # Expo React Native iOS 应用
│ ├── app/ # Expo Router 路由页面
│ │ ├── pairing.tsx # 配对流程
│ │ ├── dashboard.tsx # 会话列表
│ │ └── session/ # 终端详情 + 命令输入
│ ├── src/
│ │ ├── services/ # Bridge/SSE/Discovery 服务
│ │ ├── stores/ # Zustand 状态管理
│ │ ├── hooks/ # 自定义 Hooks
│ │ └── components/ # UI 组件
│ └── package.json
│
├── Makefile # 统一构建命令
├── LICENSE
├── CONTRIBUTING.md
└── README.md
| 命令 | 说明 |
|---|---|
make setup |
安装所有依赖 |
make dev-bridge |
启动 Bridge 开发模式 |
make dev-mobile |
启动 Expo 开发服务器 |
make dev-mobile-ios |
在 iOS 模拟器运行 |
make build-bridge |
构建 Bridge(.dmg/.app) |
make build-mobile |
构建 Mobile(EAS) |
make test |
运行所有测试 |
make lint |
运行所有 Linter |
make doctor |
检查环境依赖 |
make clean |
清理构建产物 |
- Claude Code 执行工具(如编辑文件)
PostToolUseHTTP Hook 触发,POST 到 Bridge- Bridge 通过 SSE 推送事件到所有已连接客户端
- iPhone 接收 SSE 事件,渲染为终端输出
- Claude Code 遇到权限提示(如 "是否编辑此文件?")
PermissionRequestHook 触发 — Bridge 阻塞响应- Bridge 推送
permission-requestSSE 事件到 iPhone - 用户在 iPhone 上选择允许/拒绝
- Bridge 将决定返回给 Claude Code — 会话继续或停止
Bridge 自动在 ~/.claude/settings.json 安装以下 Hooks:
| Hook 事件 | 用途 | 是否阻塞 |
|---|---|---|
PostToolUse |
捕获工具输出 | 否 |
PreToolUse |
捕获工具调用 | 否 |
PermissionRequest |
转发权限提示 | 是(最长 10 分钟) |
Stop |
检测 Claude 结束响应 | 否 |
Notification |
空闲/权限通知 | 否 |
本项目是 Agent Watch 的平台化演进:
| 特性 | Agent Watch(原版) | Agent Watch Platform |
|---|---|---|
| Bridge | Node.js 脚本 | Tauri + Rust 桌面应用 |
| iOS 客户端 | SwiftUI 原生 | Expo React Native |
| watchOS | ✅ 支持 | 🚧 计划中 |
| 安装 Hooks | 手动运行脚本 | 一键安装(Tauri GUI) |
| 后台运行 | 需保持终端打开 | 系统托盘常驻 |
| 跨平台潜力 | 仅 Apple 生态 | Expo 可扩展 Android |
- 确保 Bridge 已启动(菜单栏应有托盘图标)
- 确认 iPhone 与 Mac 在同一局域网
- 检查防火墙是否阻止了端口 7860-7869
- 执行
curl http://127.0.0.1:7860/status检查 Bridge 是否正常 - iPhone 和 Mac 必须在同一 LAN
- 检查 Hooks 是否已安装:查看
~/.claude/settings.json - 确保 Bridge 日志显示 "Hook: PermissionRequest received"
- 确认 iPhone 已连接 Bridge(绿色状态点)
欢迎参与贡献!请阅读 CONTRIBUTING.md 了解详情。
本项目基于 MIT 许可证 开源。
