AI Coding Agent 可以在你离开电脑后继续工作很久,但前提是周围的工作流也能跟上。真正使用一段时间后,整套配置很快就不再只是一个终端窗口:多个代码仓、多个 Agent、持续运行的 tmux Session、等待确认的任务,以及位于不同地点的开发主机都会同时出现。
本文介绍如何使用开发主机、tmux、Tailscale、Claude Code、Codex 或 OpenCode,以及手机搭建一套远程 AI Coding 技术栈。更重要的是,我们会讨论如何组织多个 Agent、保留长时间 Session,并让手机成为一个控制面:随时查看进度、回答问题和触发可重复的开发 Action。
1. AI Coding 改变了远程开发工作流
过去的远程开发大多是同步操作:
连接服务器 → 输入命令 → 修改代码 → 断开连接。
Agent 驱动的开发则变成了:
分配任务 → 让 Agent 持续工作 → 回答中途问题 → 检查结果 → 调整方向 → 运行测试或部署。
Claude Code、Codex 和 OpenCode 可以调查代码仓、修改多个文件、执行命令并迭代测试,持续时间远远超过一次普通 Shell 命令。一个开发者可能让一个 Agent 重构 Web 应用,让另一个 Agent 调查 API 故障,同时还有第三个 Agent 在另一个代码仓中准备文档。
瓶颈已经不再是输入代码,而是掌握每个 Agent 正在做什么。
当你离开电脑时,这些任务不应该随终端窗口一起结束。手机的价值也不是变成一台缩小的工作站,而是让你始终可以参与关键决策:检查 Agent 是否仍在运行、回答确认问题、查看失败原因,或者启动下一项确定性操作。
2. 为什么远程 AI Coding 很快就会变得混乱?
这套工作流的第一个版本通常看起来很合理:每个 Project 打开一个终端标签,然后分别启动 Agent。但只要任务持续时间超过你对窗口布局的记忆,问题就会出现。
你开始被大量终端标签淹没:
- 每个代码仓都有一个或多个终端窗口。
- Claude Code、Codex 和 OpenCode Session 分散在不同标签和设备中。
- 无法快速确认哪个 Agent 对应哪个 Repository、Branch 或任务。
test、new、session1之类的 tmux Session 名称很快失去意义。- 断线后需要重新 SSH、寻找目录、列出 tmux Session,再猜测应该进入哪一个。
- 两个 Agent 可能意外修改同一个 Branch 或工作目录。
- 回来时无法立即知道哪些任务已经完成、失败或正在等待输入。
更多 Agent 不会自动带来更高生产力。如果缺少清晰工作流,它们只会制造更多需要记忆的状态。
解决方法不是再开一个终端标签,而是让技术栈中的每一层只承担一个明确职责,并用可见方式关联主机、代码仓、Session、Agent 和任务。
3. 远程 AI Coding 技术栈的五层结构
把完整技术栈理解为五个互相配合的层次,会清晰很多:
| 层 | 作用 |
|---|---|
| 开发主机 | 保存代码仓并提供真实计算环境 |
| AI Coding Agent | 调查问题、编写代码、运行命令并测试结果 |
| tmux | 客户端断开后继续保留终端与 Agent Session |
| Tailscale | 在手机与开发主机之间提供私有网络可达性 |
| 手机上的 Redock | 组织 Project、恢复 Session 并控制持续运行的任务 |
3.1 开发主机
开发主机可以是:
- Mac。
- 已配置 WSL 与 SSH 的 Windows PC。
- Linux 台式机或笔记本电脑。
- 保持在线的家庭服务器。
- 远程 Linux Server 或云开发主机。
操作系统并不是最重要的条件。关键是这台设备能够持续保存代码仓、终端 Session 和 AI Coding Agent,并提供真实工具链:Git 凭据、语言 Runtime、Package Manager、Compiler、Container、Database,以及 Project 需要的其他服务。
笔记本电脑也可以使用,但必须注意休眠设置。如果合上屏幕后操作系统进入 Suspend,tmux 也无法让计算继续。真正需要长时间运行时,应选择可以保持唤醒的设备,或使用本来就需要持续在线的服务器。
3.2 Claude Code、Codex 或 OpenCode
Agent 实际运行在开发主机上。它从这台设备读取代码仓、调用工具、修改文件,并使用主机的计算与网络资源。
手机不需要编译应用、在本地运行 Agent,也不需要替代桌面 IDE。它主要负责:
- 发送或补充一条指令。
- 查看当前输出。
- 在 Agent 等待时给予回应。
- 检查测试是否通过。
- 触发下一项 Action。
这种职责分离让工作流真正可行:开发主机保持强大并保存状态,手机则保持轻量且随时可用。
3.3 tmux 让工作继续运行
SSH 提供连接,tmux 则让终端 Session 拥有独立于当前连接的生命周期。
Agent 运行在 tmux 中时:
- SSH 断线不会自动结束 Agent。
- 手机锁屏不会终止远程进程。
- 切换网络后仍可进入同一个 Session。
- 不同 Project 或 Agent 可以使用独立的命名 Session。
- 电脑终端和手机可以回到 Host 上同一个工作现场。
但 tmux 解决的是持续性,不是组织管理。tmux 可以让 Session 存活,却不会自动告诉你这个 Session 属于哪个 Project、任务、Branch、Worktree 或 Agent。
这正是为什么十个仍在运行的 tmux Session,看起来依然可能像一堆匿名终端标签。
3.4 Tailscale 让开发主机随时可达
Tailscale 使用私有网络连接手机和开发主机。你不需要把使用密码认证的 SSH 直接暴露到公网,两台设备也不必位于同一个物理网络。
开发主机留在家里或办公室,而手机使用蜂窝网络、酒店 Wi-Fi 或其他外部网络时,这一点尤其有用。Tailscale 负责网络可达性,正常的 SSH/Mosh 仍然负责终端连接。
本文只把 Tailscale 作为技术栈中的网络层,不展开完整安装教程。如果需要逐步配置,可以查看 Redock Tailscale 指南。
3.5 手机成为控制面
手机应该是 AI Coding 的控制面,而不是一台缩小的笔记本电脑。
它很适合处理短暂但价值很高的交互:
- 查看 Agent 当前输出。
- 回答确认问题。
- 补充一个约束或修正方向。
- 检查测试结果与错误日志。
- 运行预设 Action。
- 重启服务。
- 触发构建或部署。
- 离开电脑后继续推动工作。
它不适合长时间手动编写大量代码、完整替代桌面 IDE,或者在多个狭窄且没有明确上下文的终端窗口之间频繁切换。
控制面模型同时发挥两种设备的优势:开发主机负责执行,手机负责监督和指挥。
4. 如何同时运行多个 AI Coding Agent 而不产生冲突?
同时启动多个 Agent 很容易,真正困难的是隔离并理解它们的状态。
一个 Project,一个清晰上下文
对于每个活跃 Agent,都应该能明确回答下面这些问题:
| 上下文 | 示例 |
|---|---|
| Host | home-linux |
| Repository Path | ~/code/redock-web |
| Branch 或 Worktree | feature/remote-stack-article |
| Agent | codex |
| tmux Session | redock-web-blog |
| 当前任务 | 编写并验证远程技术栈文章 |
只要其中一个字段含糊,工作流最终就会重新依赖个人记忆。
在文件系统层面隔离任务
多个 Agent 并行修改代码时:
- 为每个 Agent 指定一个明确任务。
- 使用不同 Git Branch。
- Agent 需要同时工作时,使用独立 Git Worktree。
- 不要让两个 Agent 指向同一个可修改工作目录。
- 继续通过正常 Git 流程集成和 Review 改动。
Agent 可以非常快地产生冲突。文件系统隔离能够提前避免那些事后无法靠终端 UI 解决的协作问题。
使用可预测的 Session 名称
好的名称会直接说明 Project 与用途:
redock-ios-feature
redock-web-blog
redock-api-timeout-fix
不要使用一天后就无法理解的名称:
session1
test
new
让任务状态保持可见
至少要能区分下面几种状态:
- Running:Agent 正在工作。
- Waiting for input:需要决策或授权。
- Completed:要求的任务已经完成。
- Failed:命令、测试或 Agent Run 因错误停止。
- Needs review:已经产生结果,但仍需要开发者检查。
目标是停止把 Agent 当作匿名终端标签来管理,转而把它们看成可见的 Project 工作流。
5. 一套实际可用的远程 AI Coding 工作流
下面用一个真实场景串起前面的所有层次。
第一步:在开发主机上启动 Agent
打开正确代码仓,启动 Claude Code、Codex 或 OpenCode,并给出明确任务:
调查连接超时问题,实现修复并运行相关测试。
Agent 此时可以使用完整 Repository 与本地工具链。
第二步:使用 tmux 保持运行
让 Agent 运行在一个名称清晰、独立的 tmux Session 中。即使桌面终端关闭或 SSH Client 断线,Agent 与终端状态仍会保留在开发主机上。
第三步:离开电脑
开发主机保持唤醒并继续执行任务。任务运行的每一分钟不再都需要有人坐在键盘前。
第四步:从手机重新连接
手机处于另一个网络时,Tailscale 让开发主机继续通过私有网络可达。Redock 再通过 SSH/Mosh 连接对应 Host。
第五步:恢复正确的 Project 与 Agent
不再依靠记忆重新拼接路径——哪台 Host?哪个目录?哪个 tmux Session?哪个 Agent?——而是从 Project 上下文回到对应任务。
第六步:检查并回应
你可以在手机上:
- 查看进度与当前输出。
- 回答 Agent 问题。
- 修正任务方向。
- 检查测试是否通过。
- 运行后续 Build、Log 或 Deployment Action。
第七步:回到桌面
回到电脑后,继续使用同一个 Project、同一个 tmux Session 和同一段 Agent 上下文。手机没有创建另一套「移动版工作」,只是在一段时间内控制了原来的工作现场。
6. Redock 位于技术栈的哪一层?
SSH 提供访问,tmux 保留 Session,Tailscale 连接设备,而 Redock 把这些部分组织成可管理的 AI Coding 工作流。
Project 保留上下文
Redock Project 可以把 Host、Repository Path,以及当前代码库使用的 Action 与 Snippet 放在一起。目标是返回开发上下文,而不只是重新连接某台服务器。
在多 Agent 工作流中,这些上下文可以代表:
- Agent 运行所在的 Host。
- Repository 或 Worktree Path。
- Agent 启动命令。
- 关联的 tmux Session。
- 常用 Test、Build、Preview 和 Deployment Action。
Session 更容易恢复
没有工作流层时,每次返回往往都要重复:
ssh host
cd project
tmux ls
tmux attach -t session-name
这些都是标准且实用的命令。问题在于,当它们分散在多个 Host 和 Project 中时,你还必须记住哪个 Session 才是目标。Redock 从 Project 和 Host 工作流提供更直观的恢复入口。
Action 处理可重复操作
并不是每一步都应该再发一条 Agent Prompt。确定性命令通常更适合保存为命名 Action:
- Build。
- Test。
- Git Status。
- Restart Service。
- Deploy。
- View Logs。
Quick Task 会把输出保存为 Run;Background Long Task 可以在远程 tmux 中持续运行;Interactive Action 则在实时终端中打开 Agent 或其他 TUI。
Activity 让长时间任务可以回看
离开电脑后,最困难的问题通常不是「能不能重新 SSH」,而是「我离开期间发生了什么?」保存的 Run 与 Activity 提供了返回任务结果的入口,不必重新打开多个终端再猜测哪个命令已经结束。
Redock 不会替代终端、开发主机或 AI Coding Agent。它在这些工具之上提供一个控制层。
7. 连接断开时会发生什么?
不同类型的中断会影响技术栈中的不同层:
| 情况 | 结果 |
|---|---|
| 手机锁屏或 App 进入后台 | Agent 位于持久 Session 中时,会继续在开发主机上运行 |
| SSH 连接断开 | tmux Session 继续保留在 Host 上 |
| 手机从 Wi-Fi 切换到蜂窝网络 | 可以重新连接同一台设备与 Session;Mosh 能改善网络切换恢复 |
| 笔记本电脑休眠 | 设备无法正常运行,任务可能暂停 |
| 开发主机关机 | Agent 与 tmux 进程停止 |
| Agent 正在等待确认 | 任务暂停,直到用户回应 |
tmux 不是一个神奇的进程托管服务。它可以抵抗客户端断线,但不能抵抗断电或操作系统 Suspend。Tailscale 可以让仍在运行的设备保持可达,却无法让所有休眠设备自动唤醒,也无法在关机后保留进程。
因此,可靠配置需要满足三个条件:开发主机仍在正常运行、Agent 位于持久 Session 中,以及手机拥有返回 Host 的安全网络路径。
8. 更适合移动 Coding 的思维方式
过去的理解是:
把手机当作一台更小的开发电脑。
更合适的理解是:
开发主机负责执行,手机负责监督和控制。
不要在手机上埋头写代码——用它控制你的 AI Coding Agent。
这并不意味着手机是被动的。它负责那些能够解除任务阻塞的关键时刻:补充说明、给予授权、检查失败测试、查看日志、添加约束或启动下一项 Action。它只是避免强迫小型触摸屏模仿自己并不擅长的桌面环境。
9. 搭建自己的远程 AI Coding 技术栈
可以按照这份清单完成并测试工作流:
- 选择一台可以保持在线的开发主机。
- 在该设备上安装 Claude Code、Codex 或 OpenCode。
- 使用独立 Repository、Branch 或 Worktree 隔离并行 Agent。
- 让长时间 Agent Session 运行在 tmux 中。
- 使用能够识别 Project 与任务的可预测名称。
- 通过 Tailscale 连接手机与开发主机。
- 使用 Redock 组织 Project、恢复 Session、检查输出并运行可复用 Action。
- 在真正离开电脑前,测试断线、重新连接和恢复流程。
先从一台主机、一个 Project 和一个 Agent 开始。只有当 Session 命名、Git 隔离与恢复路径都足够清晰后,再增加并行 Agent。
10. 总结
最好的远程 AI Coding 配置,不是把完整桌面 IDE 塞进手机,而是让强大的开发主机持续工作,同时提供一条清晰、可靠、可以从任何地方监督它们的路径。
AI Coding 把管理问题从单条命令转移到了长时间任务和多个活跃 Agent。可靠技术栈让每一层只承担一个职责:开发主机负责执行,Agent 负责实现,tmux 负责保持,Tailscale 负责连接,手机负责即时控制。
tmux 让 Session 保持运行,Tailscale 让开发主机持续可达,Redock 则组织 Project、Agent、Action 与 Activity。组合起来后,手机就成为 AI 辅助开发中真正实用的控制面。