Files
metona-ollama-desktop/docs/BUILD.md
T
thzxx 24a5475a7f docs: 重构 README.md & 更新 docs 文件适配 v4.0.0
- README.md: 全面重写,反映实际项目状态(25工具、SQLite、ReAct、暖色主题)
- DEVELOPMENT.md: 更新技术栈(SQLite替代IndexedDB)、架构(ReAct)、工具数、UI规范
- CHANGELOG.md: v4.0.0条目补充UI主题改版说明
- BUILD.md: 新增v4.0.0构建日志
2026-04-17 13:59:44 +08:00

12 KiB
Raw Blame History

Windows 安装包构建指南

环境要求

  • Ubuntu 24.04 (amd64)
  • Node.js v22+
  • Wine 9.0+(用于 electron-builder 交叉编译)
  • i386 架构已启用(dpkg --add-architecture i386
  • p7zip-full(解压构建资源)

快速构建(3 步)

# 1. 克隆并安装依赖
git clone https://gitee.com/thzxx/metona-ollama-desktop.git
cd metona-ollama-desktop
git checkout metona-ollama-desktop-v4.0.0
npm config set registry https://registry.npmmirror.com
npm install

# 2. 恢复构建缓存(首次从镜像下载,后续使用本地缓存)
bash restore-build-cache.sh

# 3. 构建
ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ npm run dist

产出文件在 release/ 目录。

构建资源管理

构建需要以下资源(共 ~145MB),通过 restore-build-cache.sh 自动管理:

资源 大小 来源
Electron v33.4.11 win32-x64 110MB npmmirror
NSIS 3.0.4.1 7.8MB GitHub (ghfast.top 代理)
NSIS Resources 3.4.1 3.0MB GitHub (ghfast.top 代理)
winCodeSign 2.6.0 24MB GitHub (ghfast.top 代理)

工作原理

  • 首次运行:从镜像下载 → 自动缓存到 build-resources/~/.cache/
  • 后续运行:从 build-resources/ 复制到 ~/.cache/(秒级完成)
  • build-resources/.gitignore 中,不进 gitElectron 二进制 110MB 超 git 限制)

自定义镜像

GITHUB_PROXY=https://gh-proxy.com/ bash restore-build-cache.sh

详细步骤

1. 安装 Wine

dpkg --add-architecture i386
apt-get update
apt-get install -y wine wine32 p7zip-full

2. 安装 npm 依赖

npm config set registry https://registry.npmmirror.com
npm install

3. 恢复构建缓存

bash restore-build-cache.sh

首次会从镜像下载约 145MB 资源,后续构建只需秒级恢复。

4. 构建 Windows 安装包

ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ npm run dist

常用命令

npm start              # 开发运行
npm run pack           # 仅构建目录(不打包)
npm run dist:nsis      # 仅 NSIS 安装包
npm run dist           # NSIS 安装包

构建产物

文件 说明
release/Metona Ollama Setup X.X.X.exe NSIS 安装包(可选目录、创建快捷方式)

v3.2.0 起不再提供绿色便携版,仅保留 NSIS 安装包。

发布到 Gitee

创建 Release

TOKEN="your_access_token"
curl -X POST "https://gitee.com/api/v5/repos/thzxx/metona-ollama/releases?access_token=$TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"tag_name":"v3.2.0","name":"v3.2.0","body":"Release notes","target_commitish":"refactor/modular-architecture"}'

上传附件

TOKEN="your_access_token"
RELEASE_ID="600564"
curl -X POST "https://gitee.com/api/v5/repos/thzxx/metona-ollama/releases/$RELEASE_ID/attach_files?access_token=$TOKEN" \
  -H "Content-Type: multipart/form-data" -F "file=@release/Metona Ollama Setup 3.2.0.exe"

故障排查

问题 解决方案
apt 源超时(mirrors.cloud.aliyuncs.com 不可达) sed -i 's|mirrors.cloud.aliyuncs.com|archive.ubuntu.com|g' /etc/apt/sources.list && apt-get update
npm install 卡住无输出 终止后重试 npm install --prefer-offline,通常首次已装大部分包,二次秒完成
npmmirror 缺少 Electron 包(restore-build-cache.sh 失败,NoSuchKey npmmirror 可能未同步特定版本。跳过缓存脚本,直接 npm run distelectron-builder 会自动从 npmmirror 下载(ELECTRON_MIRROR 环境变量生效)
electron-builder 报错 "wine is required" Wine 是签名步骤的硬依赖,必须安装:dpkg --add-architecture i386 && apt-get update && apt-get install -y wine wine32
apt 源 i386 架构下载失败 先确保主源可用(切 archive.ubuntu.com),再 apt-get update,最后装 wine
Electron 下载超时 ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ 或直接用 npm run distelectron-builder 自动处理)
NSIS/winCodeSign 下载超时 GITHUB_PROXY=https://gh-proxy.com/ bash restore-build-cache.sh
winCodeSign 下载 EOF 错误(github.com 连接中断) 手动下载并缓存(见下方)
npm install 时 Electron "socket hang up" 设置 ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ 后重试
restore-build-cache.sh 因 Electron 失败导致后续缓存全部跳过 跳过脚本,手动下载缺失资源(见下方)
"symbol already declared" 检查 TS 文件中的重复 const/let 声明

