本文档说明 Undefined 当前仓库中的主要构建方式,包括:
- Python 包构建(
wheel/sdist) Undefined-webui管理控制台的本地开发与验证- 跨平台连接器
apps/undefined-console/的桌面端 / Android 构建 - GitHub Release 工作流的发布矩阵
约定:
- 浏览器版管理入口仍然是
uv run Undefined-webui- 桌面端 / Android App 是额外的连接器 / 容器,不替代
Undefined-webui- Release 工作流默认覆盖
Windows / macOS / Linux / Android,不包含iOS
- 推荐 Python:
3.12 - 支持范围:
3.11~3.13 - 推荐使用
uv
安装依赖:
uv sync --group dev -p 3.12
uv run playwright installrender.render_latex 使用系统外部 LaTeX(usetex=True)渲染公式,必须提前安装,否则渲染会失败并返回错误。
Debian / Ubuntu
sudo apt-get update
sudo apt-get install -y texlive-full dvipng ghostscriptArch Linux
sudo pacman -S --needed \
texlive-basic \
texlive-bin \
texlive-latex \
texlive-latexrecommended \
texlive-latexextra \
texlive-fontsrecommended \
texlive-binextra \
texlive-mathscience \
ghostscriptmacOS
# 推荐 MacTeX(完整,约 4 GB)
brew install --cask mactex-no-gui
# 或体积更小的 BasicTeX,之后按需补包
brew install --cask basictex
sudo tlmgr update --self
sudo tlmgr install dvipng type1cm type1ec cm-super collection-fontsrecommendedWindows
安装 MiKTeX(推荐,缺包时自动下载)或 TeX Live。安装完成后在 MiKTeX Console 里手动安装 dvipng 包,并确保 latex.exe 在 PATH 中。
验证
latex --version
dvipng --version若日志出现 type1ec.sty not found 或 latex was not able to process,TeX 包仍不完整:Debian / Ubuntu 已装 texlive-full 则无需额外操作;Arch 补装 texlive-latexextra texlive-fontsrecommended texlive-binextra;macOS BasicTeX 用户运行 sudo tlmgr install cm-super。
如果需要构建跨平台控制台,请额外准备:
- Node.js:建议
22 - Rust stable
- Tauri v2 所需系统依赖
- Android 构建时还需要 Java 17、Android SDK / NDK
构建发行包:
uv build仅构建 wheel:
uv build --wheel常用本地校验:
uv run ruff check .
uv run ruff format --check .
uv run mypy .
uv run pytest tests/如果你修改了 res/、img/、config.toml.example 等打包资源,建议额外检查 wheel 内容是否齐全。
推荐直接运行:
uv run Undefined-webui这条命令会启动管理控制台。推荐工作流:
- 启动
Undefined-webui - 在浏览器中打开 WebUI
- 若
config.toml缺失,先由 WebUI 自动生成模板 - 在 WebUI 中补齐配置、保存并校验
- 直接点击启动 Bot
当前仓库中的 WebUI 静态资源直接由 Python 后端托管,不需要额外执行前端打包命令。
如果你修改了:
src/Undefined/webui/templates/src/Undefined/webui/static/js/src/Undefined/webui/static/css/
建议至少运行:
uv run pytest tests/test_webui_management_api.py -q
uv run ruff check src/Undefined/webui当前 App 的职责不是维护一套长期独立的第二后台,而是:
- 保存连接档案
- 使用一个 IP/域名 + 两个端口录入方式管理实例
- 测试 Management / Runtime 入口
- 自动尝试登录后打开真正的远程 WebUI
- 退出 WebUI 后回到主界面
跨平台客户端位于:
apps/undefined-console/
cd apps/undefined-console
npm installnpm run devnpm run tauri:devnpm run tauri:build在部分较新的 Linux 发行版上,本地执行 npm run tauri:build 可能在 AppImage 阶段失败,常见表现是:
failed to run linuxdeploy- 或
strip无法处理.relr.dyn段
如果你本地遇到这个问题,可直接使用:
NO_STRIP=true npm run tauri:build或者使用仓库里补好的快捷脚本:
npm run tauri:build:no-strip如果你只想在本机先验证 Linux 安装包链路,也可以优先只打 deb:
npm run tauri:build:no-strip -- --bundles deb这个问题主要是本机 linuxdeploy / strip 工具链兼容性导致,不一定代表项目代码或 Tauri 配置有问题。
首次或 CI 环境中,先初始化 Android 项目:
npm run tauri:android:init构建 Android:
npm run tauri:android -- --apk当前仓库也保留了 debug APK 构建路径,便于在 CI 中稳定产出可安装 APK:
npm run tauri:android:debug -- --apk构建 Tauri 桌面端通常需要:
sudo apt-get update
sudo apt-get install -y \
libwebkit2gtk-4.1-dev \
libgtk-3-dev \
libayatana-appindicator3-dev \
librsvg2-dev \
patchelf- 可构建
.dmg - 如需签名 / notarization,需额外配置 Apple 证书与 secrets
- 当前 Release workflow 预留了后续接入空间
- 可构建
.exe/.msi - 若后续需要代码签名,可在 CI 中继续补证书配置
需要:
- Java 17
- Android SDK
- Android NDK
- Rust Android targets
CI 当前会优先保证每个 release 至少产出一个可安装 APK;如果后续接入正式签名,可再升级为签名 release APK / AAB。
仓库内已提供可版本化维护的 git hooks:
.githooks/pre-commit
.githooks/pre-tag
安装方式:
bash scripts/install_git_hooks.sh安装后:
pre-commit会继续执行 Python 的ruff + mypy- 当提交里包含
apps/undefined-console/、src/Undefined/webui/static/js/、biome.json、CI workflow 相关改动时,还会额外执行:Biome检查TypeScript类型检查cargo fmt --checkcargo check
说明:如果本机还没安装 App 依赖,需要先执行:
cd apps/undefined-console
npm install当前 tag 发布工作流位于:
.github/workflows/release.yml
触发条件:
- 推送 tag:
v*
工作流主要阶段:
verify-pythonruffmypypytestuv build
build-tauri-desktop- Linux:
.AppImage+.deb - Windows:
.exe+.msi - macOS x64:
.dmg - macOS arm64:
.dmg
- Linux:
build-tauri-android- Android 通用
.apk
- Android 通用
publish-release- 汇总所有产物并上传 GitHub Release
publish-pypi- 发布 Python 包到 PyPI
每次正式 Release 计划上传:
- Python
wheelsdist
- Windows
.exe.msi
- Linux
.AppImage.deb
- macOS
- Intel
.dmg - Apple Silicon
.dmg
- Intel
- Android
.apk
iOS 当前不在发布矩阵内。
如果你准备发布一个版本,建议本地先按以下顺序自检:
uv sync --group dev -p 3.12
uv run ruff check .
uv run ruff format --check .
uv run mypy .
uv run pytest tests/
uv build如果本次改动涉及 App:
cd apps/undefined-console
npm install
npm run check # 代码检查(lint + typecheck + cargo check)
# 注意:npm run tauri:build 会自动执行 npm run build,无需手动构建前端如果本次改动涉及 Android 构建链:
npm run tauri:android:init
npm run tauri:android:debug -- --apk- 日常开发和首次部署,优先验证
uv run Undefined-webui全流程是否顺畅。 - 改动管理接口时,优先补
tests/test_webui_management_api.py。 - 改动发布矩阵时,务必同步更新
README.md与本文件。 - 改动 App 构建脚本时,注意同时检查
apps/undefined-console/package.json与.github/workflows/release.yml。