Skip to content

12 — Bridge / Remote

概述

Claude Code 不仅在终端中运行——它还可以与 IDE(VS Code、JetBrains)和 Web 界面(claude.ai)双向通信。这种通信通过 Bridge 系统实现。

Bridge 解决的核心问题是:如何让一个运行在终端中的 CLI 工具与 GUI 应用实时交互?

  • IDE 扩展可以发送文件、选区、指令给 Claude Code
  • Claude Code 可以在 IDE 中打开 Diff 视图、跳转到代码位置
  • 权限确认可以在 IDE 侧边栏或 claude.ai 网页上完成
  • 远程会话允许从任何设备控制 Claude Code

架构总览

Bridge 系统 (src/bridge/)

Bridge 是 双向通信通道,连接 CLI 和 IDE 扩展。

通信协议

Bridge 使用 JSON-RPC over 本地 Socket 通信。IDE 扩展和 CLI 各自有一端:

核心文件

文件说明与其他模块的关系
bridgeMain.tsBridge 主入口Feature Flag: BRIDGE_MODE
bridgeApi.tsBridge HTTP/RPC API处理来自 IDE 的请求
bridgeMessaging.ts消息收发双向消息队列
bridgePermissionCallbacks.ts权限回调与权限系统的四方竞速集成
bridgeConfig.ts配置管理Socket 路径、端口等
replBridge.tsREPL 集成将 Bridge 消息转为 REPL 事件
initReplBridge.ts初始化启动时建立连接
bridgeEnabled.ts启用判断检查 IDE 是否在运行
bridgePointer.ts定位信息IDE 光标位置、选区
bridgeStatusUtil.ts状态工具连接状态检查
sessionRunner.ts会话运行器管理 Bridge 会话生命周期
inboundMessages.ts入站消息处理解析 IDE 发来的消息
inboundAttachments.ts入站附件处理 IDE 发来的文件/图片
pollConfig.ts配置轮询定期同步 Bridge 配置
capacityWake.ts容量唤醒从 idle 状态唤醒
jwtUtils.tsJWT 工具认证 token 管理
workSecret.ts工作密钥Bridge 通信加密
trustedDevice.ts可信设备设备信任管理
flushGate.ts刷新门控确保消息按序发送

Bridge 与权限系统

Bridge 是权限系统 四方竞速 的重要参与者。当工具需要权限确认时,Bridge 将请求同时发送给 IDE 侧边栏和终端弹窗。用户可以在任一端确认:

Remote 系统 (src/remote/)

Remote Session 允许通过 WebSocket 从远程控制 Claude Code。主要场景:

  • claude.ai 网页端控制本地 CLI
  • SSH 连接到远程服务器上的 Claude Code

Remote Session 架构

文件说明
RemoteSessionManager.ts远程会话管理器
SessionsWebSocket.tsWebSocket 连接管理
sdkMessageAdapter.tsSDK 消息格式适配器(将内部消息转为 SDK 格式)
remotePermissionBridge.ts远程权限桥(权限请求通过 WebSocket 转发)

Server (src/server/)

Direct Connect Server 允许 IDE 扩展直接连接到 Claude Code(不经过 Anthropic 服务器):

文件说明
directConnectManager.ts直连管理器(本地 HTTP 服务器)
createDirectConnectSession.ts创建直连会话
types.ts类型定义

Direct Connect 比 Bridge 更简单——它是一个本地 HTTP 服务器,IDE 扩展直接发送 HTTP 请求,无需 Socket 连接管理。

CLI IO (src/cli/)

CLI IO 模块处理 非交互模式 的输入输出。当 Claude Code 以 --print 模式运行时,不启动 REPL,而是通过这些模块处理 IO。

文件说明使用场景
print.tsPrint 模式输出claude --print "..."
structuredIO.ts结构化 IO (JSON NDJSON)SDK 集成、管道操作
remoteIO.ts远程 IORemote Session 的 IO 适配
exit.ts退出处理清理资源后退出
update.ts自动更新检查启动时检查新版本

Transports

Transport 层抽象了消息传输方式,支持多种协议:

文件说明
transports/HybridTransport.ts混合传输(自动选择最佳协议)
transports/SSETransport.tsSSE (Server-Sent Events) 传输
transports/WebSocketTransport.tsWebSocket 传输
transports/ccrClient.tsCCR (claude.ai) 客户端
transports/SerialBatchEventUploader.ts批量事件上传
transports/WorkerStateUploader.tsWorker 状态上传

Upstream Proxy (src/upstreamproxy/)

文件说明
upstreamproxy.ts上游代理服务器
relay.ts请求转发

用于企业环境中需要通过代理服务器访问 Anthropic API 的场景。