手动下载构建缓存(逐项修复)

restore-build-cache.sh 部分失败时,可手动下载缺失资源:

GITHUB_PROXY="https://ghfast.top/"
GITHUB_ORIG="https://github.com/electron-userland/electron-builder-binaries/releases/download"
CACHE="$HOME/.cache/electron-builder"

# winCodeSign(构建签名步骤硬依赖)
mkdir -p "$CACHE/winCodeSign"
wget -O "/tmp/winCodeSign-2.6.0.7z" \
  "${GITHUB_PROXY}${GITHUB_ORIG}/winCodeSign-2.6.0/winCodeSign-2.6.0.7z"
cd "$CACHE/winCodeSign" && 7z x -y "/tmp/winCodeSign-2.6.0.7z" -o"winCodeSign-2.6.0"

# NSIS
mkdir -p "$CACHE/nsis"
wget -O "/tmp/nsis-3.0.4.1.7z" \
  "${GITHUB_PROXY}${GITHUB_ORIG}/nsis-3.0.4.1/nsis-3.0.4.1.7z"
cd "$CACHE/nsis" && 7z x -y "/tmp/nsis-3.0.4.1.7z" -o"nsis-3.0.4.1"

# NSIS Resources
wget -O "/tmp/nsis-resources-3.4.1.7z" \
  "${GITHUB_PROXY}${GITHUB_ORIG}/nsis-resources-3.4.1/nsis-resources-3.4.1.7z"
cd "$CACHE/nsis" && 7z x -y "/tmp/nsis-resources-3.4.1.7z" -o"nsis-resources-3.4.1"

# 清理临时文件
rm -f /tmp/winCodeSign-2.6.0.7z /tmp/nsis-3.0.4.1.7z /tmp/nsis-resources-3.4.1.7z

Electron 无需手动下载——设置 ELECTRON_MIRROR 后 electron-builder 会自动处理。

⚠️ 已知问题:npmmirror 与 restore-build-cache.sh 兼容性

restore-build-cache.sh 第一步从 npmmirror 下载 Electron zip 时可能遇到 NoSuchKey 错误,因为 npmmirror 未同步该版本。此时脚本会因 set -e 直接退出,后续 NSIS/winCodeSign 缓存也不会恢复。

推荐做法:跳过 restore-build-cache.sh,直接执行:

ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ npm run dist

electron-builder 会自动处理所有依赖下载(Electron、NSIS、winCodeSign),虽然首次较慢(~5分钟),但无需手动管理缓存。

构建日志

