手机上聊得顺,换项目却卡手
Claude Code 的 Remote Control 让你可以在手机上继续对话、确认权限、看进度,外出时很省事。聊天体验不错,但另一件事经常被忽略:你手头通常不止一个仓库。上午改 iOS 客户端,下午看后端 API,晚上还要碰一下内部工具。每个项目有自己的目录、依赖和约定。
在手机上临时开新会话、或从 A 项目切到 B 项目时,选文件夹、敲路径、确认工作目录,往往不如在桌面终端里顺手。Remote Control 擅长接管已经在跑的会话;多项目入口要靠你自己在主机上先组织好。笔记本合盖就睡,组织完也白搭。所以这篇讲的是:把多项目启动器放到一台常开的新加坡 Mac mini 上,手机只负责「选哪个项目会话」,不再负责「找哪个文件夹」。
第一步:固定一个多项目根目录
先约定所有仓库都挂在同一个根下,避免散落在 Downloads、Desktop 和临时路径:
mkdir -p ~/work
cd ~/work
# 示例:三个并行项目
# ios-app / api-server / internal-tools
ls -la
每个项目一个子目录,名字短、好记、和 tmux 会话名一致。例如 ~/work/ios-app 对应会话 ios-app。不要用带空格或过长的路径,手机端选会话时更清晰。
第二步:每个项目一个命名 tmux 会话
用 tmux new -As:会话不存在就创建,存在就附着。SSH 断开或 Remote Control 暂时离开,会话仍在 Mac mini 上跑:
# 进入项目目录并启动/附着同名会话
cd ~/work/ios-app && tmux new -As ios-app
cd ~/work/api-server && tmux new -As api-server
列出会话,确认名字和项目一一对应:
tmux ls
之后从手机 SSH 回来,只需:
tmux attach -t ios-app
不必再 cd 找路径。若会话里已经在跑 claude,附着后就是原来的上下文。
第三步:每个项目一份 CLAUDE.md
多项目最怕 Claude 把 A 仓库的约定带到 B 仓库。在每个项目根放一份简短的 CLAUDE.md,写清本仓库范围:
## 本仓库
- 根目录即本项目;不要改 ~/work 下其他目录。
- 构建与测试命令见下方;不确定时先问再执行。
## 常用命令
- 测试:npm test
- 类型检查:npm run typecheck
不同项目写不同命令和禁忌(例如客户端不要动服务端密钥目录)。Remote Control 从手机发指令时,Claude 仍以当前工作目录的 CLAUDE.md 为准。
第四步:别名或小脚本,一键进对目录
在 Mac mini 的 ~/.zshrc(或你用的 shell 配置)里加别名,减少手误:
alias cc-ios='cd ~/work/ios-app && tmux new -As ios-app'
alias cc-api='cd ~/work/api-server && tmux new -As api-server'
alias cc-tools='cd ~/work/internal-tools && tmux new -As internal-tools'
也可以做一个更通用的小脚本 ~/bin/cc-proj:
#!/bin/zsh
proj="$1"
root="$HOME/work/$proj"
if [[ -z "$proj" || ! -d "$root" ]]; then
echo "usage: cc-proj <proj-name>" >&2
ls "$HOME/work" >&2
exit 1
fi
cd "$root" && tmux new -As "$proj"
chmod +x ~/bin/cc-proj
# 确保 ~/bin 在 PATH 里
cc-proj ios-app
在会话里再启动 Claude Code(或你习惯的 caffeinate -dimsu claude),保证工作目录就是该项目根。先 cd / 附着正确会话,再开 Claude,比在错误目录里开了再改路径省事得多。
第五步:手机侧怎么接,不翻文件夹
组织好之后,从手机回来只有两条主路径:
- Remote Control:接管已经在某个项目 tmux 会话里跑着的 Claude Code。适合继续刚才的对话、点确认。
- SSH 或 UU 远程连接:需要新开项目、看桌面、或 Remote Control 不好用时。SSH 执行
tmux ls,再tmux attach -t <项目名>;需要图形界面时用 UU 远程连接进桌面。
~/.ssh/config 里给机器起个别名:
Host sgmini
HostName 你的机器地址
User 你的用户名
ServerAliveInterval 30
手机终端里 ssh sgmini,然后选会话名即可。目标是:手机上只出现项目名,不出现一长串绝对路径。
第六步:每天快速核对多项目状态
并行几个项目时,收尾扫一眼:
tmux ls
for d in ~/work/*/; do
echo "== $(basename "$d") =="
git -C "$d" status -sb
done
不需要的会话及时关掉,避免旧目录里的 Claude 还在跑、占额度或改错仓库。
为什么要放在常开的整机上
多项目启动器本身只是目录约定加 tmux 命名;要让它「随时可接」,主机需要:
- 一直开着:不合盖、不休眠,会话和 Remote Control 才接得上。
- 是真正的 Mac:iOS/macOS 工具链、本机构建只能在 macOS 上用。
- 稳定合规的使用环境:Claude 长会话和远程控制怕频繁掉线;Claude 账号由你自己开通和登录。
- 整机独享:各项目代码、登录状态和会话记录都在你自己的机器上。
Zumac.Ai 提供的就是这样的环境:位于新加坡的实体 Mac mini M6,整机独享,支持 SSH 与 UU 远程连接,FileVault 全盘加密,退租时抹机重装。新客户整机租用 ¥999/月起,季付 ¥2,697.30,半年付 6 送 1 为 ¥5,994,年付 12 送 2 为 ¥11,988;已购买客户续费保持原价。新客户首单自审核开通当天起租,续费及老客户新订单自付款当天起租。实际延迟取决于你本地的网络线路,建议先租一个月,把「根目录 → 命名会话 → 启动脚本 → 手机接回」跑顺。
小结
- Remote Control 方便手机对话,跨多项目开会话、切目录仍要自己在主机上组织入口。
- 统一
~/work/<项目>,会话名与目录名一致,用tmux new -As创建或附着。 - 每项目一份 CLAUDE.md;用别名或
cc-proj保证先进入正确 cwd 再开 Claude。 - 手机用 Remote Control 接管已有会话,或用 SSH / UU 远程连接按会话名接回,避免在手机上翻路径。
- 每天
tmux ls加各仓库git status,关掉不用的会话。
