Skip to content

Repository files navigation

AllOnePlus

appicon

自研引擎的多语言运行时管理器。

AllOnePlus 的目标,是为你提供一套轻松配置、管理多语言开发环境依赖的方案。项目最初借鉴了 vfox 引擎的设计,但在实践中遇到了诸多限制,于是我们重新设计并实现了一套完全开源的自研引擎,移除了对 vfox 的一切依赖,同时也始终感谢 vfox 所提出的理念。

经过多次迭代,本软件终于完成了从零到一的引擎架构。起初自制引擎时遇到过不少困难,但随着一次次打磨,新引擎的优势也愈发清晰。

清枫引擎 Open QF

AllOnePlus 内置自研安装引擎「清枫引擎 Open QF」:每个受支持的运行时都由一份清单配方描述——版本从哪列、安装包从哪下、如何校验与接入,总目录把各语言下的运行时体系组织在一起。

版本列表、下载、安装、版本切换与环境变量计算全部由内置引擎完成,不依赖任何外部命令行工具。

下载配方优先走各运行时的官方分发渠道;内置 GitHub 镜像预设,供无法直连 github.com 的网络使用。

它能做什么

  • 极简配置:装好即用,多版本隔离开箱可得。不再依赖转发式 shim,而是把运行时的 bin 目录直接注入 PATH 与环境变量。
  • 轻松切换版本,随时更换安装源。
  • 本地检验与问题排查:一键看清每条 SDK 命令的解析结果、生效版本与归属。
  • 严格的安全机制:任何一次操作出错,都能完整清空、回滚、擦除,不留下一丝痕迹。

当前支持的语言 / 体系(14 语言 / 19 体系)

语言 体系
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.jsondownload.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,可直接双击运行。

构建注意事项(safe-delete 守卫)

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

CLI 用法

# 列全部语言 -> 体系 -> 组件
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)。

作者

清枫不识客

许可证

Apache License 2.0

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages