06.3 远端会话、Bridge 与同步能力

关注源码

  • src/remote/RemoteSessionManager.ts
  • src/bridge/bridgeMain.ts
  • src/cli/transports/*
  • src/server/*
  • src/services/policyLimits/*
  • src/services/remoteManagedSettings/*
  • src/services/settingsSync/*

两种远端能力

1. Remote Session

RemoteSessionManager.ts 主要处理:

  • WebSocket 订阅远端会话事件
  • HTTP 发送用户消息
  • CCR 发起的 permission request/response
  • reconnect / disconnect 状态回调

它把远端 agent 会话投影成本地可消费的 message + permission stream。

2. Bridge / CCR

bridgeMain.ts 负责桥接运行时本身:

  • 环境注册
  • session spawn
  • work item heartbeat
  • backoff / reconnect / give-up
  • session worktree 生命周期
  • remote control 会话循环

可以把它理解成“把本地 CLI 进程变成可被远端控制的工作节点”。

cli/transportsserver 的位置

  • cli/transports/* 负责不同传输协议的结构化 I/O。
  • server/* 负责 direct connect / server-side session 创建。

这两层让“远端交互”不绑定某一个协议实现。

平台控制项为什么单独服务化

下面这些能力没有散落在入口或 UI 里,而是独立成服务:

  • policyLimits
  • remoteManagedSettings
  • settingsSync
  • teamMemorySync

这样做的价值是:

  • 平台控制和产品交互解耦
  • 组织级策略不会污染 query/runtime 主代码
  • 同步与安全检查可独立演化

设计上的关键点

1. 远端运行与本地运行共享消息/任务心智模型

即使执行位置不同,最终仍会被转译成:

  • message stream
  • permission flow
  • task state

2. bridge 是独立运行时,不是简单 WebSocket client

它不仅收发消息,还负责 session 管理、工作分配、失败恢复与子进程生命周期。

3. 平台策略被服务化

策略限制、托管设置、同步系统都通过服务模块进入启动和运行时,而不是 scattered if/else。