Remote Control 是这样一个功能:从手机或浏览器连上正跑在你自己机器上的 Claude Code 会话,接着刚才的进度继续操作官方的说法是这样的——“在办公桌前开始一项任务,然后挪到沙发上用手机接着做,或者换一台电脑在浏览器里接着做”Continue local sessions from any device with Remote Control)。

这里真正需要记住的只有一件事。Claude 从头到尾都跑在你自己的机器上。代码的执行和文件的访问始终留在手边。手机和 claude.ai 是窥看那个本地会话的一扇窗,而不是它运行的地方。

📌 本文的依据:功能行为、可用的套餐、默认值,都是对照 Anthropic 官方文档(Remote Control / Platforms and integrations / Data usage / Advanced setup)核实过的。依赖版本的行为都标注了所需版本。Trusted Devices 还处在测试阶段。

1. Remote Control 是什么——真正在跑的不是云,而是你手边的电脑

听到“让 AI 从手机上做开发”,多数人脑子里浮现的是云端某处启动一个容器的画面。Remote Control 的设计恰好反过来。计算和文件都不挪窝,只挪你操作的位置。

这个差别直接决定了它能做什么。官方列出来的是以下四条。

整个本地环境都能照常用

文件系统、MCP 服务器、工具、项目配置全都照常有效。在手机上敲 @补全出来的是你本地项目里的路径

两块屏幕可以同时用

对话,以及子智能体和工作流的进度,都会在所有已连接的设备之间同步。终端、浏览器还是手机,敲进去的都汇入同一条对话。

可以发照片和文件

照片会直接作为消息的一部分被读取。其他文件则由 Claude Code 下载到你手边的机器上,再以 @ 引用的形式递进去。

扛得住中断

笔记本睡眠了、网断了都不要紧,机器回来之后会自动重连。这段空档里子智能体和工作流的更新会排进队列,连上的那一刻投递过来

最后这一条的作用比听上去大。“上车前让它跑一个构建,下车后收结果”这种用法,中途钻个隧道也不会散架。

用它需要满足的条件

条件 内容
套餐 Pro / Max / Team / EnterpriseAPI 密钥用不了。Team 和 Enterprise 上默认关闭,要等 Owner 在管理后台把开关打开
认证 /login 登录 claude.ai。claude setup-tokenCLAUDE_CODE_OAUTH_TOKEN 这类长期令牌连不上——因为它们只有发起模型请求这一项权限
接入的 API 必须直连 api.anthropic.com。Amazon Bedrock / Google Cloud's Agent Platform / Microsoft Foundry 都用不了。把 ANTHROPIC_BASE_URL 指向别的主机同样不行(v2.1.196 及以上)
环境变量 DISABLE_TELEMETRY / DO_NOT_TRACK / CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC / DISABLE_GROWTHBOOK 都会让功能开关的评估停下来,只要设了其中任何一个就用不了
工作区信任 在项目目录里执行一次 claude,把信任对话框过掉。在主目录里做的话信任不会被保存,所以一定要从项目那一侧开始

⚠️ 第四条关于环境变量的条件最容易漏掉。出于隐私考虑设了 DO_NOT_TRACK 的人不在少数,而恰恰是它导致你被告知“该功能未在你的账号上启用”。这是典型的那种很难联想到是自己配置所致的情形,执行 claude doctor 就能看出卡在了哪一项判定上

2. 从远处干活的路子有四条——哪几条用的是自己的电脑

Claude Code 提供了好几种“人不在终端前也能继续干活”的手段,而第一个岔路口在于:哪些跑在你手边的机器上,哪些跑在云上。按这个轴重新读一遍官方的平台对比表,结果是这样。

手段 触发方式 Claude 运行的地方 适合的用途
Remote Control 连上一个正在运行的会话 你自己的电脑(CLI / VS Code) 给进行中的工作掌舵、审批
Dispatch 从手机发一项任务过去 你自己的电脑(桌面应用) 人不在时整件甩出去
Channels 来自 Telegram、Discord 等的事件 你自己的电脑(CLI) 对 CI 失败之类的外部事件做出反应
Claude Code on the web 在 claude.ai/code 提交任务 Anthropic 的云 手边没有环境的活儿、并行执行

上面三种跑的都是你自己的电脑。所以它们够得着只存在于本地的资产——没有克隆到别处的仓库、要穿过公司内网才能访问的数据库、装好的工具链、部署用的密钥。云端会话在原理上做不到的事情,就落在这里。

有时候云根本不是一个选项

