关于 Make CoPilot an Interactive Programmer
Make CoPilot an Interactive Programmer 是一个 VS Code 扩展,为 Copilot、Cursor 等 AI 编码 Agent 提供 Calva 的 Clojure 工具,也可作为 MCP 服务使用。它面向使用 Clojure 的开发者,支持在 REPL 中求值与结构化编辑。
主要功能
- 01在 Calva 已连接的 REPL 中求值代码
- 02结构化创建与编辑 Clojure 文件
- 03括号平衡工具(基于 Parinfer)
- 04查询符号文档与 clojuredocs.org 信息
- 05以资源形式提供技能说明
适用场景
- 01让 Agent 在 REPL 中调查实现方案
- 02批量修改 Clojure 顶层表达式
- 03查询 Clojure 核心函数的文档与示例
MCP 相关
该项目可作为 MCP 服务运行,把 Calva 的求值、编辑、文档查询等工具和技能资源暴露给 MCP 客户端;其他 AI 工具需要按项目进行配置。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
在 VS Code 中启用原生 AI 交互式编程
面向 VS Code Agent 框架的 Clojure 工具。(例如 Copilot 和 Cursor。)
Backseat Driver 通过以下方式,让 VS Code AI 框架使用 Calva 的 Clojure 工具:
- Copilot:零配置。(使用 VS Code LM Tools。)
- Cursor:零配置。(使用 Cursor add-MCP-server API)。
- 其他 AI 框架:MCP(需要为每个项目进行一些配置)。
功能
- 工具:评估代码 可随时访问 Clojure REPL 以评估代码。Calva 中所有活动的 REPL 会话均可供选择(使用 shadow-cljs 时,还包括构建和运行时)。
- 工具:编辑 Clojure 文件 以结构化方式创建和编辑文件,并支持批量操作。包括:
- 创建 Clojure 文件 创建 Clojure 文件并自动平衡括号
- 追加代码 向 Clojure 文件追加代码并自动平衡括号
- 替换顶层形式 结构化编辑,包括格式化、括号平衡和 lint 检查
- 插入顶层形式 结构化编辑,包括格式化、括号平衡和 lint 检查
- 工具:括号平衡器 帮助模型正确处理括号平衡(由 Parinfer 提供支持)
- 工具:加载文件 通过 Calva 已连接的 REPL 加载/评估整个 Clojure 文件
- 工具:符号信息查询,AI 可以查询感兴趣的符号,并获取文档字符串、参数信息等
- 工具:clojuredocs.org 查询,获取 Clojure 核心相关符号的文档、示例和另请参阅信息
- 资源:符号信息查询,(有些实验性)与工具相同
- 资源:clojuredocs.org 查询,(有些实验性)与工具相同
- 资源:技能,可通过
resources/list发现,并通过resources/read读取的专门指令
请注意,编辑工具没有用于审查修改内容的 UI。建议使用源代码管理工具和 VS Code 的 时间线视图来查看。
Agent 指南:充分利用 Backseat Driver
Backseat Driver 为 AI Agent 提供 Clojure 交互式编程工具,以及使用这些工具的技能。为了让你能够掌控 Agent 如何处理 Clojure 和 REPL,该扩展不会提供太多有关 Clojure 知识、理念或 REPL 方法论的内容。
要让 Agent 真正高效地处理 Clojure 工作,它需要了解你偏好的 Clojure 编写方式,以及如何有效使用 REPL。
为避免从一张白纸开始,让糟糕的训练数据和对 Clojure 的幻觉毁掉一切,可以考虑安装 clojure 插件,以及 Awesome Backseat Driver 仓库中的其他插件。
说明
Awesome Backseat Driver 目前提供 Copilot 和 Cursor 插件。不过,如果你使用其他框架,仍然可以从中复制技能、自定义 Agent 等内容。(也可以让你的 Agent 帮你完成。)
配置 Backseat Driver
评估结果大小限制
为防止大型 REPL 评估结果占满 Agent 的上下文窗口,Backseat Driver 会自动限制返回结果的大小:
calva-backseat-driver.evaluation.maxLength(默认值为25)——集合中显示的最大项数。设为0可关闭长度限制。calva-backseat-driver.evaluation.maxDepth(默认值为7)——最大嵌套深度;更深的结构会被替换为##。设为0可关闭深度限制。
技能
Backseat Driver 为 AI Agent 提供两项技能:
calva-backseat-driver.provideBdSkill(默认值为true)——向 Agent 提供 Backseat Driver 技能calva-backseat-driver.provideEditSkill(默认值为true)——向 Agent 提供 Clojure 结构化编辑技能
编辑器配置
用于插入和替换顶层形式的结构化编辑工具会遵循 Backseat Driver 的两项编辑器设置:
calva-backseat-driver.editor.fuzzyLineTargetingPadding(默认值为2)——匹配目标文本时,AI 可以扫描请求行两侧的行数。大型重构期间,如果形式的位置会发生变化,请增大此值;设为0则进行精确的行定位。权衡取舍:值越大,对行位置变化的容忍度越高,但当 Agent 缓冲区副本已过期时,匹配到附近相似形式的风险也越高。calva-backseat-driver.editor.lineContextResponsePadding(默认值为10)——定位失败时,返回的故障排查片段中包含请求行两侧的行数。减小此值可缩短响应,增大此值则可提供更多上下文。权衡取舍:值越大,越能为 Agent 重试提供线索,但与发送精简片段相比,可能会额外消耗 token(或时间)。
MCP
参见:将 Backseat Driver 配置为 MCP 服务
入门
前提条件
- VS Code(或你喜欢的分支版本)
- Calva
- Calva Backseat Driver
- GitHub Copilot(或其他符合 MCP 规范的助手)
使用方法
- 教会 AI Clojure 和 REPL 使用规范,例如,参见:Agent 指令
- 将 Calva 连接到你的 Clojure/ClojureScript 项目
- 让 Copilot 帮你处理事情。当你说“请使用 REPL 调查……”时,它就会明白你的意思。
- 它会知道如何找到正确的 REPL 会话以及如何使用它。
- 配置 Calva 使用终端输出 REPL 内容,并监视输出终端,查看它在 REPL 中尝试了什么
它与子 Agent 配合得很好,也支持并行子 Agent。可以试试这样:
- “请安排三个并行子 Agent 使用 REPL 调查如何实现……”
- REPL 输出会显示你和 Agent 分别在 REPL 中尝试了什么。
- 你也可以参与 REPL 活动。
WIP
和大家一样,我也在学习如何使用 AI,并逐步摸索。与此同时,整个领域的发展速度远超我的学习速度。Backseat Driver 是我尽最大努力为 Clojure 开发者提供的强大 AI 工具,开箱即用,无需配置。
事实证明,Backseat Driver 的基本设计长期以来一直有效且实用。但我也在不断改进它,融入新学到的东西。其中很多经验都来自用户。
请务必告诉我你使用 Backseat Driver 的体验,以及你希望看到哪些功能。🙏
贡献
欢迎贡献!无论是 Issue、PR 还是其他形式都可以。在提交 PR 之前,希望你先创建一个 Issue,说明要解决的问题。你也可以在开始着手处理之前,先联系我讨论该问题。
许可证 🍻🗽
欢迎赞助我的开源工作 ♥️
欢迎通过此链接支持我的工作:
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。