📌 项目地址:voideditor/void | ⭐ 28,796 颗星 | 🔧 TypeScript | 📜 Apache-2.0
仓库作者自己说得很直接: Void is deprecated 。不更新,不收PR,项目停了。但紧接着的这句话,才是这个仓库真正的价值所在:“Void remains open source and is still one of the best references to use when forking VS Code。”
对普通用户来说,这个项目死了。对想自己fork VS Code做产品的开发者来说,它是目前最完整的开源教学样板。
Void到底是什么
Void是VS Code的一个fork。不是那种改改主题色的fork,而是真正动了核心的fork。
它做的事情包括:把React塞进VS Code的UI体系、重写AI服务支持流式输出、把微软闭源的构建流程用GitHub Action重做一遍。所有这些改动的代码,全部公开。
这是原文自己做的定位:“Void is a fork of the vscode repository。”
三个最难的地方,Void给出了可运行的代码
fork VS Code最头疼的三件事:侵入式UI修改、跨平台签名打包、AI功能的集成。这三块在微软官方都是闭源的,或者文档缺失严重。
Void全部做了,代码都在。
1. React + Tailwind集成
VS Code的原生UI框架用的是一个自定义的DOM渲染器,不支持React。你要在编辑器里挂一个React组件,第一关是内容安全策略(CSP)会直接拦截脚本执行。第二关是Tailwind的全局样式会把编辑器原生UI冲垮。
Void的解法是两步走:
- 修改VS Code的构建流水线,加入React编译步骤
- 用scope-tailwind把Tailwind样式限定到独立作用域
原文写得明确:“We mount React + Tailwind. This is not possible in plain VS Code, and required extending the build pipeline to compile React and scope Tailwind ourselves。”
这套方案的结果是,你可以在VS Code编辑器内嵌入React组件,比如AI聊天侧面板、自定义设置面板、或是任何你想用React写的界面。Tailwind样式不会污染编辑器原生UI,原生UI也不会覆盖你的样式。
2. CI打包脚本直接复制
VS Code的打包、签名、自动更新是微软内部的私有逻辑。你fork出来之后,没有现成的工具链。
Void把整套GitHub Actions workflow公开了,覆盖Windows(.exe签名)、macOS(Developer ID签名)、Linux(.deb/.rpm打包),更新机制基于GitHub Releases。
原文说:“You can copy our GitHub Actions to package, sign, and auto-update Void. VS Code’s build pipeline is private, so this is normally very hard。”
我评估一下:如果你从零开始自己写这套CI,需要在本地搭建签名环境、研究Electron-builder的配置、调试自动更新的发布流程,至少两个月。Void的脚本参数化做得不错,你fork仓库后,改应用名和签名证书路径就能跑通。
3. AI服务从零写
Void的AI功能不是套个OpenAI API完事。它做了两件底层的事:
EditCodeService:允许AI输出逐token流式写入编辑器。用户看到的效果是代码一行一行在屏幕上滚动生成,不是一次性粘贴全文。这个在实现上要求处理编辑器缓冲区的差异合并、保证光标位置不失控。
VoidModelService:后台编辑文件,自动同步操作系统文件系统和编辑器文本缓冲区。AI改完内容后,编辑器立刻更新,用户不需要手动点”保存”。
原文说:“We expose grammars for common “tags, tool tags, etc. Feel free to reference our architecture for using IPC and satisfying CSP。”
两个服务都通过VS Code的IPC通道通信,绕开了CSP对WebSocket和fetch的限制。如果你在做AI驱动编辑器,这两套服务的IPC设计可以直接参考。消息通道怎么设计、前后台数据怎么同步、CSP白名单怎么配,代码都在。
怎么用这个仓库
项目结构是这样的:
- VOID_CODEBASE_GUIDE.md:目录结构和核心模块说明
- HOW_TO_CONTRIBUTE.md:编译和开发指南
- void-builder(独立仓库):构建工具链
步骤:
- 先看Releases页面下载旧版二进制,跑一遍体验效果
- 读VOID_CODEBASE_GUIDE.md,理解代码结构
- 想自己编译,看HOW_TO_CONTRIBUTE.md和void-builder
- 遇到问题去Discord问,或者发邮件到hello@voideditor.com
另外,项目组维护了一个Void Forks列表,里面是社区基于Void做的二次fork。如果你想看别人怎么改的,那里是入口。
我的看法
Void的价值不在”用”,在”学”。
React集成、CI构建、AI服务,这三块是fork VS Code时最大的技术卡点。Void把每个卡点的解法和代码都交出来了。对任何想用VS Code做产品基座的团队,这是目前最完整的开源参考。
代码在,项目就没有真正死。