Skip to main content

BRIDGE_MODE — 远程控制

Feature Flag: FEATURE_BRIDGE_MODE=1 实现状态:完整可用(v1 + v2 实现) 引用数:28

一、功能概述

BRIDGE_MODE 将本地 CLI 注册为”bridge 环境”,可从 claude.ai 或其他控制面远程驱动。本地终端变为一个”执行者”,接受远程指令并执行。

核心特性

  • 环境注册:本地 CLI 向 Anthropic 服务器注册为可用的 bridge 环境
  • 工作轮询:长轮询(long-poll)等待远程任务分配
  • 会话管理:创建、恢复、归档远程会话
  • 权限透传:远程权限请求发送到控制面,用户在 claude.ai 上批准/拒绝
  • 心跳保活:定期发送 heartbeat 延长任务租约
  • 可信设备:v2 支持可信设备令牌增强安全性

二、实现架构

2.1 版本演进

2.2 API 协议

文件:src/bridge/bridgeApi.ts Bridge API Client 提供 9 个核心操作:

2.3 认证流程

OAuth 刷新:API client 内置 withOAuthRetry 机制。401 时调用 handleOAuth401Error(同 withRetry.ts 的 v1/messages 模式),刷新后重试一次。

2.4 安全设计

  • 路径穿越防护validateBridgeId() 使用 /^[a-zA-Z0-9_-]+$/ 白名单验证所有服务端 ID
  • BridgeFatalError:不可重试的错误(401/403/404/410)直接抛出,阻止重试循环
  • 可信设备令牌:v2 通过 X-Trusted-Device-Token header 增强安全层级
  • 幂关注册:支持 reuseEnvironmentId 实现会话恢复,避免重复创建环境

2.5 数据流

2.6 模块结构

三、关键设计决策

  1. 长轮询而非 WebSocketpollForWork 使用 HTTP GET + 10s 超时。简单可靠,无需维护 WebSocket 连接
  2. OAuth 刷新内嵌:API client 自带 withOAuthRetry,无需外层重试逻辑
  3. ETag 条件请求:注册时支持 reuseEnvironmentId 实现幂等会话恢复
  4. v1/v2 共存:代码中同时存在两套实现,v2 是更安全的升级版
  5. 权限双向流动:本地权限请求发送到 claude.ai,用户在 web 上审批

四、使用方式

五、外部依赖

六、文件索引