容易被忽视的是,仓库托管在哪里,会替你砍掉一部分选项。官方的限制条款里写着——克隆仓库和创建拉取请求需要 GitHub,GitLab、Bitbucket 这类非 GitHub 的仓库可以作为本地 bundle 送过去,但结果没法推回远端

如果你用的是自建 Git 服务器或公司内部的 GitLab,那么“从外面干活”实际可选的就只剩 Remote Control 和 Dispatch 两个。这不是口味问题,是配置替你定下来的。

3. 怎么开始——三个入口,以及如何取舍

CLI 有三种启动方式,按“是想把一个会话带走,还是想接住好几个”来选。

① 把正在聊的这段对话原样带走

如果你已经在 Claude Code 的会话里了,这一条就够了。

/remote-control

官方的描述是“开启一个承接当前对话历史的 Remote Control 会话”。可以简写成 /rc,传参数就成了会话名(/remote-control 文章校对)。“活儿干到一半要出门”这件事,最短的答案就是它。VS Code 扩展里也能用同一条命令。

② 一开始就带着远程启动

claude --remote-control "项目名"

启动出来的是一个附带远程连接的普通交互式会话。可简写为 --rc在终端里能敲,从手机上也能发。

③ 服务器模式——接住多个会话

claude remote-control

进程作为服务器常驻,等着远程接入。按一下空格键会显示二维码,用手机相机扫一下就直接连上了。

选项 效果
--name "..." 决定在 claude.ai 的会话列表里显示的名字
--spawn worktree 给每个会话单独切一个 git worktree(需要 git 仓库)。默认的 same-dir 会让所有会话共用同一个工作目录,所以改到同一个文件就会冲突。运行期间可以用 w 键切换
--spawn session 只接受单个会话,拒绝后续的接入
--capacity N 并发会话数的上限(默认 32
--continue / --session-id 把已停止的服务器上的会话叫回来(v2.1.200 及以上)

从手机上打开

连接方式有三种。在浏览器里打开会话 URL、扫二维码、从 Claude 应用的列表里挑。在移动应用里,导航栏的“Code”就是会话列表,Remote Control 的会话会用一个电脑图标加一个绿色圆点标出来。

如果还没装应用,在 Claude Code 里执行 /mobile弹出用于下载的二维码iOS / Android)。

💡 二维码不是认证,只是一条近路。不扫也行,从应用的列表里按会话名挑,到的是同一个地方。决定访问权的不是“知不知道 URL”,而是“这是谁的账号”——这一点放在第7章讲。

要是每次都得连一遍嫌烦

自动连接默认关闭,只有显式启动时才生效。想一直连着,就用 /config 里的 Enable Remote Control for all sessions,或者把配置文件里的 remoteControlAtStartup 设成 true

这里有一处设计得很妙的不对称。写在项目配置(.claude/settings.json)里的 false 会被尊重,但 true 会被忽略。这是为了不让一个签入仓库的文件,擅自替所有打开这个仓库的人开启 Remote Control。

4. 手机这一侧能做什么、不能做什么

连上的设备会原样收到终端里正在发生的一切。不过斜杠命令这边划了一条线。

✅ 手机和 Web 上能用

/compact /clear /context /usage /recap /exit
写成带参数的形式的话/model sonnet /effort high /rename /fast /color
/mcp(v2.1.166 及以上)、/config key=value(v2.1.181 及以上)、/autocompact 500k(v2.1.221 及以上)

❌ 仅限本地

/plugin /resume 等,只有在终端 UI 里才成立的那些。加了参数也不管用。
用来切换对话的 /resume 只能在本地,这在实际使用中很有分量——想换一段对话,就得回到电脑前

在终端里会弹出选择器或滑块的命令,在手机上换成了传参数的形式。也就是说,不要单敲 /model,而要写成 /model sonnet

能回答权限提示——这才是重头戏

实际用起来最管用的一条,是权限提示和提问会被转发到手机上。官方明确写着“会一直开着,直到你回答为止”。一个长任务卡在等审批、干等你到家的那段时间,就这么消失了。

不过别的种类的对话框是有期限的。权限提示和提问以外的——比如安全拒绝之后弹出的模型选择——会默认等 5 分钟然后关掉,以“什么都不做”的默认值继续往下走。可以用 dialogExpiry 调整或关闭(v2.1.224 及以上)。

改了模型和 effort,能留多久

操作 生效范围
在设备的模型选择界面里挑 仅限当前会话
发送 /model <名字> 新会话的默认值也跟着变(和在终端里敲是一样的)
挑一个 effort 级别 仅限当前会话。如果用 CLAUDE_CODE_EFFORT_LEVEL 钉死了,这次修改会被拒绝(v2.1.234 及以上)

