目标:讲清 Claude Code 与外部编辑器的集成机制——VS Code WebSocket 连接协议(lock 文件 + auth token)、
/remote-control跨设备远程遥控、Desktop App 架构。素材偏薄但信息密度高。 受众:专业程序员。本机版本2.1.220。
21.1 与 VS Code 的连接协议
~/.claude/ide/ 目录下只有一个 lock 文件:
{
"pid": 527,
"workspaceFolders": ["/Users/jsl/Desktop/thesis"],
"ideName": "Visual Studio Code",
"transport": "ws",
"runningInWindows": false,
"authToken": "0ef63dc0-15ab-4589-af7f-1befb6bb3e94"
}
连接流程
VS Code 扩展启动
│
├─→ 生成 authToken(随机 UUID)
│
├─→ 写入 lock 文件(~/.claude/ide/{pid}.lock)
│ ├─ pid: IDE 进程 ID
│ ├─ workspaceFolders: 当前打开的工作区路径
│ ├─ ideName: "Visual Studio Code" 或 "JetBrains" 等
│ └─ transport: "ws"(WebSocket)
│
├─→ 建立 WebSocket 连接到 Claude Code
│
└─→ Claude Code 验证 authToken → 接受连接 → 双向通信
Token 认证:每次连接生成新 token。Claude Code 验证后才接受。防止其他进程冒充 IDE。
lock 文件的生命周期
- 创建:IDE 扩展启动时
- 持有:连接期间
- 清除:断开时删除
lock 文件是单实例锁——同一时间只有一个 IDE 可以连接。文件名是 {pid}.lock,如果旧进程崩溃留下残留文件,新进程会用新 PID 覆盖。
21.2 跨设备:/remote-control
从二进制 system prompt 确认的功能:
Run /remote-control to take this session with you and pick up right where you left off on any device. Open the Code tab in the Claude mobile app, or visit claude.ai/code in a browser. The session keeps running on this machine while your other devices act as a remote control.
工作机制
你的 Mac(运行 Claude Code CLI)
│
├─→ /remote-control → 生成 session 连接令牌
│
└─→ 手机/浏览器通过 claude.ai/code 连接
└─→ 看到实时对话流
└─→ 可以发送消息
└─→ Agent 循环仍在你的 Mac 上执行
└─→ 远程设备只是"遥控器"
关键认知:这不是云端同步。Session 始终运行在原始机器上。远程设备是输入输出的代理。
Teleport
Ch15 提到的 Ultraplan teleport——方案从 web 端传到本地终端。这是反方向的:Plan 在云端写好 → teleport 到本地执行。/remote-control 和 teleport 配合形成双向通道。
21.3 Desktop App
二进制中有桌面 GUI 的痕迹:
--open标志:启动后打开浏览器窗口- Unix socket 通信
- 系统通知推送
架构推测:
Claude Code CLI(后台守护进程)
└─→ Unix socket / WebSocket
└─→ Electron/Tauri 桌面壳(GUI)
└─→ 或浏览器(claude.ai/code)
但素材偏薄——~/.claude/ide/ 只有一个 lock 文件。二进制中没有更多 IDE 集成细节。
21.4 本章核心带走
-
VS Code 通过 WebSocket + authToken 连接。 lock 文件(
~/.claude/ide/{pid}.lock)存储连接参数。单实例锁。 -
/remote-control是远程遥控。 Session 仍在本地执行。手机/浏览器只是远程 I/O 代理。不是云端同步。 -
Teleport 是反方向。 Plan 从云端传回本地。
/remote-control+ teleport 构成双向通道。 -
集成层设计简洁。 没有复杂 RPC 协议——一个 WebSocket + 一个 JSON lock 文件。