这一章解释当前快照中的远程链路:Bridge 是什么,Remote session 怎么管理,IDE/远端控制与本地 REPL 是什么关系。
Claude Code 在这份快照里显然不只支持“本地终端单机模式”。bridge/ 和 remote/ 目录表明它还支持:
- IDE 或外部控制端到 CLI 的桥接
- 远程会话管理
- 通过 WebSocket/HTTP 维持远端交互
- worktree/remote 隔离下的子任务执行
- Bridge 主循环:src/bridge/bridgeMain.ts
- Remote 会话管理:src/remote/RemoteSessionManager.ts
- AppState 中的 bridge/remote 字段:src/state/AppStateStore.ts
/session命令入口:src/commands/session/index.ts
flowchart LR
A[本地 REPL] <--> B[AppState remote / bridge state]
B <--> C[Bridge Loop / RemoteSessionManager]
C <--> D[WebSocket]
C <--> E[HTTP POST]
D <--> F[Remote Session / CCR]
E <--> F
F <--> G[IDE / Web / 外部控制端]
src/bridge/bridgeMain.ts 直接暴露了 Bridge 的几个核心特征:
- 有独立的
runBridgeLoop(...)主循环。 - 会维护活跃 session 集合、session 计时器、work item 心跳。
- 使用 backoff 配置处理连接失败和系统休眠恢复。
- 会和 trusted device、work secret、session spawner 等协作。
从这些细节可以判断:Bridge 不是“简单的端口转发”,而是一个面向会话生命周期管理的桥接运行时。
src/remote/RemoteSessionManager.ts 则更像一个远程会话客户端:
- 通过
SessionsWebSocket连接远程会话。 - 接收
SDKMessage。 - 处理 control request / control response。
- 管理远程 permission request 和取消。
- 通过 HTTP POST 发送用户消息到远程端。
从它的回调定义可见,这条链路至少有:
- 连接
- 重连
- 断连
- 权限请求
- 错误处理
src/state/AppStateStore.ts 里有大量 remote 和 replBridge 状态字段,例如:
remoteSessionUrlremoteConnectionStatusreplBridgeEnabledreplBridgeConnectedreplBridgeSessionActivereplBridgeReconnectingreplBridgeSessionUrl
这说明远程/bridge 不是一次性动作,而是 UI 会持续观测和展示的长期状态。
src/commands/session/index.ts 的定义表明:
- 命令名为
session - 别名是
remote - 描述是
Show remote session URL and QR code - 只在 remote mode 下启用和显示
这直接证明 remote session 在用户交互层有明确入口,而不是纯内部功能。
可以把它理解成两层:
- 本地 REPL 负责当前终端中的主交互与渲染。
- Bridge/Remote 负责把这套交互映射到更远的控制平面、远程 worker 或外部客户端。
因此,Bridge/Remote 是横切能力,不是替代 REPL 的另一套 UI。
需要特别说明的是,以下内容虽然在源码里有明确结构,但无法仅靠当前仓库静态验证真实运行结果:
- 真实远端服务地址和协议兼容性
- trusted device 实际认证行为
- session ingress 和 token 刷新真实交互
- 与 claude.ai 或 IDE 客户端的完整联动
所以对这部分内容,文档应以“结构说明”为主,而不是承诺可在当前仓库中直接复现。
- 从 src/commands/session/index.ts 确认用户入口。
- 再看 src/state/AppStateStore.ts 理解运行时状态面。
- 再分别看 src/bridge/bridgeMain.ts 和 src/remote/RemoteSessionManager.ts。
远程与桥接能力是 Claude Code 很重要的一条产品线。它让 CLI 不再只是本地终端程序,而是可以被外部会话系统、IDE 和远端 worker 纳入统一工作流。