Contents (7)
·
在 Omarchy 上打开 Mac 的 iOS 项目:Tailscale + T3 Code
实操记录:在 Omarchy(Linux)上通过 Tailscale 连上 MacBook Pro,用 T3 Code 配对后打开 Mac 上的 iOS 项目,交给 Claude Code。包括 Omarchy 安装 Tailscale 时 sudo 的坑、两台机器走 DERP 中转的连通测试、t3 pair --tailscale 的配对过程,以及开工前的 git 检查和 CLAUDE.md 设置。
实测日期:2026 年 11 月 14 日。版本:T3 Code 0.1.9,Tailscale 1.104.2。主机名、IP 和配对码均已替换。
上一篇介绍了 T3 Code 是什么、和同类工具有什么区别。这一篇是实操记录:在一台装 Omarchy 的 Linux 电脑前,通过 Tailscale 连上一台 MacBook Pro,用 T3 Code 打开 Mac 上的 iOS 项目,再交给 Claude Code 去改。
整个过程是在 Linux 终端里让 Claude Code 带着做的。它装软件、查状态、测连通,中间也踩了一个坑,下面照实写出来。
先分清谁跑在哪台机器上
iOS 项目要用 Xcode 编译,Xcode 只能在 macOS 上运行。所以项目代码、Xcode、Claude Code 和 T3 Code 服务都留在 Mac 上,Omarchy 只负责显示界面、接收键盘输入。
两台机器之间用 Tailscale 组一个私有网络。Tailscale 基于 WireGuard,装好并登录同一个账号的设备会拿到一个 100.x.x.x 的地址,彼此可以直接访问,不用在路由器上开端口。
Claude Code 在 Mac 上执行的每一条命令,比如 xcodebuild,都在 Mac 上跑。Omarchy 上看到的是结果。
三种连法,这次选了 Tailscale
在 Mac 上运行 t3 up,T3 Code 会问让别的设备怎么连进来。按 t3 --help 的说明,有三种:
- T3 Connect:用 T3 账号登录,跨网络也能连,由 T3 提供的服务中转。
-
局域网(
--lan):同一局域网里的设备都能访问这个端口,唯一的保护是配对码。 -
Tailscale(
t3 pair --tailscale):只有登录同一个 Tailscale 账号的设备能访问,还会自动配好 HTTPS。
这次选 Tailscale,有两个原因:Mac 和 Linux 不总在同一个网络里;访问范围只限自己的设备,比局域网更收得住。
第一步:在 Omarchy 上装 Tailscale
Omarchy 自带安装脚本 omarchy-install-service-tailscale。读一遍脚本可以看到,它会做五件事:用 pacman 安装 tailscale;启用 tailscaled 服务并运行 tailscale up;把当前用户设为 operator,以后运行 tailscale 命令不用加 sudo;开启 Taildrop 文件接收;在状态栏加 Tailscale 图标。
这里踩了一个坑。 Claude Code 没法替用户输入 sudo 密码,于是建议在它的输入框里用 ! 前缀运行脚本。结果所有 sudo 步骤都失败了:
sudo: a terminal is required to read the password
! 前缀运行的命令没有终端,sudo 弹不出密码提示。脚本里不需要 sudo 的几步倒是成功了,于是留下一个半装状态:状态栏插件和 Taildrop 服务都启用了,Tailscale 本体却没装。Taildrop 服务还因为找不到 /usr/bin/tailscale 被系统跳过了。
解决办法是按 Super + Enter 打开一个真正的终端,补跑需要 sudo 的三步:
sudo pacman -S --needed tailscale
sudo systemctl enable --now tailscaled.service
sudo tailscale up --accept-routes && sudo tailscale set --operator="$USER"
tailscale up 会打印一个登录链接,在浏览器里打开并登录。之后 Claude Code 再检查,各项都正常:tailscaled 在运行,已分到 100.x 地址,operator 已设置,Taildrop 服务也自动起来了。
需要 sudo 的安装,自己在终端里跑最省事。Claude Code 适合做安装前读脚本、安装后查状态这两头。
第二步:Mac 加入同一个网络,测连通
Mac 上装好 Tailscale(App Store 版或官网版),从菜单栏图标点 Log in,用同一个账号、同一种登录方式登录,比如同样用 Google,否则 Mac 会进到另一个 tailnet。
回到 Omarchy,tailscale status 列出了两台设备。再测一下连通:
tailscale ping -c 5 <Mac的Tailscale IP>
5 次都有回应,延迟 8–52 毫秒,但每一行都写着 via DERP(tor),最后一行是 direct connection not established。也就是说,两台机器没有直连,流量走的是 Tailscale 在多伦多的中转服务器(DERP)。
tailscale netcheck 显示 Omarchy 这边 UDP 可用,NAT 类型也容易打洞(MappingVariesByDestIP: false)。没直连的原因可能在 Mac 那边的防火墙或所在网络,Tailscale 有时也要过一会儿才建立直连。
这对用 T3 Code 影响不大:传的主要是文字和代码,几十毫秒的延迟感觉不出来。中转流量也是端到端加密的,中转服务器看不到内容。
第三步:在 Mac 上发布 T3 Code 并配对
在 Mac 的项目目录里运行:
t3 pair --tailscale --label omarchy --ttl 15m
它做了两件事:
- 配置 Tailscale Serve,把
https://<Mac名>.<tailnet>.ts.net/映射到本机的 T3 Code 服务。这个映射会一直保留,重启后也在。要撤掉就运行tailscale serve --https=443 --set-path=/ off。 - 生成一个配对链接,配对码放在网址
#token=后面。默认 5 分钟过期,这里用--ttl 15m延长到 15 分钟。
第一次运行时它提示 HTTPS 地址还没响应,因为 Tailscale 要先申请证书。几分钟后从 Omarchy 访问这个地址,返回 HTTP 200,0.28 秒就有响应,证书校验也通过了。
测试时请求的是网站根地址,没带配对码,所以配对码不会被提前用掉。何况 # 后面的部分本来就不会发给服务器,只有浏览器里的页面能读到。
在 Omarchy 的浏览器里打开配对链接,页面自动完成配对。配对完成后,以后要撤销这台 Linux 的访问权限,在 Mac 端 T3 的 Settings → Connections 里操作。
第四步:打开项目,交给 Claude Code
配对后,T3 Code 界面里已经能看到 Mac 环境,打开项目后,项目面板显示了环境名、当前 git 分支,以及和 origin/main 相比的改动行数。
如果项目还没在 T3 里,可以在 Mac 上运行 t3 project add <项目路径>,也可以在网页里添加,环境要选 Mac。
开始前先看一眼 git 状态。这次打开项目时,当前分支已经有 +51/-20 行改动。如果是没做完的工作,最好先提交,或者新建线程时选在新的 git worktree 里运行,免得和 Claude Code 接下来的改动混在一起。
第一条消息不急着改功能,先让 Claude Code 熟悉项目、确认能编译:
先看一下这个 iOS 项目的结构,找出 scheme 名称和可用的模拟器(
xcodebuild -list、xcrun simctl list devices available),然后用模拟器编译一次,确认能通过。最后把编译和测试命令写进项目根目录的 CLAUDE.md,以后每次改完都按它验证。
CLAUDE.md 写好后,以后每次改完代码,Claude Code 都会按里面的命令编译验证。
权限模式建议先用需要审批的一档,Claude Code 每次改文件、跑命令都先经你同意,用顺手了再放宽。签名、证书、真机调试和上传 App Store 这几步,第一次仍要在 Mac 的 Xcode 里手动处理。
一张清单
| 步骤 | 在哪台机器 | 命令或操作 | 注意 |
|---|---|---|---|
| 装 Tailscale | Omarchy | omarchy-install-service-tailscale |
在真终端里跑,sudo 才能输入密码 |
| 登录 | 两台都要 |
tailscale up / 菜单栏 Log in |
同一个账号、同一种登录方式 |
| 测连通 | Omarchy | tailscale ping |
via DERP 表示走中转,能用 |
| 发布并配对 | Mac | t3 pair --tailscale --ttl 15m |
配对码会过期;Serve 映射会一直保留 |
| 打开项目 | 浏览器 | 选 Mac 环境,添加项目路径 | 先看 git 状态 |
| 开工 | T3 线程 | 选 Claude Code,先编译,写 CLAUDE.md | 先用需要审批的权限模式 |
还有一条:Mac 不能睡眠。合盖用要接电源,并在系统设置里关掉自动睡眠,否则 T3 Code 会断开。
Repost this post?
Share with your followers.
Reply