自研引擎的多语言运行时管理器。
AllOnePlus 的目标,是为你提供一套轻松配置、管理多语言开发环境依赖的方案。项目最初借鉴了 vfox 引擎的设计,但在实践中遇到了诸多限制,于是我们重新设计并实现了一套完全开源的自研引擎,移除了对 vfox 的一切依赖,同时也始终感谢 vfox 所提出的理念。
经过多次迭代,本软件终于完成了从零到一的引擎架构。起初自制引擎时遇到过不少困难,但随着一次次打磨,新引擎的优势也愈发清晰。
AllOnePlus 内置自研安装引擎「清枫引擎 Open QF」:每个受支持的运行时都由一份清单配方描述——版本从哪列、安装包从哪下、如何校验与接入,总目录把各语言下的运行时体系组织在一起。
版本列表、下载、安装、版本切换与环境变量计算全部由内置引擎完成,不依赖任何外部命令行工具。
下载配方优先走各运行时的官方分发渠道;内置 GitHub 镜像预设,供无法直连 github.com 的网络使用。
- 极简配置:装好即用,多版本隔离开箱可得。不再依赖转发式 shim,而是把运行时的 bin 目录直接注入 PATH 与环境变量。
- 轻松切换版本,随时更换安装源。
- 本地检验与问题排查:一键看清每条 SDK 命令的解析结果、生效版本与归属。
- 严格的安全机制:任何一次操作出错,都能完整清空、回滚、擦除,不留下一丝痕迹。
| 语言 | 体系 |
|---|---|
| python | cpython, pypy |
| cpp | gcc, clang |
| java | openjdk (Liberica Full + 内置 JavaFX) |
| nodejs | node, deno, bun |
| go | official |
| rust | official |
| csharp | dotnet |
| zig | official |
| php | official |
| ruby | mri |
| kotlin | jvm |
| scala | scala2, scala3 |
| dart | official |
| lua | official |
AllOnePlus/
internal/engine/ 引擎核心(HTTP/代理/镜像/版本枚举/下载安装/校验/登记)
internal/app/ 业务门面(Wails 绑定方法)
internal/model/ 数据模型
internal/storage/ JSON 存储
internal/pathutil/ 路径工具
frontend/ Vue3 + Vite 前端
catalog/ 总目录 index.json 的加载与查找
cmd/pathprobe/ PATH 诊断小工具
index.json 语言 -> 体系 -> 组件 的总目录
build/bin/ 构建产物(AllOnePlus.exe)
运行时数据落在安装目录下的 .store/:registry.json / settings.json / cache / sdks / tmp。
每个体系的安装配方由对应的独立仓库维护,核心文件是 manifest.json,描述:
- 版本来源(GitHub Release / JSON 索引 / URL 模板)
- 下载地址与归档类型(zip / tar.gz / tar.xz / 7z / exe / msi)
requiredPaths:安装后必须存在的文件,缺则回滚postInstall:附属组件(如 go 的 delve、php 的 composer、lua 的 luarocks、scala 的 sbt)- 环境变量与 PATH 注入规则
manifest.json 的 download.sources 只写镜像地址时,缺失的字段(type / stripTopDir / binSubdir / installArgs / assetPattern / repo / urlTemplate)会自动从顶层 download 继承。
工具链:
- Go 1.27+
- Wails CLI v2.15.0
- Node.js / npm(前端依赖已在
frontend/node_modules)
cd AllOnePlus
# 出成品(绿色可运行 exe)
wails build -clean产出:build/bin/AllOnePlus.exe,可直接双击运行。
WorkBuddy 的 safe-delete 守卫会拦截 vite 自动清空 frontend/dist。因此 frontend/vite.config.ts 已设 build.emptyOutDir: false。每次 wails build -clean 前需手动清理 dist 里的旧文件,否则 vite 试图覆盖旧文件时会报:
EPERM: operation not permitted, open 'frontend/dist/index.html'
正确做法:
cd AllOnePlus/frontend/dist
rm -rf index.html assets icons # 保留 .gitkeep然后再跑 wails build -clean。
# 列全部语言 -> 体系 -> 组件
go run . tree
# 探测某体系
go run . detect python/cpython
go run . detect nodejs/node
# 安装某版本
go run . install python/cpython 3.14.7
# 使用某版本
go run . use python/cpython 3.14.7
# PATH 诊断
go run ./cmd/pathprobe- PATH 直注:切版本时把运行时的
bin目录直接写入用户 / 系统 PATH 与环境变量,不使用转发 shim;PATH 条目随版本切换同步改写,可逆。 - 假安装防护:
engine.Install()顺序为下载 → 解压 → postInstall → 校验(requiredPaths) → 登记。任一失败都会os.RemoveAll清理残留,绝不写 registry。 - 代理:优先读取本工具设置 → 自动读取 Windows 系统代理(注册表)→ 直连。GitHub 系域名与 googleapis 强制直连,避免共享出口触发限流。
- 缓存:API 响应缓存到
.store/cache/<sha1>.json(TTL 30min),网络失败时回退陈旧缓存。
后端 Go 与 Wails v2,前端 Vue 3 与 Vite,界面基于 WebView2 渲染。核心是一套自研的清单驱动引擎(清枫引擎 Open QF)。
清枫不识客