Void 编辑器 AI 功能开发入门:4 步写出你的第一个 AI 扩展
【免费下载链接】void开源AI代码编辑器,Cursor的替代方案。项目地址: https://gitcode.com/GitHub_Trending/void2/void
开源 AI 代码编辑器 Void 是 Cursor 的替代方案,它的 AI 功能开发源码全部开放。本文按动手视角拆解 4 步:跑通构建、找到 AI 模块、写出第一个扩展、验证效果。
跑起来 Void 开发环境:克隆仓库并装好依赖
Void 是 VS Code 的 fork,构建体系沿用 gulp + npm,不用学新工具链。克隆下来装依赖,就能进入开发循环:
git clone https://gitcode.com/GitHub_Trending/void2/void cd void npm install装完后用npm run watch挂起监听编译,它会持续编译主进程与内置扩展。首次构建耗时较长,建议等它编译完成再动手改代码,避免读到半成品产物。
AI 能力长在哪:锁定 contrib/void 模块
AI 功能的主逻辑集中在 src/vs/workbench/contrib/void/。contrib 是工作台的功能分区方式,一个模块管一个领域,AI 是其中一个。
这里能直接看到核心能力:chatThreadService.ts管对话线程,autocompleteService.ts负责行内补全,editCodeService.ts执行按指令改代码的流程,contextGatheringService.ts收集光标周边上下文。落到代码上更关键的是依赖清单——顶层package.json直接依赖openai、ollama、@anthropic-ai/sdk与@modelcontextprotocol/sdk,说明它同时支持多家云端模型、Ollama 本地模型,并可通过 MCP 扩展工具调用。你的新功能大概率要接的就是这套通道。
写第一个扩展:把 references-view 当模板
新人不必直接改 contrib,Void 扩展开发最稳的入口是 extensions/ 目录,每个子目录就是一个自包含扩展。extensions/references-view/ 是个好模板:它监听语言服务事件,把用户选中符号的引用整理成树状视图。语言服务可以理解为按语言做解析、查符号的那层服务,它是大多数 AI 功能的数据源。
扩展的最小骨架
一个扩展必须有两样东西:package.json里声明贡献点与main入口,以及入口文件导出的activate函数。注意扩展不跑在编辑器主进程里,它被加载到独立的"扩展宿主"进程,通过 API 与界面通信——这层隔离决定了你写扩展不会直接污染工作台。
让扩展干点智能的事
最短路径是注册一个命令:在contributes.commands声明命令,在activate里用vscode.commands.registerCommand拿到当前文件内容,交给模型处理。调模型的写法可直接参考contrib/void里对各家 SDK 的封装,流式输出和错误重试都已处理好,照抄模式即可。
给 AI 功能加配置项:接入设置系统
功能能跑之后,用户会想换模型、调参数。扩展只需在package.json声明configuration贡献点,设置面板会自动生成对应界面,无需手写表单。设置系统的底座在 src/vs/platform/configuration/,而 AI 侧的voidSettingsService.ts展示了按 key 读写配置的完整姿势,你的扩展可以复用同样的模式。
写完怎么验证:用开发模式跑通并看日志
验证顺序建议是:启动开发构建(./scripts/code.sh)→ 在编辑器里执行你的命令 → 看扩展宿主终端有没有报错。别只确认"界面打开了",要确认数据真的到了模型、响应真的渲染出来了;语言相关扩展再切到输出面板确认请求到达了语言服务。
📋 常见卡点速查:
| 现象 | 先查哪里 |
|---|---|
| 编译完但编辑器起不来 | npm run watch是否编译完成,产物目录是否生成 |
| 扩展命令不出现 | package.json的main路径、activate是否正确导出 |
| AI 请求返回空或报错 | 模型密钥是否配置、Ollama 本地服务是否在运行 |
回到最初的问题:Void 的 AI 能力长在contrib/void,新功能从 extensions/ 目录起步最稳,验证靠开发模式加读日志。把这条链路完整走一遍,你就具备继续深入的基础。
【免费下载链接】void开源AI代码编辑器,Cursor的替代方案。项目地址: https://gitcode.com/GitHub_Trending/void2/void
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考