交接(Handoff)

将项目发送到你自己的某台机器上,即使合上笔记本,智能体也能继续工作;用手机随时查看运行进度,并通过 Take back 把成果带回本机。

**交接(handoff)**会把项目迁移到你的某台机器上,在你合上笔记本期间,由智能体在那里持续工作。等你回来后,Take back 会把项目按智能体离开时的状态带回本机。

这与 远程控制 不同:在远程控制中,手机只是查看这台桌面的窗口。而交接是在另一台机器上运行,你的桌面端完全不需要保持唤醒。

首次交接之前

打开 Settings → Machines,选择一台机器并点击 Handoff。弹出的面板会检查这台机器,并列出仍然缺少的内容,每一项旁边都附有修复方式:

需要原因
git携带你的历史记录和未提交的工作。
rsync将项目来回复制,只传输有变化的部分。
node 18 or newer运行智能体的命令行工具。
systemd 用户服务即使 SSH 会话结束,运行也不会中断。
Stay running after logout如果不开启,最后一个会话结束时所有进程都会停止,且无人重新启动。
tmux (可选)让普通 shell 标签页保持存活。智能体不使用它。

Install all missing 会一次装齐,你也可以逐项安装。每条命令在运行前都会完整展示,并带有 Copy 按钮,方便你粘贴到自己的终端中执行。

Hand off to this machine 面板,显示可用内存、磁盘、核心数和负载,Needs attention 下列出 node 18 和 Stay running after logout,旁边分别有 Install 和 Turn on 按钮

该面板还会检测机器的剩余资源——可用内存、可用磁盘、核心数和负载——如果资源紧张,会直接告诉你,而不是等到之后你才纳闷为什么构建这么慢。

智能体登录刻意设计为手动操作

你需要在那台机器上的真实终端里登录 Claude 或 Codex。1DevTool 不会从这台电脑复制任何凭据,面板上也明确写着:在机器上登录,绝不从此处复制。你的智能体配置会一并传过去,其中仅限本地的路径和 MCP 命令会针对目标机器重写。

交接项目

在项目的侧边栏菜单中选择 Hand off to a machine…。它同样出现在 Settings → Machines 中该机器所在的行,以及交接任务视图中。

面板会要求你填写四项内容:

  1. 机器和智能体:用来运行任务。
  2. 对话:继续已有对话,或新建一个。智能体在无界面模式下运行,你通过日志查看它的工作。
  3. 接下来要做什么,用你自己的话描述——"完成迁移,运行测试,并修复失败的部分。"
  4. 确认本机上没有任何东西正在运行此项目,以免复制到编辑到一半的内容。项目在远端期间,本地编辑会被暂停。

如果没有人在场批准提示,请勾选 Run without asking;不勾选的话,智能体会在遇到第一个提示时停下。该选项只影响那台机器,绝不影响这台电脑。

任何仍然阻碍交接的事项都会以标签(chip)的形式列出,点击即可直接跳转到对应字段。

会复制哪些内容

整个项目、它的 Git 历史以及对话,都通过 rsync 传输:

  • 已跟踪和未跟踪的文件
  • 已暂存和未暂存的更改
  • 删除操作、可执行权限位和符号链接
  • .git 本身

因此无需"先推送到 GitHub"——机器上的起点就是你磁盘上的当前内容,包括写到一半的修改。

Left out 以可取消勾选的标签形式显示被跳过的模式,Also leave out 则可以添加额外的排除项。名为 build、dist 或 target 的文件夹会被特意保留:它们里面常常包含真正的源码。

你的 .env 也会一并传输——通过 stdin 写入、设置为 chmod 600,并以原子方式替换。文件名和变量名称会展示给你,变量的值绝不会被记录到日志。

内容到达后,智能体会作为 systemd --user 单元运行,这正是让笔记本可以合上的原因。

后续指令在机器上排队

你可以随时输入下一条指令,包括当前运行仍在进行时。机器会先保存它,并在当前运行结束的那一刻立即开始执行——无论你的笔记本是合上还是已退出。队列保存在那台机器上,而不是你的应用里。

任务视图会把机器的日志实时回传:智能体文本、工具调用、结果和退出状态,每次运行都有编号。

在手机上打开

Open on phone 出现在交接成功页面、任务视图和机器所在的行中。用手机相机扫描二维码,页面就会在 Safari 或 Chrome 中打开——无需安装任何应用,页面由那台机器通过 Cloudflare 快速隧道提供服务,所以即使你的笔记本合上,它也能继续工作。

在手机上你可以:

  • 查看实时日志——与桌面任务视图显示的条目相同。
  • 发送下一条指令——如果有运行正在进行就排队,否则立即开始。
  • 停止当前运行。
  • 打开 shell。 一个 6 位数的 Admin PIN 可以在手机浏览器中打开机器上的 tmux shell。关闭标签页后它依然存在,并会随屏幕大小调整。
  • 在运行结束时收到推送通知——每次运行结束都会推送一条,队列推进到下一项时也会推送。目前 Android Chrome 已支持;在 iPhone 上需要先将该页面添加到主屏幕。

扫码页面会列出所有已打开的手机会话,并提供 Sign out all,而 Turn off 会彻底关闭该链接。New code 会签发新的二维码和 PIN,且不会让现有手机退出登录。当某台机器上的最后一个交接被取回时,手机访问会自动关闭。

机器上的 cloudflared 在运行前会对照其 GitHub 发布版本的摘要(digest)进行校验。

Take back

Take back 会按一个绝不会丢失任何内容的顺序把成果带回:

  1. 机器上的队列被冻结,因此不会有新的运行在你不知情时启动。
  2. 当前运行被停止。
  3. 项目通过 rsync 带着智能体的更改同步回本机。
  4. 在机器上创建的单元被清理掉。

去程时被排除的模式在回程时同样适用,因此 Take back 绝不会删除从未发送过的内容。