11. 远程 / Bridge / 多端连接架构
CC Learn Docs
11. 远程 / Bridge / 多端连接架构
范围
src/bridge/bridgeMain.tssrc/bridge/replBridge.tssrc/bridge/sessionRunner.tssrc/remote/RemoteSessionManager.tssrc/remote/SessionsWebSocket.tssrc/server/directConnectManager.tssrc/upstreamproxy/upstreamproxy.ts
1) 远程能力分层
- Bridge(
bridge/*):把本地 CLI 会话注册到远端环境并维护工作分发。 - Remote Session(
remote/*):订阅远程会话消息并回传用户输入/权限响应。 - Direct Connect(
server/*):直接 ws 管道模式。 - Upstream Proxy(
upstreamproxy/*):容器侧代理与证书注入。
2) Bridge 工作流图
flowchart TD
A[bridge init] --> B[注册环境/会话]
B --> C[poll work]
C --> D[spawn child session]
D --> E[sessionRunner解析活动/权限请求]
E --> F[上报活动与状态]
F --> C
3) Bridge 关键机制
bridgeMain.ts:poll/backoff/session lifecycle 主循环,处理超时、重连、session token 更新。replBridge.ts:REPL 侧桥接核心,转发 messages/control requests。sessionRunner.ts:子进程 NDJSON 解析,抽取 tool activity、first user message、permission requests。
4) RemoteSessionManager + SessionsWebSocket
RemoteSessionManager负责协议编排:SDK 消息、control_request/control_response/cancel。SessionsWebSocket负责连接层:鉴权头、心跳、重连、永久 close code 判定。
两者分离让传输层与业务层职责清晰。
5) Direct Connect
directConnectManager.ts 提供轻量直连:
- 连接单个 ws endpoint。
- 直接收发 SDK/control 消息。
- 用于特定部署模式下的简化链路。
6) Upstream Proxy 设计
upstreamproxy.ts 负责容器内代理基础设施:
- 读取 session token
- 设置 non-dumpable
- 拉取 CA bundle
- 启动本地 relay
- 暴露 HTTPS_PROXY/SSL_CERT_FILE 环境
强调 fail-open:任何一步失败都不应阻断主会话。
7) 值得学习的点
- 远程体系严格区分“会话编排、传输连接、子进程执行、代理注入”四层。
- control request/response 协议贯穿本地与远端,权限交互一致。
- 重连/backoff/永久错误码处理较成熟,适合长期连接场景。
8) 风险点
- 多链路并存(bridge、remote ws、direct connect、upstream proxy),排障路径较长。
- session ID 兼容层(infra/compat)变更需格外谨慎。
9) 证据文件
src/bridge/bridgeMain.tssrc/bridge/replBridge.tssrc/bridge/sessionRunner.tssrc/remote/RemoteSessionManager.tssrc/remote/SessionsWebSocket.tssrc/server/directConnectManager.tssrc/upstreamproxy/upstreamproxy.ts