返回博客
2026 年 8 月 17 日

2026 远程 AI Coding 技术栈:从开发主机到手机

使用 tmux、Tailscale、Claude Code、Codex、OpenCode 和手机搭建可靠的远程 AI Coding 工作流,不再丢失会话,也不再被大量终端标签淹没。

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 或任务。
  • testnewsession1 之类的 tmux Session 名称很快失去意义。
  • 断线后需要重新 SSH、寻找目录、列出 tmux Session,再猜测应该进入哪一个。
  • 两个 Agent 可能意外修改同一个 Branch 或工作目录。
  • 回来时无法立即知道哪些任务已经完成、失败或正在等待输入。

更多 Agent 不会自动带来更高生产力。如果缺少清晰工作流,它们只会制造更多需要记忆的状态。

解决方法不是再开一个终端标签,而是让技术栈中的每一层只承担一个明确职责,并用可见方式关联主机、代码仓、Session、Agent 和任务。


3. 远程 AI Coding 技术栈的五层结构

把完整技术栈理解为五个互相配合的层次,会清晰很多:

作用
开发主机 保存代码仓并提供真实计算环境
AI Coding Agent 调查问题、编写代码、运行命令并测试结果
tmux 客户端断开后继续保留终端与 Agent Session
Tailscale 在手机与开发主机之间提供私有网络可达性
手机上的 Redock 组织 Project、恢复 Session 并控制持续运行的任务
SSH、tmux、Shell 与 Coding Agent 在远程开发机上的关系图
操作截图 SSH、tmux、Shell 与 Coding Agent 在远程开发机上的关系图 SSH 负责连接开发机,tmux 把终端会话留在开发机上,Shell 则在会话中运行 Claude Code、Codex 或 OpenCode。

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,或者在多个狭窄且没有明确上下文的终端窗口之间频繁切换。

面向 AI Coding Agent 设计的 Redock 移动终端界面
操作截图 面向 AI Coding Agent 设计的 Redock 移动终端界面 移动 Agent 工作流不只有 Shell,Project 上下文、快速输入、Session 恢复与可复用 Action 同样重要。

控制面模型同时发挥两种设备的优势:开发主机负责执行,手机负责监督和指挥。


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 上下文回到对应任务。

一键在持久化 tmux 会话中打开 AI Coding Agent
操作截图 一键在持久化 tmux 会话中打开 AI Coding Agent 在 tmux 中启动 Agent,手机断线后仍可重新连接同一会话。

第六步:检查并回应

你可以在手机上:

  • 查看进度与当前输出。
  • 回答 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。
iPhone 上的 Redock Project 和 Action 配置
操作截图 iPhone 上的 Redock Project 和 Action 配置 将 Project 绑定到 Host 和工作目录,再把常用命令保存为 Actions。

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。

iPhone 上配置的 Redock Background Long Task Action
操作截图 iPhone 上配置的 Redock Background Long Task Action 构建、测试套件等需要在断开连接后继续运行的命令可使用 Background Long Task。

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 技术栈

可以按照这份清单完成并测试工作流:

  1. 选择一台可以保持在线的开发主机。
  2. 在该设备上安装 Claude Code、Codex 或 OpenCode。
  3. 使用独立 Repository、Branch 或 Worktree 隔离并行 Agent。
  4. 让长时间 Agent Session 运行在 tmux 中。
  5. 使用能够识别 Project 与任务的可预测名称。
  6. 通过 Tailscale 连接手机与开发主机。
  7. 使用 Redock 组织 Project、恢复 Session、检查输出并运行可复用 Action。
  8. 在真正离开电脑前,测试断线、重新连接和恢复流程。

先从一台主机、一个 Project 和一个 Agent 开始。只有当 Session 命名、Git 隔离与恢复路径都足够清晰后,再增加并行 Agent。


10. 总结

最好的远程 AI Coding 配置,不是把完整桌面 IDE 塞进手机,而是让强大的开发主机持续工作,同时提供一条清晰、可靠、可以从任何地方监督它们的路径。

AI Coding 把管理问题从单条命令转移到了长时间任务和多个活跃 Agent。可靠技术栈让每一层只承担一个职责:开发主机负责执行,Agent 负责实现,tmux 负责保持,Tailscale 负责连接,手机负责即时控制。

tmux 让 Session 保持运行,Tailscale 让开发主机持续可达,Redock 则组织 Project、Agent、Action 与 Activity。组合起来后,手机就成为 AI 辅助开发中真正实用的控制面。

延伸阅读

在 iPhone 或 iPad 上试试 Redock

用手机控制 Coding Agent,随时进行开发

免费获取 Redock