项目简介

Calva Backseat Driver 是一个 VS Code 扩展,专为 Calva (VS Code 的 Clojure/ClojureScript 扩展) 设计。它作为一个 MCP (Model Context Protocol) 服务器运行,允许兼容的 AI 客户端(如 AI 编程助手)与你的 Clojure REPL 交互。通过这种方式,AI 不仅仅是生成代码,还能在真实的运行环境中执行代码、查询符号信息,从而实现更深入、更准确的交互式编程辅助。

主要功能点

该扩展作为 MCP 服务器,目前提供以下主要功能:

  • 代码求值 (Evaluate Code):允许 AI 在连接的 Clojure REPL 中执行代码并获取结果。此功能默认关闭,需要用户在设置中明确启用,以保障安全。
  • 符号信息查询 (Symbol info lookup):AI 可以查询 Clojure 符号的详细信息,包括文档字符串、参数签名等。
  • clojuredocs.org 查询 (clojuredocs.org lookup):AI 可以从 clojuredocs.org 查询 Clojure 核心符号的文档、示例和相关信息。
  • 资源访问 (Resources):提供类似符号信息和 clojuredocs 查询的数据资源访问能力(实验性)。

安装步骤

  1. 安装 VS Code
  2. 在 VS Code 扩展市场搜索并安装 Calva 扩展。
  3. 在 VS Code 扩展市场搜索并安装 Calva Backseat Driver 扩展。
  4. 你需要一个支持 MCP 协议的 AI 客户端,例如 RooCode。

服务器配置

Calva Backseat Driver 作为一个内置的 MCP 服务器运行。AI 客户端需要配置如何启动并连接到这个服务器。由于技术限制,服务器内部启动一个 Socket 服务器,然后通过一个 Node.js 脚本作为 Stdio 包装器,供 MCP 客户端连接。

通常,MCP 客户端会通过一个配置文件(例如 '.vscode/mcp.json')来定义服务器。对于 Calva Backseat Driver,你需要添加一个服务器配置,指定其类型、启动命令和参数。

  • 服务器名称 (server name): 建议使用 '"calva"' 或其他能标识该服务器的名称。
  • 类型 (type): 应设置为 'stdio' (标准输入/输出),这是客户端与服务器通信的方式。
  • 命令 (command): 应设置为 'node',因为服务器的启动脚本是通过 Node.js 运行的。
  • 参数 (args): 这是一个数组,包含传递给 'node' 命令的参数。通常包括:
    • 服务器启动脚本的路径。这个脚本位于 Calva Backseat Driver 扩展的安装目录下的 'dist/calva-backseat-driver.js'。配置时可以使用 VS Code 提供的占位符,例如 '${extensionInstallFolder:betterthantomorrow.calva-backseat-driver}/dist/calva-backseat-driver.js'。
    • 一个端口文件的路径。服务器会将其监听的端口写入这个文件,供 Stdio 包装器读取。这个文件通常位于工作区目录下的 '.calva/mcp-server/port'。配置时可以使用 '${workspaceFolder}/.calva/mcp-server/port'。

具体的配置格式和位置取决于你使用的 MCP 客户端。请参考你的 AI 客户端文档进行配置。

基本使用方法

  1. 在 VS Code 中打开一个 Clojure 项目。
  2. 使用 Calva 将其连接到 Clojure/ClojureScript REPL。
  3. 如果希望 AI 能够执行代码,请在 VS Code 设置中搜索 "Calva MCP" 并启用相关选项。
  4. 重要步骤: 需要手动启动 Calva Backseat Driver 的内部 Socket 服务器。在 VS Code 命令面板中找到并执行 "Calva Backseat Driver: Start the socket server" 命令。
  5. 使用你的 MCP 客户端启动配置好的 Calva MCP 服务器(通常在客户端的 UI 或通过特定命令触发)。这会启动 Stdio 包装器,连接到之前手动启动的 Socket 服务器。
  6. 现在,你的 AI 代理应该可以通过 MCP 协议访问 Calva Backseat Driver 提供的工具和资源,与你的 REPL 进行交互了。

信息

分类

开发者工具