第22章:IDE 桥接——编辑器中的 AI

两个世界的融合

程序员通常在两个地方工作:

  1. 1. IDE(集成开发环境):VS Code、JetBrains 等——写代码、看文件、调试
  2. 2. 终端(Terminal):运行命令、管理 Git、执行脚本

Claude Code 最初只能在终端里使用。但程序员在写代码时更多时间待在 IDE 里,如果每次都要切换到终端去和 AI 对话,很不方便。

桥接系统(Bridge)就是为了解决这个问题——它让 Claude Code 可以在 IDE 里直接使用。

桥接的架构


┌─────────────────────────────────────────────┐
│                 IDE (VS Code)                │
│                                              │
│  ┌──────────────┐    ┌──────────────────┐   │
│  │ 代码编辑器    │    │ Claude Code 面板  │   │
│  │              │    │                   │   │
│  │  你的代码    │    │  与 AI 的对话     │   │
│  │  在这里      │    │  在这里           │   │
│  │              │    │                   │   │
│  └──────────────┘    └─────────┬─────────┘   │
│                                │              │
└────────────────────────────────┼──────────────┘
                                 │
                     WebSocket / HTTP
                                 │
                    ┌────────────┴────────────┐
                    │  Claude Code 进程        │
                    │  (--bridge 模式)         │
                    │                          │
                    │  查询引擎                │
                    │  工具执行                │
                    │  权限管理                │
                    └──────────────────────────┘

IDE 扩展是"前端",Claude Code 进程是"后端"。它们之间通过 WebSocket 或 HTTP 通信。

桥接的启动流程


1. 用户在 VS Code 中打开 Claude Code 面板
    │
    ▼
2. IDE 扩展启动一个 Claude Code 子进程
   claude --bridge --session-id=abc123
    │
    ▼
3. 子进程进入桥接模式
   - 不启动终端 UI
   - 改为监听 WebSocket 连接
    │
    ▼
4. IDE 扩展通过 WebSocket 连接到子进程
    │
    ▼
5. 双向通信建立
   IDE → Claude Code: 用户消息、选中的代码、文件上下文
   Claude Code → IDE: AI 回复、文件修改、工具执行状态

JWT 认证

桥接通信需要安全认证——你不希望其他程序冒充 IDE 来控制 Claude Code。

Claude Code 使用 JWT(JSON Web Token)来认证:


IDE 扩展持有一个密钥
  ↓
用密钥签名一个 JWT
  ↓
每次请求都带上 JWT
  ↓
Claude Code 验证 JWT
  ↓
验证通过才处理请求

JWT 就像一个"门禁卡"——只有持有正确门禁卡的人才能进门。

IDE 与 Claude Code 的交互

发送当前文件上下文

当你在 IDE 中打开了一个文件并和 AI 对话时,IDE 会自动把文件信息发送给 Claude Code:


// IDE 扩展发送的上下文
{
  type: "context",
  activeFile: {
    path: "/Users/alice/project/src/app.ts",
    content: "...",
    language: "typescript",
    selection: {  // 用户选中的文本
      start: { line: 10, character: 0 },
      end: { line: 15, character: 20 },
      text: "const result = fetchData()"
    }
  },
  openFiles: [
    "src/app.ts",
    "src/utils.ts",
    "package.json"
  ],
  diagnostics: [  // 编辑器检测到的问题
    { line: 12, message: "Type 'string' is not assignable to type 'number'" }
  ]
}

这样 AI 就知道你正在看哪个文件、选中了哪段代码、有什么错误。

在 IDE 中显示差异

当 AI 修改了文件,修改会发送回 IDE,在编辑器里显示差异对比:


// Claude Code 发送给 IDE 的修改
{
  type: "fileEdit",
  path: "/Users/alice/project/src/app.ts",
  changes: [
    {
      range: { start: { line: 10 }, end: { line: 10 } },
      oldText: "const result = fetchData()",
      newText: "const result = await fetchData()"
    }
  ]
}

IDE 收到后,会在编辑器里高亮显示修改——你可以直接接受或拒绝每个修改。

导航到代码位置

AI 可以告诉 IDE "跳转到某个位置":


{
  type: "navigate",
  path: "src/utils.ts",
  line: 42,
  character: 10
}

IDE 收到后,会自动打开文件并跳到指定位置。

多会话支持

一个 IDE 窗口可以同时运行多个 Claude Code 会话:


VS Code
├── 会话 1: 正在帮你修复 bug(src/app.ts)
├── 会话 2: 正在帮你写测试(test/app.test.ts)
└── 会话 3: 正在帮你审查 PR #123

每个会话是一个独立的 Claude Code 进程,有自己的上下文和对话历史。

桥接的好处

1. 无缝集成

不需要在 IDE 和终端之间切换。代码和 AI 对话在同一个窗口里。

2. 丰富的上下文

IDE 可以提供比终端更丰富的上下文:当前文件、选中文本、编辑器诊断、打开的文件列表等。

3. 直观的代码修改

在 IDE 里直接看到差异对比,可以逐行接受或拒绝。比终端里的文本差异更直观。

4. 代码导航

AI 可以直接控制 IDE 打开文件、跳转到特定行。在终端里这是做不到的。

本章小结

  • - 桥接系统让 Claude Code 在 IDE 中运行
  • - 架构:IDE 扩展(前端)← WebSocket → Claude Code 进程(后端)
  • - JWT 认证确保通信安全
  • - IDE 提供丰富上下文:当前文件、选中文本、诊断信息
  • - 支持在 IDE 中直接显示差异对比、代码导航
  • - 支持多会话并行

前后端分离的经典模式

IDE 桥接系统是前后端分离模式的经典案例。


传统方式(一体化):
  [所有功能集中在一个程序里]
  → 改界面需要重新部署整个程序
  → 不能有多种界面

前后端分离:
  [前端: IDE 扩展]  ←→  [后端: Claude Code]
  → 换一个前端(从 VS Code 换到 JetBrains)不影响后端
  → 可以同时有终端界面、IDE 界面、Web 界面
  → 每个部分可以独立开发和更新

你可能在 Web 开发中也会遇到这种模式:

  • - 前端:网页界面(React, Vue 等)
  • - 后端:服务器逻辑(Node.js, Python 等)
  • - 通信:HTTP API / WebSocket

Claude Code 的桥接系统和 Web 开发的前后端分离本质上是同一种架构模式——只不过"前端"从浏览器变成了 IDE 扩展。

下一章,我们将了解插件和技能系统——让 Claude Code 无限扩展。


本书由 everettjf 使用 Claude Code 分析泄露源码编写 | 保留出处即可自由转载