同样是“改模型”,从 UI 里挑还是发一条命令,留存的时长并不一样。路上顺手切到轻量模型,结果连默认值一起改掉了——事故就是这么来的。

5. 它怎么把你叫回来——推送通知

Remote Control 生效期间,Claude 会发推送通知过来。官方的说法是,通常在长任务结束时,或者需要你做个判断才能继续时发送。你也可以在提示词里写 notify me when the tests finish 这样的话来显式索要。

配置只有 /config 里的两个开关,没有按事件细分的设置

Push when Claude decides

由 Claude 自行判断发出的主动通知。长任务完成属于这一类。

Push when actions required

权限提示和提问。用来让你察觉它停下来了的通知。

有一处很贴心的行为:你正在用终端的时候,它不会发推送。除此之外,把 CLAUDE_CLIENT_PRESENCE_FILE 指向一个标记文件(v2.1.181 及以上),只要那个文件还在,通知就会被跳过——设成解锁屏幕时创建、锁屏时删除,那么“在别的窗口里干活但人就在电脑前”的那段时间也能一并噤声。

📱 收不到通知时的老套路:如果 /config 里显示 No mobile registered在手机上打开一次 Claude 应用就会刷新推送令牌。iOS 上专注模式和通知摘要会拖慢投递,Android 上则是电池优化,这些也要一并确认。

6. 原理——为什么不用开端口也能连上

说到从外面操作家里的电脑,第一件该警惕的事是开入站端口。把 SSH 暴露到外网就成了暴力破解的靶子,VNC 也一样。Remote Control 在结构上避开了这一点。

官方的描述很干脆——“你本地的 Claude Code 会话只发出站 HTTPS 请求,绝不在你的机器上开放入站端口”

① 注册

本地的 claude 向 Anthropic API 把自己注册上去

② 轮询

由它主动去取有没有活儿派下来

③ 中转

手机连上来之后,服务器在两者之间转发消息

所有通信都经由 Anthropic API,并受到与普通 Claude Code 会话相同的 TLS 保护。连接使用多个短命凭据,每一个都只限定于单一用途,并且可以独立吊销

和传统手段的对比

方式 入站端口 路由器设置 在本地执行
直接开放 SSH 需要 端口转发
VNC / 远程桌面 需要 需要
Remote Control 不需要 不需要
云端会话 不需要 不需要

作为穿透 NAT 的副产品,路由器设置、固定 IP、DDNS 全都不需要。老家的电脑也好,公司内网里的机器也好,只要出站通信能出得去就连得上。

7. 安全——门只有一道,那就是你的账号

没有入站端口,网络这一侧的攻击面几乎消失了。那么风险去哪了?转移到账号上了。

二维码不是认证

有些讲解把这件事说错了,但二维码并不是认证的一环。连接方式是“打开 URL / 扫二维码 / 从应用的列表里挑”三种,既然能从列表里挑,二维码就只是个缩短流程的东西。

那么守着这道门的是什么?官方在自动连接那一节里这样写——“自动连接用的是你本人的 claude.ai 账号登录,因此它开出的会话只会出现在你自己账号的 Claude 应用里,不会给任何其他人访问权”会话是绑在账号上的,而不是取决于谁知道那个 URL。

而且“门只有一道”这件事,从官方自己的措辞里也读得出来。Trusted Devices 的说明里写着“把 Remote Control 的访问权绑定到已知设备和一次近期的认证上,而不只是一个已登录的账号。反过来说,默认的那道门恰恰就是“已登录的账号”这一道

一道门也不算弱,以及这依赖于什么

入口不是常设的

只在会话运行期间存在。把进程停掉,它就没了。这不是一扇能被 24 小时盯着撬的门

长期令牌连不上

CI 用的 CLAUDE_CODE_OAUTH_TOKEN 就算泄露,也没法拿来做远程操作。权限是切开的

一道门的强度就是整体的强度

如果光靠密码就能登进去,防御就只值一个密码。这里弱,别的都白搭

于是该做的事收敛成了一件——给 claude.ai 设置通行密钥(passkey)。密钥绑定在设备上,能抗钓鱼,而且生物信息本身不会交给 Anthropic(保存下来的只有公钥,以及显示名、平台、注册时间这类基本元数据)。如果是 Team 或 Enterprise,还能用 Trusted Devices 在整个组织范围内强制要求已注册设备加上 18 小时以内的登录

对话记录会保存在服务器上

