为什么Whiteboard要vendoring Code OSS?一个AI时代的VS Code分叉设计决策
【免费下载链接】whiteboardopen-source canvas for thoughtful software design项目地址: https://gitcode.com/gh_mirrors/whiteboard36/whiteboard
Whiteboard 是一个开源的 AI 软件设计画布,让人类与 Claude Code、Codex 等编码代理在同一工作区里共同设计、审查代码。它的桌面端没有从零写编辑器,而是把 VS Code 的开源内核Code OSS 整体 vendor 进仓库,形成了一个面向 AI 时代的 VS Code 分叉。本文将从动机、做法到上游同步策略,拆解这个设计决策。
决策速览
| 维度 | Whiteboard 的选择 |
|---|---|
| 基线 | Code OSS(VS Code 开源内核) |
| 分叉方式 | 整仓 vendor,而非补丁维护 |
| 差异管理 | 全部登记在 UPSTREAM,可枚举可审计 |
| 许可证 | MIT(保留上游 MIT 许可与第三方声明) |
一、背景:AI 时代,编辑器变成了"审查台" 🧭
当 AI 代理承担大部分"写代码"工作后,人类打开文本编辑器的主要目的,变成了逐行审查 AI 提交的 diff。
Whiteboard 团队在 README.md 里把这一点说得很直白:既然现在大家都有了专门的 agent 工具和桌面应用,文本编辑器只剩"审查"这一核心职责,"might as well start off with the most successful open source editor out there as a baseline"——用目前最成功的开源编辑器当基线。
画布里的时序图、流程图、agent trace 引用都可以点击跳转到底层代码,跳过去之后你得到的是 VS Code 原生的快捷键与 LSP 支持(见 README.md 的 "Why does this exist?" 一节):
二、核心问题:为什么"整仓 vendor"而不是"打补丁"?
绝大多数 VS Code 分叉采用"上游 + 补丁集"的维护方式。Whiteboard 反其道而行,给出的理由有两条(README.md 的 "On vendoring Code OSS" 一节):
- 编码代理处理补丁很难:AI 在"一堆 diff 补丁 + 跨文件上下文"上工作时错误率更高;把完整源码平铺在仓库里,人和 agent 都能直接读、直接改。
- 上游大量代码与审查场景无关:团队估计目前 VS Code 代码库里约45% 与 Copilot 相关——一个专注代码审查的桌面端根本用不到它们。
一句话总结:vendor 整仓,让代码树保持"平的",对 AI 友好,也更容易删干净。
三、这份 VS Code 分叉具体做了什么?
所有"与上游的差异"都必须登记在 UPSTREAM 中,可以按三类来看:
3.1 锁定上游基线
分叉固定在上游提交8a7abeba,并打上序列化 tagcode-oss-upstream-8a7abeba(UPSTREAM)。刷新上游时,只需对比"tag 处的干净上游"与当前代码树。
3.2 大刀阔斧做减法
| 类别 | 内容 |
|---|---|
| vendor 时直接排除 | .github/、上游 CI 配置、extensions/copilot/(约占 45% 代码库)等 |
| 裁剪 18 个内置扩展 | emmet、grunt、gulp、notebook 渲染、github-authentication 等审查场景用不到的扩展 |
| 删除整个 Agents 窗口 | 605 个上游文件——分叉从不打开该窗口,却曾在每个打包构建里编译并分发它 |
3.3 把 Review 的代码收进一个目录
Whiteboard 自己的工作区代码统一放在 code-oss/src/vs/review/,与上游代码物理隔离;首次启动还会自动从本机的 VS Code 安装导入键位与用户设置(见 apps/review-desktop/README.md 的 "VS Code settings and keybindings" 一节)。
扩展生态同样"策展化":固定扩展目录、没有 Marketplace,每个 VSIX 的精确版本、目标平台、大小与 SHA-256 哈希都记录在 curated-extensions.manifest.mjs 中,安装前逐一把关。
四、如何持续跟上上游 VS Code?
vendoring 不等于"一次性拷贝后躺平"。团队的做法是定期监控上游、按 commit 精确 backport:
- 在 UPSTREAM 的 backport 清单里,可以看到 Electron 42.10.0 升级、安全加固,以及 2026 年 9 月 Microsoft 发布的十条安全通告中挑选应用的 4 个 CVE 修复——甚至逐条说明了"为什么这条不适用 / 为什么这条决定不修";
- 每次上游刷新后,
tag..HEAD的差异必须完全可枚举:每一个文件差异都要对应清单里的一条记录("Serialize the fork" 一节)。
这种纪律让"分叉漂移"始终处于可审计状态。
五、许可证与隐私:分叉也要守规矩
- Whiteboard 采用 MIT 协议;vendored 的 Code OSS 保留微软 MIT 许可与第三方声明,见 apps/review-desktop/LICENSE 与 UPSTREAM。
- 应用只针对本地 checkout 运行,匿名遥测不含代码、diff、提示词或模型输出,详见 docs/privacy.md 与 docs/telemetry.md。
六、三步本地跑起来 🚀
git clone https://gitcode.com/gh_mirrors/whiteboard36/whiteboard cd whiteboard pnpm install && pnpm dev需要提前安装 Node.js 24 与 pnpm 11(CONTRIBUTING.md 的 Setup 一节),开发构建可以与已安装的 Whiteboard 并存。完整的构建、打包与发布流程见 apps/review-desktop/README.md。
小结:AI 时代分叉开源项目的四条启示
- 选最强基线:审查代码这件事,Code OSS 是当之无愧的最佳起点;
- 对 AI 友好的代码组织:整仓 vendor 优于补丁堆叠,agent 可以直接读改源码;
- 差异可枚举:每一份有意分歧都登记在案,上游刷新永远可控;
- 做减法:删掉约 45% 用不到的 Copilot 相关代码,产品更轻、攻击面更小。
延伸阅读
- 产品理念与 vendoring 决策:README.md
- 桌面端构建与发布:apps/review-desktop/README.md
- AI 代理插件源码:packages/agent-plugins/
- 贡献指南:CONTRIBUTING.md
【免费下载链接】whiteboardopen-source canvas for thoughtful software design项目地址: https://gitcode.com/gh_mirrors/whiteboard36/whiteboard
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考