v4.0.02026-04-17 — metona-ollama-desktop 仓库

  • 📦 SQLite (better-sqlite3) 替代 IndexedDB6 张表 + FTS5 全文搜索
  • 🔧 Agent Loop 升级为 ReAct 模式(15 轮,10 分钟超时,执行轨迹记录)
  • 🧠 新增 4 个记忆/会话管理工具(memory_search, memory_add, session_list, session_read
  • 🎨 UI 主题改版:暗色 Fluent → 暖色调亮色(奶白 + 珊瑚橙)
  • 新增 context-manager.ts 上下文管理服务
  • 📝 版本号更新至 4.0.0package.json / package-lock.json / index.html / README.md / CHANGELOG.md / BUILD.md / DEVELOPMENT.md

v3.3.42026-04-17 — metona-ollama-desktop 仓库

  • 🔧 修复 Agent Loop 工具调用重复问题(缓存 + 同轮/跨轮去重 + 自动终止)
  • 🔧 修复 web_fetch 默认截断 10000 字符(改为默认不截断)
  • 🔧 修复记忆系统 rule/preference 类型不生效(改为始终注入,不依赖关键词匹配)
  • 🔧 修复 buildMemoryContext 三类记忆措辞无区分(规则→强制、偏好→建议、事实→参考)
  • 🔧 移除 tool-registry.ts executeTool 中重复的 logToolStart 调用
  • 📝 版本号更新至 3.3.4

v3.3.32026-04-17 — metona-ollama-desktop 仓库

  • 🔧 修复工具面板中除 run_command 外所有工具错误显示为"需确认"
  • 🔧 修复 run_command 执行模式下拉框未选中项白字白底不可见
  • 🎨 加宽工具面板、历史记录、设置面板、帮助面板
  • 增强联网搜索与网页抓取联动(TOOL_USAGE_GUIDE 新增规则)
  • 增强 AI 主动调用工具的 prompt 指导(新增第 7 条规则)
  • web_search 默认结果数 5 → 15
  • 📝 版本号更新至 3.3.3

v3.3.22026-04-16 — metona-ollama-desktop 仓库

  • 新增 web_search 联网搜索工具(DuckDuckGo + Bing 双引擎,21 个工具)
  • 🔧 除 run_command 外所有工具改为自动执行无需确认
  • 🔧 run_command 改为下拉框设置:自动/需确认/禁用三种模式
  • 📝 版本号更新至 3.3.2package.json / index.html / README.md / CHANGELOG.md / BUILD.md
  • 📝 同步更新 README.md 安全说明、DEVELOPMENT.md 开发规范、index.html 帮助面板

v3.3.12026-04-16 — metona-ollama-desktop 仓库

  • 🔧 修复开启工具调用后图片无法传给 AIagent-engine.ts + input-area.ts
  • 🔧 修复记忆系统弹框自动记忆开关点击无响应(memory-modal.ts CSS 类名修正)
  • 🎨 统一应用图标为科技感羊驼(llama.png / llama.ico
  • 📝 版本号更新至 3.3.1package.json / index.html / README.md / CHANGELOG.md / BUILD.md

v3.2.62026-04-15 — metona-ollama-desktop 仓库

  • Metona Ollama Setup 3.2.6.exe78MB
  • Gitee Release v3.2.6-desktopID: 604992
  • 🔧 工作空间面板从 position:fixed 改为 flex 子元素,修复与主内容区错位
  • 🎨 Token 统计颜色优化(琥珀色图标+数值,消息内 token 高亮)
  • ⚠️ 构建问题及处理:
    1. restore-build-cache.sh npmmirror NoSuchKey → 跳过,electron-builder 自动下载
    2. nsis-resources-3.4.1 GitHub 下载 EOF → 使用 ghfast.top 代理手动下载缓存
    3. 无编译错误,手动缓存后构建一次通过

v3.2.52026-04-14 — metona-ollama-desktop 仓库

  • Metona Ollama Setup 3.2.5.exe78MB
  • Gitee Release v3.2.5-desktopID: 601311
  • 🔧 工具相对路径修复、工作空间单一终端重构、token SVG 图标、base64 编码修复
  • ⚠️ 构建问题及处理:
    1. apt 源 mirrors.cloud.aliyuncs.com 不可达 → 切换 archive.ubuntu.com
    2. restore-build-cache.sh npmmirror NoSuchKey → 跳过,electron-builder 自动下载
    3. 无编译错误,构建一次通过

v3.2.42026-04-08 — metona-ollama-desktop 仓库

  • 🔧 AI 命令执行走工作空间终端,实时流式显示
  • 🔧 设置面板修改地址后同步更新顶部导航连接状态
  • 分支 metona-ollama-desktop-v3.2.4 已创建并推送

v3.2.32026-04-08 — metona-ollama-desktop 仓库

  • 工作空间面板改为常驻显示,固定宽度 480px
  • 修复 tool-registry.ts 缺少 logInfo 导入导致 run_command 异常
  • Gitee Release v3.2.3-desktop(仓库 thzxx/metona-ollama-desktop
  • 分支 metona-ollama-desktop-v3.2.3 已创建并推送

v3.2.22026-04-08 — metona-ollama-desktop 仓库

  • Metona Ollama Setup 3.2.2.exe78MB
  • Gitee Release v3.2.2-desktopID: 600992,仓库 thzxx/metona-ollama-desktop
  • 分支 metona-ollama-desktop-v3.2.2 已创建并推送
  • ⚠️ 构建问题及处理:
    1. apt 源 mirrors.cloud.aliyuncs.com 不可达 → 切换 archive.ubuntu.com
    2. npm install 时 Electron socket hang up → 设 ELECTRON_MIRROR 重试成功
    3. restore-build-cache.sh 第一步失败(npmmirror NoSuchKey)→ 跳过脚本
    4. electron-builder 直接构建时 winCodeSign 从 GitHub 下载 EOF → 使用 ghfast.top 代理手动下载缓存
    5. 手动缓存 NSIS 和 NSIS Resources 后重新构建成功

v3.2.12026-04-07 — metona-ollama-desktop 仓库

  • Metona Ollama Setup 3.2.1.exe78MB
  • Gitee Release v3.2.1-desktopID: 600984,仓库 thzxx/metona-ollama-desktop
  • ♻️ 移除便携版构建,仅保留 NSIS 安装包

v3.2.02026-04-07 — metona-ollama-desktop 仓库

  • Metona Ollama Setup 3.2.0.exe78MB
  • MetonaOllama-Portable-3.2.0.exe78MB
  • Gitee Release v3.2.0-desktopID: 600739,仓库 thzxx/metona-ollama-desktop
  • ⚠️ 构建中遇到问题:npmmirror 缺 electron zip、npm install 卡顿、需安装 Wine。详见上方故障排查。

v3.0.02026-04-06

  • Metona Ollama Setup 3.0.0.exe78MB
  • MetonaOllama-Portable-3.0.0.exe78MB
  • Gitee Release v3.0.0ID: 600370

提速清单

环节 默认 → 加速 效果
apt 源 aliyuncs → archive.ubuntu.com 稳定
npm npmjs → npmmirror ~17s
Electron github → npmmirror ~3s
NSIS/winCodeSign github → ghfast + 本地缓存 秒级