有一点得老老实实写出来。连接期间,会话的完整记录——你的消息、Claude 的回复、工具的执行内容——会保存在 Anthropic 的服务器上。这是为了跨设备同步,以及断线之后能恢复。它不是端到端加密的。

账号 保留期限
Free / Pro / Max(用于模型改进:开 5 年
Free / Pro / Max(关) 30 天
Team / Enterprise / API 30 天

设置随时可以在 claude.ai 的隐私设置里改。实行零数据保留(ZDR)的组织,压根就无法启用 Remote Control。

公平起见还要补一句,普通的 Claude Code 本来就把所有提示词和输出都发给了 API,对话记录也早已以明文躺在本地的 ~/.claude/projects/(默认 30 天,可用 cleanupPeriodDays 修改)。Remote Control 新增的部分是“为了同步,服务器那一侧也留下了一份实体”

手机丢了怎么办

最快也最可靠的做法,是在电脑上把 claude 进程停掉。入口本身就没了。在此基础上再改密码并退出登录。如果用了 Trusted Devices,在账号设置的 Trusted devices 里把那台设备删掉,凭据会立刻失效

手机那一侧并没有常驻着一把“通往电脑的钥匙”。应用的登录状态就是全部,所以锁屏和通行密钥本身就构成了防御。

实际使用中真正咬人的风险

⚠️ 剩下的两个风险都不在技术上,而在运用上。

① 在小屏幕上,你读不完自己正在批准的那条命令的全文。能在手机上答复权限提示是最大的好处,但也正因为如此,才会有人在路上一目十行地按下“允许”。在握着生产环境密钥的会话里尤其如此。

② 一旦和跳过权限的模式叠在一起,看门的就没了。把省略权限提示的用法和远程操作叠加起来,等于从外面去碰一个连一道审批闸门都没有的东西。只选其中一样,才是安全的那一侧。

另外,用 --sandbox 做隔离是个可选项,但原生 Windows 上不支持沙箱(WSL 2 则可以)。取决于你的配置,可能得按“这道保险用不上”来打算。

想彻底禁止的话,可以用 disableRemoteControl 设置把它关掉。管理员也可以从托管设置里按设备禁用

8. 连不上、掉线时的原因排查

错误信息会相当具体地指名原因。把有代表性的几条整理如下。

症状 原因与处理
提示需要 claude.ai 订阅 当前是 API 密钥认证。先取消 ANTHROPIC_API_KEY,再执行 claude auth login
提示需要完整作用域的令牌 你用的是 setup-token 一类的长期令牌。它只能用于模型请求,所以要用 claude auth login 重来一遍
提示该功能未在账号上启用 多半是改套餐之后缓存还是旧的。执行 claude auth logoutloginclaude doctor 能看出卡在了哪一项判定上
提示需要功能开关评估 DISABLE_TELEMETRY 那一组四个变量里设了其中之一。信息里会指名是哪个变量,所以 shell 环境和 settings.jsonenv 块都要看一遍
提示不是经由 Anthropic API 要么是 Bedrock / Foundry 之类的供应商设置,要么是 ANTHROPIC_BASE_URL 指向了别的主机

掉线之后,该不该重连

这一块官方明确写了“先读原因再判断”。连接失败时会显示理由,而在下面这三种情形里,平时那句“执行 /remote-control”的指引是被刻意省略掉的

别的设备把它抢走了

只有想抢回来的时候才重新执行

在别的设备上结束或归档了

重新执行会把已归档的也重新打开

服务器找不到这个会话

有可能是从别的设备上删除

网络断了的时候,模式不同行为也不同

这一段不知道的话会犯迷糊。机器醒着但够不着网络的状态一直持续下去的话——

  • 服务器模式大约 10 分钟后放弃,进程退出。重新执行 claude remote-control 开一个新会话
  • 交互式会话可以就这么在本地继续干活。只要故障还在,Claude Code 就会一直重试,网络回来之后它自己会重连

另外,用 Ctrl+C 停掉服务器的话,会话在大约 4 小时内还叫得回来(claude remote-control / --continue / --session-id)。超过之后就只能重新开了。

💡 要在远程机器上用,就在 tmuxscreen 里启动。官方也明确写着,断开 SSH 会让进程死掉、会话变成离线。在“服务器上的 Claude Code 从手机操作”这种配置里,这是必须遵守的规矩。

9. 和 Dispatch 怎么分工

两者都是“跑的是你自己的电脑”,所以很容易混。分水岭在于出门之前要不要做准备。

观点 Remote Control Dispatch
事前准备 需要(先在电脑上启动) 不需要(配对过之后,想起来随时就能发)
从哪里开始 电脑那一侧。手机之后再汇入 手机那一侧
电脑这一侧的入口 CLI / VS Code 扩展 桌面应用
对话的结构 一条对话在所有设备之间同步 向常驻的对话提要求,另外生出一个会话
套餐 Pro / Max / Team / Enterprise 仅 Pro / Max
适合的场合 给进行中的工作掌舵、审批 人不在时整件甩出去

这不是二选一。从外面丢活儿进来就用 Dispatch,离开座位之前先连上就用 Remote Control,这样并用才自然。Dispatch 的细节和安全界线,整理在专文里。

总结

  • Remote Control 是“不挪执行的地方,只挪操作的地方”的功能。本地的文件、MCP、工具照常可用
  • 只走出站 HTTPS,不开入站端口。路由器设置和固定 IP 都不需要,攻击面比把 SSH 暴露到外网小得多
  • 二维码不是认证,只是近路。访问权由“这是谁的账号”决定,而不是“知不知道 URL”
  • 门只有一道,就是 claude.ai 账号。所以设置通行密钥是第一优先。Team 和 Enterprise 还能用 Trusted Devices 把设备和生物识别绑上
  • 连接期间,完整会话记录会保存在服务器上。保留期限按是否用于模型改进分成 5 年和 30 天
  • 只在本地进程活着的时候有效。要在远程机器上用,就在 tmux / screen 里启动
  • 剩下的实务风险不在技术而在运用——在小屏幕上按下批准。握着生产环境密钥的会话里尤其要留神

FAQ

Q1. 桌面应用里也能用吗?

官方列为启动方式的是 CLI 和 VS Code 扩展,没有写从桌面应用开始的步骤。另一方面,文档里既有“设置 > Claude Code > Enable remote control by default”这个开关在桌面应用里也有的说法,也有在 Claude Desktop 里恢复一段曾经开着 Remote Control 的对话,会重新连上已有会话的说法。先去设置界面看一眼,没有再用 CLI,这样最稳。

Q2. 在桌面应用里推进的对话,能从 CLI 接手吗?

很有可能可以。官方明确写着 VS Code 扩展、JetBrains 插件、桌面应用都会写入 ~/.claude/,而对话保存在 ~/.claude/projects/。流程是在同一个目录里执行 claude --resume、选中那段对话,然后执行 /remote-control

Q3. 我的 Node.js 版本很旧,还能装 CLI 吗?

能装。原生安装器不使用 Node.js——Windows 上就是在 PowerShell 里执行 irm https://claude.ai/install.ps1 | iex。npm 版要求 Node.js 22 及以上,但它本体同样是原生二进制,旧 Node 上只会冒一个 EBADENGINE 警告,安装本身照样能完成。

Q4. 电脑睡眠了会怎样?

会话会变成离线,但机器一恢复,Claude Code 就会自动重连。这段空档里子智能体和工作流的状态更新会排进队列,恢复之后投递过来。不过如果是把进程本身结束掉了(关掉终端、退出 VS Code),几秒之内就会显示为离线,需要手动把它叫回来。

Q5. 同时能连几个会话?

交互式会话是一个进程对应一个远程会话。想用一个进程接住多个,就用服务器模式(claude remote-control)。默认上限是 32 个会话,可以用 --capacity 改。

Q6. 多个会话会不会把同一个文件搞坏?

在默认的 --spawn same-dir 下,所有会话共用同一个工作目录,所以改到同一个文件就会冲突。指定 --spawn worktree 之后,会给按需开出的每个会话分配专属的 git worktree(需要 git 仓库)。运行期间也可以用 w 键切换。

Q7. 能从手机上用 /resume 换到别的对话吗?

不能。/resume仅限本地的命令,加了参数也不管用。另外,如果在终端那一侧用 /resume 切换了对话,已连接的设备不会收到切换后的历史和标题,但新消息会双向流向终端里打开着的那段对话

Q8. 和 Claude Code on the web 有什么区别?

执行的地方不同。两者用的都是 claude.ai/code 的界面,但 Remote Control 在你的机器上执行,所以本地的 MCP 服务器、工具、项目配置都还有效。Claude Code on the web 在云上执行,因此手边没有环境也能跑,代价是够不着本地的资产。

Q9. 经由公司的代理或 LLM 网关也能用吗?

用不了。只要 ANTHROPIC_BASE_URL 指定了 api.anthropic.com 以外的主机就无法使用(v2.1.196 及以上)。经由企业版 Claude apps gateway 的登录同样不在范围内。有零数据保留之类合规设置的组织也无法启用。

相关文章