Skip to content

Latest commit

 

History

History
90 lines (61 loc) · 3.4 KB

File metadata and controls

90 lines (61 loc) · 3.4 KB

28. Direct Connect、Server 与 Upstream Proxy

所属专题簇:运行协议与接入面

建议前读:10. Bridge、Remote 与 IDE 集成

建议后读:22. CLI Structured IO、Control Protocol 与 Transports

研究问题

Claude Code 在远程环境和容器环境里,如何维持会话连接和网络接入?

一句话结论

Bridge / Remote 只是远程能力的上层接口;更底层还有 direct connect、server 侧会话管理和 upstream proxy,这些共同支撑 Claude Code 的非本地运行形态。

这篇讲什么

这一章解释 direct connect session、server 侧连接管理和 CCR 容器中的 upstream proxy 设计。

如果你不看源码,只看这一章,应该记住什么

  • Claude Code 不是只在本地进程里运行。
  • 远程运行需要同时解决会话连接、权限交互和容器网络接入。
  • upstream proxy 说明 Claude Code 已经考虑到受控容器环境中的代理与证书问题。

源码依据

Mermaid 图:远程直连与代理链路

flowchart TD
    A["本地或宿主 Claude Code"] --> B["direct connect session"]
    B --> C["WebSocket / server manager"]
    C --> D["remote session messages"]
    D --> E["容器内 agent process"]
    E --> F["upstream proxy relay"]
    F --> G["外部 HTTPS / WebSocket 网络"]
Loading

direct connect 负责长期消息连接

src/server/directConnectManager.ts 可以直接确认:

  • 会建立 WebSocket
  • 支持 auth header
  • 会处理 SDKMessage
  • 会转发 permission request

这说明 direct connect 并不是普通远程 shell,而是围绕 Claude Code control message 设计的专用连接方式。

upstream proxy 是容器侧网络接入层

src/upstreamproxy/upstreamproxy.ts 顶部注释非常完整,直接列出它会做的事情:

  • 读取 session token
  • 设置 PR_SET_DUMPABLE
  • 下载并拼接 CA bundle
  • 启动 CONNECT 到 WebSocket relay
  • 暴露 HTTPS_PROXY / SSL_CERT_FILE

这已经远超“开个代理地址”这么简单,说明 Claude Code 需要在受控远程环境中稳定地为子进程和外部工具提供网络接入。

这对研究有什么意义

这一层说明 Claude Code 的远程能力不是只有 UI 层的 remote session,而是已经深入到:

  • 容器运行
  • 安全代理
  • 会话凭证管理
  • 工具子进程的网络环境

这很像一个真正的远程 agent 运行基础设施。

你真正应该记住的点

  • 10 章讲的是远程产品面;这一章讲的是远程基础设施面。
  • direct connect 和 upstream proxy 说明 Claude Code 已经适配受控远程环境。
  • 研究远程能力时,不能只看 bridgeremote,还要看 serverupstreamproxy

延伸阅读